seo移动网站页面怎么做,重庆制作企业网站,界面ui设计,深圳宣传片当前示例源码github地址:
https://github.com/vilyLei/voxwebgpu/blob/feature/rendering/src/voxgpu/sample/ComputeEntityTest.ts
系统特性:
1. 用户态与系统态隔离。 细节请见#xff1a;引擎系统设计思路 - 用户态与系统态隔离-CSDN博客
2. 高频调用与低频调用隔离。 …当前示例源码github地址:
https://github.com/vilyLei/voxwebgpu/blob/feature/rendering/src/voxgpu/sample/ComputeEntityTest.ts
系统特性:
1. 用户态与系统态隔离。 细节请见引擎系统设计思路 - 用户态与系统态隔离-CSDN博客
2. 高频调用与低频调用隔离。
3. 面向用户的易用性封装。
4. 渲染数据(内外部相关资源)和渲染机制分离。
5. 用户操作和渲染系统调度并行机制。
6. 数据/语义驱动。
7. 异步并行的场景/模型载入。
8. computing与rendering用法机制一致性。 1). 构造过程一致性。 2). 启用过程一致性。 3). 自动兼容到material多pass以及material graph机制中。
此示例基于此渲染系统实现当前示例TypeScript源码如下
const gridSize 32;
const shdWorkGroupSize 8;const compShdCode group(0) binding(0) varuniform grid: vec2f;group(0) binding(1) varstorage cellStateIn: arrayu32;group(0) binding(2) varstorage, read_write cellStateOut: arrayu32;fn cellIndex(cell: vec2u) - u32 {return cell.y * u32(grid.x) cell.x;}compute workgroup_size(${shdWorkGroupSize}, ${shdWorkGroupSize})fn compMain(builtin(global_invocation_id) cell: vec3u) {if (cellStateIn[cellIndex(cell.xy)] 1) {cellStateOut[cellIndex(cell.xy)] 0;} else {cellStateOut[cellIndex(cell.xy)] 1;}};
export class ComputeEntityTest {private mRscene new RendererScene();initialize(): void {console.log(ComputeEntityTest::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 createUniformValues(): WGRUniformValue[] {const gridsSizesArray new Float32Array([gridSize, gridSize]);const cellStateArray0 new Uint32Array(gridSize * gridSize);for (let i 0; i cellStateArray0.length; i3) {cellStateArray0[i] 1;}const cellStateArray1 new Uint32Array(gridSize * gridSize);for (let i 0; i cellStateArray1.length; i) {cellStateArray1[i] i % 2;}const v0 new WGRUniformValue({data: gridsSizesArray, stride: 2});const v1 new WGRStorageValue({data: cellStateArray0, stride: 1});const v2 new WGRStorageValue({data: cellStateArray1, stride: 1});v0.toVisibleAll();v1.toVisibleVertComp();v2.toVisibleComp();v2.toBufferForStorage();return [v0, v1, v2];}private initScene(): void {const rc this.mRscene;let shaderSrc {compShaderSrc: {code: compShdCode,uuid: shader-computing,compEntryPoint: compMain}};let uniformValues this.createUniformValues();let entity new ComputeEntity({ shaderSrc, uniformValues });rc.addEntity(entity);}run(): void {this.mRscene.run();}
}