Embeddable 3D Rendering Engine with JS, a POC project.

Overview

Three.V8

Three.V8 is a proof of concept (POC) of an embedabble 3D rendering engine using JavaScript as user script.

Currently, the whole project requires Visual Studio 2019 or later to be built, becuase:

  • V8 binary is acquired from NuGet
  • A C# WPF GUI is provided as an example of how to embed the engine.

The core of the code is designed to be portable, wherever V8 and OpenGL are available.

OpenGL is choosen as the underlying graphics API. One of the ultimate goal of the project is to make it possible to embed a 3D rendering engine directly into an open-source web browser like Chrome, hopefully to be compatible with the WebGL2 context of H5 Canvas.

An alternative is to run Three.js directly in an embedded V8 environment, replacing WebGL with OpenGL bindings. This project explores a different approach by implementing most of the engine using C++ and exposing the high-level objects. In this way, the performance sensitive tasks can be done more efficiently. It will also use the more modernized features of the native OpenGL rather than the GLES3 subset.

Subprojects

  • ThreeEngine: C++ 3D rendering engine.
  • Test.Cpp: Simple example using the C++ engine directly.
  • Three.V8: V8 bindings of the 3D rendering engine.
  • Test.V8: Simple example using the V8 engine.
  • Three.V8.CLR: C# bindings of the V8 engine (itself) and OpenGL.
  • GamePlayer: C# WPF GUI embedding the V8 engine.
  • game: Game script test code. The math library and other utilities are borrowed directly from Three.js. Most assets are from discoverthreejs.comand sketchfab.com.

Building

Building is straightforward using Visual Studio 2019. Just make sure to resolve the git submodules first.

Runing GamePlayer

Run the executable "GamePlayer\bin\Release\GamePlayer.exe":

screenshot.png

The script "../../../game/bundle.js" is loaded by default. You can load your own script by clicking the button "Load Script".

The engine doesn't support ES6 modules eg. "import". User scripts need to be pre-bundled using bundlers like rollup.js

License

The source code is licensed under '"Anti 996" License' by Fei Yang and Vulcan Eon (北京鲜衣怒马文化传媒有限公司).

User Script APIs

Way to go...

You might also like...

POC. Simple plugin-based meta-programming platform on top of Typescript

comp-plugins POC Running: yarn to install dependencies yarn dev to run the script The what The script creates a new typescript compiler instance (prog

Jul 14, 2022

[OUTDATED] [PoC] Magnit bonus card numbers & QR code gen

[OUTDATED] [PoC] Magnit bonus card numbers & QR code gen

magnitqr [OUTDATED] [PoC] Magnit bonus card numbers & QR code generator and saver https://rdavydov.github.io/magnitqr/ SPA that was used "in the field

Oct 25, 2022

🧭 Full Stack TypeScript Application Developed as POC

Tractian Challenge POC Full Stack Development Project Browse Back End code» - Browse Front End code» Built With Table of Contents Deployed Instances I

Nov 20, 2022

관세청 개인통관고유부호(PCCC)를 가져오는 PoC

pccc-poc 관세청 개인통관고유부호(PCCC)를 가져오는 PoC Installation git clone https://github.com/stevejkang/pccc-poc.git && cd pccc-poc npm install # edit index.ts (fi

Oct 5, 2022

POC OF CVE-2022-21970

POC OF CVE-2022-21970

CVE-2022-21970 Description Microsoft Edge (Chromium-based) Elevation of Privilege Vulnerability. This vulnerability allows an attacker to execute java

Dec 9, 2022

Example of a Cloudflare Pages server side rendering (SSR) project powered by Hono.

Hono SSR on Cloudflare Pages Example of a Cloudflare Pages server side rendered (SSR) project powered by Hono. This project demonstrates: Accessing en

Nov 19, 2022

This is an VanillaJS SPA example with function based rendering.

This is an VanillaJS SPA example with function based rendering.

Function-Based-Rendering This is an VanillaJS SPA example with function based rendering. Here's how to create Views by function composition and how to

Oct 16, 2021

A custom element for rendering stylable (light DOM) Markdown

Motivation There are many web components these days to render Markdown to HTML. Here are a few: zero-md marked-element …and I’m sure many others H

Dec 20, 2022

A JSDOM alternative with support for server side rendering of web components

A JSDOM alternative with support for server side rendering of web components

About A JSDOM alternative with support for server side rendering of web components. Happy DOM aim to support the most common functionality of a web br

Dec 30, 2022
Owner
Fei Yang
Former software engineer at NVIDIA. Currently: 宙予科技,Beijing
Fei Yang
The open source embeddable online markdown editor (component).

Editor.md Editor.md : The open source embeddable online markdown editor (component), based on CodeMirror & jQuery & Marked. Features Support Standard

pandao 12.7k Dec 30, 2022
javascript embeddable / in-memory database

LokiJS The super fast in-memory javascript document oriented database. Enable offline-syncing to your SQL/NoSQL database servers with SyncProxy !! Cod

Joe Minichino 6.4k Jan 9, 2023
An embeddable, programmable order book framework

Verto Flex An embeddable, programmable order book framework Installation npm install @verto/flex or yarn add @verto/flex Prerequisites Your SmartWeave

The Verto Protocol 9 Oct 23, 2022
Tempo is an easy, intuitive JavaScript rendering engine that enables you to craft data templates in pure HTML.

Tempo 2.0 Tempo is an easy, intuitive JavaScript rendering engine that enables you to craft data templates in pure HTML. Why use Tempo? Clear separati

Twigkit 707 Jan 3, 2023
2D HTML5 rendering and layout engine for game development

Stage.js is a 2D HTML5 JavaScript library for cross-platform game development, it is lightweight, fast and open-source. Check out examples and demos!

Ali Shakiba 2.2k Jan 3, 2023
A W3C standard compliant Web rendering engine based on Flutter.

WebF WebF (Web on the Flutter) is a W3C standard compliant Web rendering engine based on Flutter, it can run web application on Flutter natively. W3C

openwebf 418 Dec 25, 2022
The project integrates workflow engine, report engine and organization authority management background, which can be applied to the development of OA, HR, CRM, PM and other systems. With tlv8 IDE, business system development, testing and deployment can be realized quickly.

介绍 项目集成了工作流引擎、报表引擎和组织机构权限管理后台,可以应用于OA、HR、CRM、PM等系统开发。配合使用tlv8 ide可以快速实现业务系统开发、测试、部署。 后台采用Spring MVC架构简单方便,前端使用流行的layui界面美观大方。 采用组件开发技术,提高系统的灵活性和可扩展性;采

Qian Chen 38 Dec 27, 2022
POC implementation of liveblocks.io obsidian plugin

Obsidian Liveblocks by shabegom A POC implementation of liveblocks.io inside an obsidian plugin. Install Create an account at https://liveblocks.io Gr

Sam 9 Oct 7, 2022
This repository aims to create a POC about authentication and authorization using NestJS, Prisma and JWT.

A progressive Node.js framework for building efficient and scalable server-side applications. Description Nest framework TypeScript starter repository

Vinícius Fraga Modesto 2 Nov 2, 2022
Minimal framework for SSG (WIP, PoC)

Frostleaf https://zenn.dev/0918nobita/scraps/64a268583b8463 Development Install tools asdf plugin-add nodejs asdf plugin-add pnpm asdf install Install

0918nobita 7 Jun 4, 2022