All Projects → lume → Glas

lume / Glas

Licence: mit
WebGL in WebAssembly with AssemblyScript

Programming Languages

typescript
32286 projects

Projects that are alternatives of or similar to Glas

Roygbiv
A 3D engine for the Web
Stars: ✭ 499 (+79.5%)
Mutual labels:  game-development, game-engine, 3d-game-engine, 3d, webgl, threejs, three-js
Gamedev Resources
🎮 🎲 A wonderful list of Game Development resources.
Stars: ✭ 2,054 (+638.85%)
Mutual labels:  game-development, game-engine, gamedev, game-dev, 3d, 3d-engine
Flaxapi
Old repository with C# Editor and C# API for creating games in Flax Engine
Stars: ✭ 131 (-52.88%)
Mutual labels:  game-development, game-engine, gamedev, games, 3d-game-engine, 3d-engine
3d Game Shaders For Beginners
🎮 A step-by-step guide to implementing SSAO, depth of field, lighting, normal mapping, and more for your 3D game.
Stars: ✭ 11,698 (+4107.91%)
Mutual labels:  game-development, gamedev, 3d, webgl, 3d-graphics
Vue Gl
Vue.js components rendering 3D WebGL graphics reactively with three.js
Stars: ✭ 434 (+56.12%)
Mutual labels:  3d, webgl, threejs, 3d-graphics, three-js
Lume
Create CSS3D/WebGL applications declaratively with HTML. Give regular DOM elements shadow and lighting.
Stars: ✭ 445 (+60.07%)
Mutual labels:  3d, webgl, threejs, 3d-graphics, 3d-engine
Magnum
Lightweight and modular C++11 graphics middleware for games and data visualization
Stars: ✭ 3,728 (+1241.01%)
Mutual labels:  game-engine, gamedev, 3d, webgl, webassembly
Cryengine
CRYENGINE is a powerful real-time game development platform created by Crytek.
Stars: ✭ 580 (+108.63%)
Mutual labels:  game-development, game-engine, gamedev, 3d-game-engine, 3d-engine
Limonengine
3D FPS game engine with full dynamic lighting and shadows
Stars: ✭ 331 (+19.06%)
Mutual labels:  game-development, game-engine, 3d, 3d-graphics, 3d-engine
Cpp 3d Game Tutorial Series
C++ 3D Game Tutorial Series is a YouTube tutorial series, whose purpose is to help all those who want to take their first steps in the game development from scratch.
Stars: ✭ 400 (+43.88%)
Mutual labels:  game-development, game-engine, gamedev, 3d, 3d-graphics
3D-Engine-OpenGL-4
3D Graphics Engine For Games | C++ OpenGL 4.1
Stars: ✭ 19 (-93.17%)
Mutual labels:  game-engine, 3d, 3d-game-engine, 3d-graphics, 3d-engine
Lba2remake
A Little Big Adventure 2 / Twinsen's Odyssey reimplementation in JavaScript / Three.js / React
Stars: ✭ 116 (-58.27%)
Mutual labels:  game-engine, gamedev, 3d, webgl, threejs
Vulkan Renderer
A new 3D game engine using modern C++ and Vulkan API
Stars: ✭ 205 (-26.26%)
Mutual labels:  game-development, game-engine, gamedev, 3d-game-engine, 3d-engine
Fxgl
Stars: ✭ 2,378 (+755.4%)
Mutual labels:  game-development, game-engine, gamedev, 3d-game-engine, 3d
Engine
Fast and lightweight JavaScript game engine built on WebGL and glTF
Stars: ✭ 6,890 (+2378.42%)
Mutual labels:  game-development, game-engine, gamedev, webgl
Gameproject3
游戏服务器框架,网络层分别用SocketAPI、Boost Asio、Libuv三种方式实现, 框架内使用共享内存,无锁队列,对象池,内存池来提高服务器性能。还包含一个不断完善的Unity 3D客户端,客户端含大量完整资源,坐骑,宠物,伙伴,装备, 这些均己实现上阵和穿戴, 并可进入副本战斗,多人玩法也己实现, 持续开发中。
Stars: ✭ 655 (+135.61%)
Mutual labels:  game-development, game-engine, gamedev, games
Pixelvision8
Pixel Vision 8's core philosophy is to teach retro game development with streamlined workflows. PV8 is also a platform that standardizes 8-bit fantasy console limitations built on top of the open-source C# game engine based on MonoGame.
Stars: ✭ 773 (+178.06%)
Mutual labels:  game-development, game-engine, gamedev, games
Entt
Gaming meets modern C++ - a fast and reliable entity component system (ECS) and much more
Stars: ✭ 6,017 (+2064.39%)
Mutual labels:  game-development, game-engine, gamedev, game-dev
Excalibur
🎮 An easy to use 2D HTML5 game engine written in TypeScript
Stars: ✭ 892 (+220.86%)
Mutual labels:  game-development, game-engine, gamedev, games
Luxe Alpha
luxe alpha - deprecated, unrelated to the new engine! see the readme or website for details - https://luxeengine.com/
Stars: ✭ 559 (+101.08%)
Mutual labels:  game-development, game-engine, gamedev, game-dev

LUME

GLAS

WebGL in WebAssembly with AssemblyScript.

This is a work-in-progress port of Three.js, a JavaScript 3D WebGL library, into AssemblyScript.

Motivation

It'd be sweet to have a high-performing WebGL engine that runs in the web via WebAssembly and is written in a language that web developers are already familiar with: JavaScript, in the form of TypeScript (a superset of JavaScript with types).

Enter AssemblyScript, a toolchain that allows us to write a strictly-typed subset of TypeScript code and compile it to WebAssembly (an assembly-like language representing machine code) for speed.

Status

⚠️ ALPHA STATE

The project is currently in its very early alpha stages. We have an amazing group of programmers building the initial ASWebGLue library. This library allows AssemblyScript programs to call the browser's underlying WebGL interface. This is required before we are able render anything to the screen. A majority of the Three.js library and their unit test have been ported over.

See the current progress in the project board or review our issues.

Goal

Our initial port project board we're tracking all the classes that need to be ported. The initial goal is to reproduce the following basic Three.js demo, but entirely in AssemblyScript:

Initial Goal: https://codepen.io/trusktr/pen/EzBKYM

Contribute

A brief overview of the work consists of picking a Three.js class, translating it from JavaScript (with TypeScript declaration files), and porting into AssemblyScript (effectively merging the .js and .d.ts files).

Most logic can be ported unchanged, but sometimes there are features of plain JS that AssemblyScript does not support. For example Assembly script does not support any type. Three.js APIs that accept plain object literals with arbitrary properties need to be converted into class structures with specific property types. Additionally unit test files also need to be ported over from *.test.js and into as-pect *.spec.ts files.

If you would like to help, awesome! We are currenty looking for help, testing, and feedback. Please read about how to contribute or view a detailed example of how to port some of the code.

How It Works

We have an HTML page that loads the glas WebAssembly module and runs it, but so far this module only instantiates an Object3D instance to show that we're able to run the module.

Later we'll eventually connect the module to a <canvas> element in the DOM and actually render something.

Build & Run

To run the example GLAS application in your browser use the following command:

# install or update dependencies
npm install

# build and serve the project in browser
npm start

Now see the devtools console in your browser tab for some output that tell us that our GLAS program has been loaded and initialized.

NOTE: the project does not currently have a watch mode with automatic rebuild. So you will need to execute npm run build again and then refresh to see the changes.

Our goal is to get GLAS distributed as a library on NPM so that you can include into your own AssemblyScript application. Until this is implemented, you can add your application code into the src/as/index.ts AssemblyScript file. This is currently the entry point for GLAS.

Testing

Unit testing is handled by the as-pect test runner for AssemblyScript. It is based on Mocha testing API with similar describe and it functions, etc.

To run the tests, run the following commands in your terminal:

# run unit tests
npm test

The console output should report which tests pass and which tests fail.

Development

If you are interested in developing GLAS please read the detailed process on our development page

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].