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

当前示例源码github地址:

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

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

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

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

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

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

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

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

  5. 数据/语义驱动。

当前示例运行效果:

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

javascript 复制代码
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();
	}
}
相关推荐
光学测量小菜鸡1 天前
线结构光测量系统标定--导轨
数码相机·算法·3d
小彭努力中1 天前
20. gui调试3-下拉菜单、单选框
前端·3d·webgl
用你的胜利博我一笑吧2 天前
vue3+ts+supermap iclient3d for cesium功能集合
前端·javascript·vue.js·3d·cesium·supermap
这是我582 天前
C++3D迷宫
c++·3d·visual studio·z·x·迷宫·y
我是瓦力3 天前
PointNet++改进策略 :模块改进 | EdgeConv | DGCNN, 动态图卷积在3d任务上应用
人工智能·深度学习·计算机视觉·3d
Mr.mjw3 天前
项目中使用简单的立体3D柱状图,不用引入外部组件纯css也能实现
前端·css·3d
GIS数据转换器4 天前
时空大数据平台:激活新质生产力的智慧引擎
大数据·人工智能·物联网·3d·gis
新拓三维4 天前
三维数字图像相关法(3D-DIC)用于复合材料力学性能测试
人工智能·3d
阿利同学4 天前
基于姿态估计的运动打卡健身系统-AI健身教练-3d姿态估计-摔倒检测应用-姿态估计与计数
人工智能·3d·健康医疗·智能监控·3d姿态估计·ai健身打卡系统·健身教练
用你的胜利博我一笑吧4 天前
supermap Iclient3d for cesium加载地形并夸大地形
前端·javascript·3d