轻量封装WebGPU渲染系统示例<1>-彩色三角形(源码)

当前示例源码github地址 : https://github.com/vilyLei/voxwebgpu/blob/version-1.01/src/voxgpu/sample/VertColorTriangle.ts

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

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

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

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

  4. 渲染数据和渲染机制分离。

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

当前示例运行效果:

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

javascript 复制代码
const positions = new Float32Array([-1.0, -1.0, 0.0, 1.0, -1.0, 0.0, 0.0, 1.0, 0.0]);
const colors = new Float32Array([1.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 1.0]);

export class VertColorTriangle {

	renderer = new WGRenderer();

	initialize(): void {
		console.log("VertColorTriangle::initialize() ...");
		this.createEntity();
	}
	private createEntity(): void {
		const renderer = this.renderer;

		const shdSrc = {
			vertShaderSrc: { code: vertWGSL, uuid: "vtxShdCode" },
			fragShaderSrc: { code: fragWGSL, uuid: "fragShdCode" }
		};
		const material = new WGMaterial({
			shadinguuid: "shapeMaterial",
			shaderCodeSrc: shdSrc
		});

		const geometry = new WGGeometry().addAttributes([
			{ shdVarName: "position", data: positions, strides: [3] },
			{ shdVarName: "color", data: colors, strides: [3] }
		]);

		const entity = new Entity3D(false);
		entity.materials = [material];
		entity.geometry = geometry;
		entity.applyCamera(this.renderer.camera);

		renderer.addEntity(entity);
	}
	run(): void {
		this.renderer.run();
	}
}
相关推荐
syncon1215 小时前
基于手机液晶相变的集成电路内部短路失效定位及液晶线路激光修复原理
科技·3d·制造
SUNNY_SHUN18 小时前
不需要Memory Bank:CMDR-IAD用2D+3D双分支重建做工业异常检测,MVTec 3D 97.3%
论文阅读·人工智能·算法·3d
丰。。19 小时前
3D高斯泼溅研究01
人工智能·深度学习·3d·强化学习·深度强化学习
xwz小王子20 小时前
IEEE RAL 基于空间短时傅里叶变换的单通道3D形状感知
3d
军军君011 天前
Three.js基础功能学习十八:智能黑板实现实例五
前端·javascript·vue.js·3d·typescript·前端框架·threejs
军军君012 天前
Three.js基础功能学习十六:智能黑板实现实例三
前端·javascript·css·vue.js·3d·前端框架·threejs
海伯森技术2 天前
海伯森同轴式3D线光谱共焦传感器
3d
zhooyu2 天前
利用叉乘判断OpenGL中的左右关系
c++·3d·opengl
web_小码农2 天前
CSS 3D动画 旋转木马示例(带弧度支持手动拖动)
javascript·css·3d
天宝耐特2 天前
L2pro+P1搭配LCC-3DGS,实现施工过程“可测量、可漫游、可追溯”的3D永久存档
3d·三维数字化·数字化存档·手持扫描仪·灵光l2pro·施工数字化·p1空间相机