Coder Social home page Coder Social logo

mini3d.js's Introduction

mini3d.js

一个成长中的 javascript/WebGL 3D渲染框架/引擎。尽可能的实现现代3D游戏引擎支持的高级特性,并提供灵活的自定义能力。

Roadmap

  • 数学库和变换 ✓
  • 场景树 ✓
  • Frustum culling
  • 静态模型载入 ✓
  • glTF支持
  • 材质系统和自定义Shader/材质 ✓
  • 多光源前向渲染流水线 ✓
  • 可自定义的PostProcessing系统 ✓
  • ShadowMap阴影
  • 半透明渲染
  • PBR材质
  • 地形系统
  • 实例化绘制
  • 水体/海洋渲染
  • 大规模草地
  • 动画系统
  • 骨骼动画
  • 动态Batch
  • Computer Shader
  • Forward+
  • 延迟渲染
  • SSR
  • 球谐光照
  • 其他...

mini3d.js's People

Contributors

happyfire avatar

Stargazers

kenluff163 avatar  avatar yang yuchen avatar  avatar  avatar Cooper's Figure avatar SnowWind avatar Hung avatar xuxurus avatar ronnie avatar  avatar b1ghawk avatar 大大糖 avatar Xiehongbin avatar  avatar Guolin avatar  avatar bansky avatar Stanley avatar  avatar  avatar Zhenliang.Sun avatar myfmyy avatar  avatar 张英辉 avatar  avatar Vis avatar Lin.YX avatar Alex Dai avatar  avatar Rainy avatar  avatar Lei Chen avatar gandou avatar  avatar AD Luo avatar LiuLiangJun avatar 陈小辉 avatar  avatar Sruim avatar Evan avatar ahpho avatar  avatar yangAlan avatar -我叫张三- avatar xuduo avatar Sea avatar wzw9803 avatar aaronzhang avatar douysu avatar street avatar KillWave avatar  avatar

Watchers

James Cloos avatar  avatar Vis avatar street avatar Xiehongbin avatar kenluff163 avatar

mini3d.js's Issues

Mesh & sub mesh

mesh包含顶点属性数据,每个sub mesh是索引buffer的一部分,sub mesh可共享顶点。
sub mesh的作用:
1)每个sub mesh可使用一个不同的材质。
2)如果顶点数超过65535,则mesh分裂为多个sub mesh,各指向一部分数据,由于sub mesh中使用16bit索引值,因此需要一个baseIndex。

mesh顶点属性数据和vbo
positions, normals, uvs等数据可分开存储设置,但上传显卡时需要合并到buffer。由于数据类型可能不同(例如color使用int8),可能存在多个buffer。另外如果有一部分属性是需要动态修改的,也应该独立出来一个buffer。对于合并到一起的buffer中的属性,排列顺序也是需要决定的。

shader 中的attriubte name和mesh中的顶点属性的绑定关系

在material层,需要说明shader中的attribute名字对应了何种含义的定点属性,需要建立这个映射关系。
例如 a_Position,对应了顶点的position属性。
引擎需要提供一些默认的attribute名字,如果shader使用了,则材质中不需要映射,自动识别。

mesh中原始顶点数据何时释放

如果这个mesh是不可修改的,则当顶点数据上传到vbo后就可以释放原始数据,此后原始数据不可再读取。即 readable是false。

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.