当前位置: 首页 > news >正文

轻量封装WebGPU渲染系统示例<12>- 基础3D对象实体(源码)

当前示例源码github地址:

https://github.com/vilyLei/voxwebgpu/blob/main/src/voxgpu/sample/PrimitiveEntityTest.ts

此示例渲染系统实现的特性:

1. 用户态与系统态隔离。

         细节请见:引擎系统设计思路 - 用户态与系统态隔离-CSDN博客

2. 高频调用与低频调用隔离。

3. 面向用户的易用性封装。

4. 渲染数据(内外部相关资源)和渲染机制分离。

5. 用户操作和渲染系统调度并行机制。

6. 数据/语义驱动。

当前示例运行效果:

此示例基于此渲染系统实现,当前示例TypeScript源码如下

export class PrimitiveEntityTest {private mRscene = new RendererScene();initialize(): void {console.log("PrimitiveEntityTest::initialize() ...");const rc = this.mRscene;rc.initialize();this.initEvent();this.initScene();}private initEvent(): void {const rc = this.mRscene;rc.addEventListener(MouseEvent.MOUSE_DOWN, this.mouseDown);new MouseInteraction().initialize(rc, 0, false).setAutoRunning(true);}private mouseDown = (evt: MouseEvent): void => {};private initScene(): void {const rc = this.mRscene;let entities: PrimitiveEntity[] = [new SphereEntity(),new BoxEntity(),new CylinderEntity(),new CubeEntity({cubeSize: 130}),new TorusEntity({radius: 110, axisType: 1}),new PlaneEntity({axisType: 1})];for (let i = 0; i < entities.length; ++i) {let entity = entities[i].setAlbedo(new Color4().randomRGB(1.5, 0.1)).setARM(1.1, Math.random() * 0.95 + 0.05, Math.random() * 0.9 + 0.1);entity.transform.setXYZ(-600 + i * 200, 0, 0);rc.addEntity(entity);}}run(): void {this.mRscene.run();}
}

http://www.lryc.cn/news/218347.html

相关文章:

  • [ element-ui:table ] 设置table中某些行数据禁止被选中,通过selectable 定义方法解决
  • 【PY】倒计时日历
  • windows mysql安装
  • 【蓝桥杯省赛真题42】Scratch舞台特效 蓝桥杯少儿编程scratch图形化编程 蓝桥杯省赛真题讲解
  • Kafka(二)消息系统设计
  • 【移远QuecPython】EC800M物联网开发板的内置GNSS定位的恶性BUG(目前没有完全的解决方案)
  • R语言_RColorBrewer包--全平台可用
  • VulnHub DC-4
  • Python 查询 IP 地址段,并获取 Hostname
  • [架构之路-251/创业之路-82]:目标系统 - 纵向分层 - 企业信息化的呈现形态:常见企业信息化软件系统 - 商业智能、决策支持系统、知识管理
  • linux shell sh 脚本开机自启动
  • 欧科云链研究院:如何降低Web3风险,提升虚拟资产创新的安全合规
  • el-table中的el-input标签修改值,但界面未更新,解决方法
  • Python 中的 Gzip 解压
  • JVM常用命令
  • leetcode做题笔记213. 打家劫舍 II
  • 多输入多输出 | Matlab实现WOA-RBF鲸鱼算法优化径向基神经网络多输入多输出预测
  • 玻色量子签约移动云“五岳”量子云计算创新加速计划!
  • Postgresql在linux环境下以源码方式安装
  • vivo发布“蓝心千询”自然语言对话机器人
  • Python基础入门例程39-NP39 字符串之间的比较(运算符)
  • java中的Thread类解析
  • 如何正确清理DNS缓存
  • Git从基础到实践
  • C 保留字解释
  • 【Web】https 与 http 的区别
  • 【KVM】半虚拟化和全虚拟化技术
  • react中的useReducer复杂的状态管理
  • SpringCloudAlibaba - 项目完整搭建(Nacos + OpenFeign + Getway + Sentinel)
  • 如何使用Python的matplotlib和seaborn库绘制颜色渐变的高级散点图