Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/3dtech/frak
FRAK WebGL Engine
https://github.com/3dtech/frak
3d-engine 3d-wayfinder javascript js webgl
Last synced: 8 days ago
JSON representation
FRAK WebGL Engine
- Host: GitHub
- URL: https://github.com/3dtech/frak
- Owner: 3dtech
- License: mit
- Created: 2014-06-17T11:53:47.000Z (over 10 years ago)
- Default Branch: master
- Last Pushed: 2024-09-12T06:43:15.000Z (2 months ago)
- Last Synced: 2024-09-12T16:27:19.635Z (2 months ago)
- Topics: 3d-engine, 3d-wayfinder, javascript, js, webgl
- Language: TypeScript
- Size: 43.7 MB
- Stars: 21
- Watchers: 12
- Forks: 7
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# FRAK WebGL Engine
FRAK engine is a JavaScript library/API for creating interactive 3D applications using WebGL.
The purpose of the library is to provide a framework for simplifying the creation of complex interactive 3D applications.FRAK engine was developed by 3D Technologies R&D for [3D Wayfinder](http://3dwayfinder.com/). 3D Wayfinder is a floor
plan visualization and content management platform, mainly used for wayfinding applications.## Features
* Deferred, physically based renderer
- requires *WEBGL_draw_buffers*
* Order-independent transparency ([paper](http://jcgt.org/published/0002/02/09/))
* Real-time shadows
* Dynamic textures
* Post-processing pipeline
- includes FXAA and SSAO implementations
* Unicode fonts
* Collision detection
- Currently supports ray-intersection tests only
- Collision trees need to be pre-generated by an external tool
* Input: supports both keyboard+mouse and touch configurations
* Automatic resource caching
* Automatic loading of related resources
* Supported assets:
- Shaders: GLSL
- Textures: JPEG, PNG
- Models: glTF
- Fonts: Canvas text API## Architecture
The scene graph is a tree made up of instances of **Node**.
Each node can contain any number of **Component** instances. The function of a Component class is not limited.
For example it can act as an input controller (**Controller**) or as a billboard (**Billboard**) or simply as each
node's relative transformation in the scene hierarchy (**Transform**).More examples of component implementations can be seen under [src/scene/components/](src/scene/components/)