Skip to content

bythesword/we

Repository files navigation

WE 3D引擎(webGPU engine 3D)

目前进行重构第二版本,新的地址 : https://github.com/WebgpuEngine/WE

基础说明

  • WE 3D 是是图形学的认知与实现过程,也是一个从底层架构的B端三维渲染引擎;
  • 以TypeScript为开发语言;
  • 在光栅化是以webGPU进行架构处理的,而且只支持webGPU库;
  • 渲染引擎架构架构上,参考了UE、cesium、threejs的部分工作原理;
  • 以计算机图形学的渲染功能为主,未涉及游戏引擎架构,也没有ECS等;
  • 在底层绘制上以command集合(Draw Command、Compute Command、Copy Command)进行shader提交;
  • 在更新机制上有三个更新机制,对象的update机制、run()的入口function机制、用户自定义更新机制;
  • 在GPU的shader上支持Draw shader、Compute shader,以及多重shader串行输出一个Draw或Compute的command;(封装了webGPU原生的功能并集成与扩展);

更多功能

  • 渲染模式支持前向渲染和延迟渲,分成场景渲染和非场景渲染;
  • 延迟渲染可能会有两种方式:延迟单像素前向方式和前向颜色延迟光照渲染;
  • 渲染通道支持多GBuffer默认8个(32byte大小的单点数据量,可扩展到128大小Dawn核心的)如:depth、normal、uv、entityID、stageID、instanceID等;
  • 支持多GBuffer的可视化可以通过console命令行进行调试;
  • 支持基于GPU的GBuffer的拾取;
  • 支持正常depth渲染模式和Reversed Z渲染(以提高Z轴精度);
  • 材质部分提供了简单材质Buli-Phong为基础的基础材质,和以PBR(进行中)为核心的物理材质。在PBR材质上是主要参考learnOpengl、filament的文档进行的,并借鉴了UE的材质编辑器方向;
  • 在物体对象(entities)上将支持多种扩展形式,包括基础的点、线、面,几何体(mesh)、有限元仿真数据、各种模型文件、大地形、体素对象等;
  • 物体的空间组织上采用BVH和BOX3结合的方式;
  • 光源支持环境光、点光源、定向光源、聚光灯、以及shape光源(短期todo);
  • 光源长期todo的有体积光(前端计算量不太适用,即便在worker中)、光探针;
  • 在阴影部分以shadowmap为主;
  • 在活动对象上以Actor对象理念为核心;
  • 摄像机支持投射、正交、多视口功能;摄像机是Actor对象形式存在(CameraActor),摄像机的运动与控制也是Actor的理念;
  • 在光线拾取上有GPU拾取和CPU拾取两种模式;
  • 后期处理的效果上目前基本是参照threejs的方式,会形成一个有意思的特效吧,比如丁达尔效果等;
  • 在后期处理及之后的渲染工作流中,会保存scene、stage的输出纹理,为cache渲染、TAA等流程使用;
  • 在Stage舞台目前初步设定五个:UI、sky、world、dynamic、actor。其中后三个分别有透明和不透明两个子舞台;
  • 短期的规划还有:SSGI、SSR、SSAO、IBL;

API文档

  • API文档在doc目录下,使用TypeDoc生成;
  • 示例文档,examples目录下;

运行示例

拾取 反向Z GBuffer可视化
1747886889331 1733906612284 1737813175157
后处理:模糊,3x3卷积 延迟渲染 1024个光源 多摄像机+多viewport
1734701499419 1737812482025 1737813282671
shadow map 可视化 光阴影:方向光 软阴影PCSS
1737512422932 1737558726854 1737781844403
软阴影+动态光源 阴影:点光源 阴影:spot
1747887509742 1742301511749 1738597919885
动态点光源阴影 混合(克隆webgpufundamentals) 透明材质
1742405930357 1746455119270 1744770008344
透明渲染 纹理材质 纹理材质:贴花,alphatest
1745857053582 1746172722475 1745923119394
Blinn-Phong 高光贴图 法线纹理 视差纹理
1744796262724 1747492397105 1747885603814
视频材质 mipmap PBR:Cook-Torrance BRDF
1747645058399 1747570958252 1747296878767
PBR:Cook-Torrance 纹理BRDF IBL PBR+IBL
1747885928636
SSGI SSR SSAO
BVH GLTF OBJ
FBX 点entity 线entity
sprite entity Skinned Mesh 文本渲染
MSAA FXAA TAA
粒子系统 动画 仿真云图
后处理:描边 后处理:Bloom HDR
半透明阴影 体渲染 体渲染
shape light PBR多层材质 半透明PBR

Demo

名称 说明 动图
仿真云图 有限元仿真后处理示例 todo
ocean 复制babylon的ocean todo
PBR材质编辑器 todo
编辑器 项目编辑器 todo

Todo

  • 粒子系统目前还没有开始设计;
  • 流体模拟系统刚刚开始架构,这部分可能会有两个部分,模拟效果部分和数据驱动部分(仿真数据或计算数据);
  • PBR的材质编辑器;
  • 材质预计算部分;
  • 场景编辑器;
  • 预加载与资格管理部分;
  • 资源打包格式与输出部分;

相关资料与推荐

感谢

从入坑图形学到现在,陆陆续续学习了较多的知识,感谢图形学方面无私奉献开源工作者和进行图形学公开课的老师们。

写在最后

WE引擎是计算机图形学和引擎架构的认知与实现过程。

About

WE 3D(webGPU engine 3D)

Topics

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages