轻量封装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();
	}
}
相关推荐
星云_byto18 小时前
DCDA:双评判器扩散对齐,开放天气LiDAR-4D雷达融合3D检测泛化新范式
3d·扩散模型·3d目标检测·开放天气泛化·lidar-4d雷达融合·鲁棒感知·k-radar
2401_859506241 天前
珠宝玉石加工的智能化改造:AI视觉检测、3D建模与区块链溯源实践
人工智能·3d·视觉检测
a1117761 天前
3D 建筑编辑器 Pascal Editor THreeJS 开源
前端·3d·html
a1117762 天前
坦克大战3D Three.js 3D (开源项目)
开发语言·javascript·3d
a1117762 天前
Web 3D 肌肉车展示项目 开源
前端·3d
dalong102 天前
WPF:3D立方体
3d·wpf
寒水馨3 天前
macOS下载、安装godot-4.7.1-stable(附安装包Godot_v4.7.1-stable_macos.universal.zip)
macos·3d·游戏引擎·godot·跨平台·游戏开发·2d
人工智能培训3 天前
AI如何学习知识?与人类学习的本质差异
大数据·网络·数据库·人工智能·学习·3d
3D小将4 天前
3D格式转换之Rhino(Rhinoceros)转 CATIA 标准化转换技术
3d·solidworks模型·ug模型·rhino模型·catia模型