/CanvasToy

lightweight webgl rendering tool

Primary LanguageJavaScriptMIT LicenseMIT

CanvasToy.js

Commitizen friendly

This is my undergraduate project, it is no longer suitable for modern typescript dev pipeline, please consider babylonjs for serious ts 3d engine

Lightweight WebGL/WenGL2 rendering engine, see some examples here

roadmap before 1.0:

  • PipeLine
    • Forward Rendering
    • Tile Based Deferred Rendering(TBDR)
  • Shading
    • Physical-based(GGX) material model
    • Image Based lighting (IBL)
    • Traditional material model(blinn-phong)
    • Reflection and retracions
  • Load and Parsing
    • .obj .mtl,
    • .fbx
    • .gltf
    • Variours types of images (through HTMLImageElement) as Textures
  • Lights
    • Point lights
    • Directional lights
    • Spot lights
  • Shadows
    • Basic shadow mapping
    • Expotional soft shadow mapping (forward approach)
    • Expotional soft shadow mapping (deferred approach)
    • Percentage closer soft shadow(PCSS)
    • Screen-space shadow mapping (deferred approach)
  • Transforms
    • Basic object transforms
    • Scenes Graph
    • Bones and Animation Parsing
  • Engineering
    • More than 95% test cover
    • Automatically handle async resources loading, including models, images and videos. You don't need to write some code like image.onload = ...
    • Using github workflow
    • Build && test using pure node.js scripts and typescript compiler, without gulp or grunt, webpack and bash , etc.
    • Generate a typescript declaration file .d.ts to provide type hint.

Contribute:

See CONTRIBUTING.md.

License

The MIT license.