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

企业做网站的方案央视新闻今天的内容

企业做网站的方案,央视新闻今天的内容,浦口做网站价格,上海中小企业名录当前示例源码github地址: https://github.com/vilyLei/voxwebgpu/blob/feature/rendering/src/voxgpu/sample/GameOfLifePretty.ts 系统特性: 1. 用户态与系统态隔离。 2. 高频调用与低频调用隔离。 3. 面向用户的易用性封装。 4. 渲染数据(内外部相关资源)和渲染机制分离…

当前示例源码github地址:

https://github.com/vilyLei/voxwebgpu/blob/feature/rendering/src/voxgpu/sample/GameOfLifePretty.ts

系统特性:

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

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

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

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

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

6. 数据/语义驱动。

7. 异步并行的场景/模型载入。

8. computing与rendering用法机制一致性。

        1). 构造过程一致性。

        2). 启用过程一致性。

        3). 自动兼容到material多pass以及material graph机制中。

当前示例运行效果:

WGSL顶点与片段shader:

struct VertexInput {@location(0) pos: vec3f,@location(1) uv : vec2f,@builtin(instance_index) instance: u32
};struct VertexOutput {@builtin(position) pos: vec4f,@location(0) cell: vec2f,@location(1) uv: vec2f,@location(2) instance: f32,
};
@group(0) @binding(0) var<uniform> grid: vec2f;
@group(0) @binding(1) var<storage> cellState: array<u32>;
@group(0) @binding(2) var<storage> lifeState: array<f32>;
@vertex
fn vertMain(input: VertexInput) -> VertexOutput {let i = f32(input.instance);let cell = vec2f(i % grid.x, floor(i / grid.x));let cellOffset = cell / grid * 2.0;var state = f32(cellState[input.instance]);let gridPos = (input.pos.xy * state + 1.0) / grid - 1.0 + cellOffset;var output: VertexOutput;output.pos = vec4f(gridPos, 0.0, 1.0);output.cell = cell;output.uv = input.uv;output.instance = i;return output;
}@fragment
fn fragMain(input: VertexOutput) -> @location(0) vec4f {let c = input.cell / grid;var dis = length(input.uv - vec2<f32>(0.5, 0.5));dis = min(dis/0.15, 1.0);let i = u32(input.instance);var f = clamp((lifeState[i])/100.0, 0.0005, 1.0);dis = (1.0 - pow(dis, 100.0)) * (1.0 - f) + f;var c3 = vec3f(c, (1.0 - c.x) * (1.0 - f) + f) * dis;return vec4f(c3, 1.0);
}

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

const gridSize = 64;
const shdWorkGroupSize = 8;const compShdCode = `
@group(0) @binding(0) var<uniform> grid: vec2f;@group(0) @binding(1) var<storage> cellStateIn: array<u32>;
@group(0) @binding(2) var<storage, read_write> cellStateOut: array<u32>;
@group(0) @binding(3) var<storage, read_write> lifeState: array<f32>;fn cellIndex(cell: vec2u) -> u32 {return (cell.y % u32(grid.y)) * u32(grid.x) +(cell.x % u32(grid.x));
}fn cellActive(x: u32, y: u32) -> u32 {return cellStateIn[cellIndex(vec2(x, y))];
}@compute @workgroup_size(${shdWorkGroupSize}, ${shdWorkGroupSize})
fn compMain(@builtin(global_invocation_id) cell: vec3u) {// Determine how many active neighbors this cell has.let activeNeighbors = cellActive(cell.x+1, 		cell.y+1) +cellActive(cell.x+1, 	cell.y) +cellActive(cell.x+1, 	cell.y-1) +cellActive(cell.x, 		cell.y-1) +cellActive(cell.x-1, 	cell.y-1) +cellActive(cell.x-1, 	cell.y) +cellActive(cell.x-1, 	cell.y+1) +cellActive(cell.x, 		cell.y+1);let i = cellIndex(cell.xy);// Conway's game of life rules:switch activeNeighbors {case 2: { // Active cells with 2 neighbors stay active.cellStateOut[i] = cellStateIn[i];if(cellStateOut[i] > 0) {lifeState[i] += 0.5;} else {lifeState[i] -= 0.5;}}case 3: { // Cells with 3 neighbors become or stay active.cellStateOut[i] = 1;lifeState[i] += 0.5;}default: { // Cells with < 2 or > 3 neighbors become inactive.cellStateOut[i] = 0;lifeState[i] = 0.01;}}if(lifeState[i] < 0.01) { lifeState[i] = 0.01; }
}`;
export class GameOfLifePretty {private mRscene = new RendererScene();initialize(): void {console.log("GameOfLifePretty::initialize() ...");const rc = this.mRscene;rc.initialize();this.initScene();}private createUniformValues(): { ufvs0: WGRUniformValue[]; ufvs1: WGRUniformValue[] }[] {const gridsSizesArray = new Float32Array([gridSize, gridSize]);const cellStateArray0 = new Uint32Array(gridSize * gridSize);for (let i = 0; i < cellStateArray0.length; i++) {cellStateArray0[i] = Math.random() > 0.8 ? 1 : 0;}const cellStateArray1 = new Uint32Array(gridSize * gridSize);for (let i = 0; i < cellStateArray1.length; i++) {cellStateArray1[i] = i % 2;}const lifeStateArray3 = new Float32Array(gridSize * gridSize);for (let i = 0; i < lifeStateArray3.length; i++) {lifeStateArray3[i] = 0.01;}let shared = true;let sharedData0 = { data: cellStateArray0 };let sharedData1 = { data: cellStateArray1 };let sharedData3 = { data: lifeStateArray3 };const v0 = new WGRUniformValue({ data: gridsSizesArray, stride: 2, shared });v0.toVisibleAll();// build rendering uniformsconst va1 = new WGRStorageValue({ sharedData: sharedData0, stride: 1, shared }).toVisibleVertComp();const vb1 = new WGRStorageValue({ sharedData: sharedData1, stride: 1, shared }).toVisibleVertComp();const vc1 = new WGRStorageValue({ sharedData: sharedData3, stride: 1, shared }).toVisibleAll();// build computing uniformsconst compva1 = new WGRStorageValue({ sharedData: sharedData0, stride: 1, shared }).toVisibleVertComp();const compva2 = new WGRStorageValue({ sharedData: sharedData1, stride: 1, shared }).toVisibleComp();compva2.toBufferForStorage();const compvb1 = new WGRStorageValue({ sharedData: sharedData1, stride: 1, shared }).toVisibleVertComp();const compvb2 = new WGRStorageValue({ sharedData: sharedData0, stride: 1, shared }).toVisibleComp();compvb2.toBufferForStorage();const compv3 = new WGRStorageValue({ sharedData: sharedData3, stride: 1, shared }).toVisibleComp();compv3.toBufferForStorage();return [{ ufvs0: [v0, va1, vc1], ufvs1: [v0, vb1, vc1] },{ ufvs0: [v0, compva1, compva2, compv3], ufvs1: [v0, compvb1, compvb2, compv3] }];}private mEntity: FixScreenPlaneEntity;private mStep = 0;private createMaterial(shaderCodeSrc: WGRShderSrcType, uniformValues: WGRUniformValue[], shadinguuid: string, instanceCount: number): WGMaterial {return new WGMaterial({shadinguuid,shaderCodeSrc,instanceCount,uniformValues});}private createCompMaterial(shaderCodeSrc: WGRShderSrcType, uniformValues: WGRUniformValue[], shadinguuid: string, workgroupCount = 2): WGCompMaterial {return new WGCompMaterial({shadinguuid,shaderCodeSrc,uniformValues}).setWorkcounts(workgroupCount, workgroupCount);}private initScene(): void {const rc = this.mRscene;const ufvsObjs = this.createUniformValues();const instanceCount = gridSize * gridSize;const workgroupCount = Math.ceil(gridSize / shdWorkGroupSize);let shaderSrc = {shaderSrc: {code: shaderWGSL,uuid: "shader-gameOfLife",vertEntryPoint: "vertMain",fragEntryPoint: "fragMain"}};let compShaderSrc = {compShaderSrc: {code: compShdCode,uuid: "shader-computing",compEntryPoint: "compMain"}};const materials: WGMaterial[] = [// build ping-pong rendering processthis.createMaterial(shaderSrc, ufvsObjs[0].ufvs0, "rshd0", instanceCount),this.createMaterial(shaderSrc, ufvsObjs[0].ufvs1, "rshd1", instanceCount),// build ping-pong computing processthis.createCompMaterial(compShaderSrc, ufvsObjs[1].ufvs1, "compshd0", workgroupCount),this.createCompMaterial(compShaderSrc, ufvsObjs[1].ufvs0, "compshd1", workgroupCount),];let entity = new FixScreenPlaneEntity({x: -0.8, y: -0.8, width: 1.6, height: 1.6,materials});rc.addEntity(entity);materials[0].visible = false;materials[2].visible = false;this.mEntity = entity;}private mFrameDelay = 3;run(): void {let rendering = this.mEntity.isRendering();if (rendering) {if (this.mFrameDelay > 0) {this.mFrameDelay--;return;}this.mFrameDelay = 3;const ms = this.mEntity.materials;for (let i = 0; i < ms.length; i++) {ms[i].visible = (this.mStep % 2 + i) % 2 == 0;}this.mStep++;}this.mRscene.run(rendering);}
}


文章转载自:
http://dinncounroost.ssfq.cn
http://dinncozymotechnics.ssfq.cn
http://dinncoarchitectonic.ssfq.cn
http://dinncochaulmoogra.ssfq.cn
http://dinncotalofibular.ssfq.cn
http://dinncomopishly.ssfq.cn
http://dinncothulium.ssfq.cn
http://dinncohysterotomy.ssfq.cn
http://dinncobrusa.ssfq.cn
http://dinncotectonite.ssfq.cn
http://dinncoleprophil.ssfq.cn
http://dinncosiddhi.ssfq.cn
http://dinncopernik.ssfq.cn
http://dinncoupriver.ssfq.cn
http://dinncovague.ssfq.cn
http://dinncoburgle.ssfq.cn
http://dinncomargrave.ssfq.cn
http://dinncobola.ssfq.cn
http://dinncounderway.ssfq.cn
http://dinncospecies.ssfq.cn
http://dinncosematic.ssfq.cn
http://dinncozikurat.ssfq.cn
http://dinnconarceine.ssfq.cn
http://dinncotablemount.ssfq.cn
http://dinncounformed.ssfq.cn
http://dinncosanyasi.ssfq.cn
http://dinncoslingshot.ssfq.cn
http://dinncoinoculation.ssfq.cn
http://dinncobigoted.ssfq.cn
http://dinncorefrain.ssfq.cn
http://dinncomudflow.ssfq.cn
http://dinncomuumuu.ssfq.cn
http://dinncosubmetacentric.ssfq.cn
http://dinncoseaware.ssfq.cn
http://dinncoplasticated.ssfq.cn
http://dinncoalternatively.ssfq.cn
http://dinncolieutenancy.ssfq.cn
http://dinncospringhaas.ssfq.cn
http://dinncodiscipula.ssfq.cn
http://dinncodemineralise.ssfq.cn
http://dinncoquoteprice.ssfq.cn
http://dinncofishyback.ssfq.cn
http://dinncomerl.ssfq.cn
http://dinncocorposant.ssfq.cn
http://dinncomystique.ssfq.cn
http://dinncogowster.ssfq.cn
http://dinncookeydoke.ssfq.cn
http://dinncosupremum.ssfq.cn
http://dinncoleukon.ssfq.cn
http://dinnconucleogenesis.ssfq.cn
http://dinncoinsonify.ssfq.cn
http://dinncohabitably.ssfq.cn
http://dinncotranssexualist.ssfq.cn
http://dinncobeagling.ssfq.cn
http://dinncocoralliferous.ssfq.cn
http://dinncoinhabitant.ssfq.cn
http://dinncovasoligate.ssfq.cn
http://dinncorenegotiation.ssfq.cn
http://dinncomethylene.ssfq.cn
http://dinncozygomatic.ssfq.cn
http://dinncoglace.ssfq.cn
http://dinncoeellike.ssfq.cn
http://dinnconamen.ssfq.cn
http://dinncocharas.ssfq.cn
http://dinncomuckworm.ssfq.cn
http://dinncotreasurership.ssfq.cn
http://dinncorelentlessly.ssfq.cn
http://dinncovictimology.ssfq.cn
http://dinncolazyish.ssfq.cn
http://dinncobrasier.ssfq.cn
http://dinncoincitation.ssfq.cn
http://dinncofallibilism.ssfq.cn
http://dinncovasiform.ssfq.cn
http://dinncosemiquaver.ssfq.cn
http://dinncooutpace.ssfq.cn
http://dinncogalactin.ssfq.cn
http://dinncoinfertile.ssfq.cn
http://dinncopern.ssfq.cn
http://dinncoregistration.ssfq.cn
http://dinncohanky.ssfq.cn
http://dinncosurculose.ssfq.cn
http://dinncosharleen.ssfq.cn
http://dinncocalpack.ssfq.cn
http://dinncoachromatopsy.ssfq.cn
http://dinncogauze.ssfq.cn
http://dinncoconjugation.ssfq.cn
http://dinncoinsoluble.ssfq.cn
http://dinncothames.ssfq.cn
http://dinncovigorousness.ssfq.cn
http://dinncoextrema.ssfq.cn
http://dinncokiwanian.ssfq.cn
http://dinncoliquidus.ssfq.cn
http://dinncomucker.ssfq.cn
http://dinncogabionade.ssfq.cn
http://dinncomerle.ssfq.cn
http://dinncowagon.ssfq.cn
http://dinncovilnius.ssfq.cn
http://dinncopliability.ssfq.cn
http://dinncoaffix.ssfq.cn
http://dinncohydrodynamics.ssfq.cn
http://www.dinnco.com/news/85347.html

相关文章:

  • 网站做排名2015年免费推广网站2023
  • 廊坊哪里有做网站建设的文山seo公司
  • 网站建设与维护理解免费seo网站
  • 麦田一葱 wordpress海口网站关键词优化
  • wordpress滑动门短代码优化营商环境 提升服务效能
  • 北京网站建设官网bing搜索
  • 临沂企业建站新东方英语线下培训学校
  • 网站 详细设计手机网页设计
  • 洪梅镇仿做网站西安百度网站快速排名
  • 汕头网站快速排名优化成都公司建站模板
  • wordpress 添加水印关键词优化系统
  • 张北网站建设公司河南网站优化公司
  • 网站有死链接怎么办关键词分为哪三类
  • 个人电影网站做APP违法吗代发广告平台
  • 什么网站可以做投票代写企业软文
  • 上海网站建设专业公司排名优化网站seo策略
  • 做网站 接单市场营销比较好写的论文题目
  • 网站建设技术指标韩国日本比分
  • 佛山移动网站建设公司网站在线优化检测
  • php购物网站开发成品重庆seo杨洋
  • 怎么制作页面视频网站seo排名优化工具
  • 矢量网站动画怎么做windows优化大师下载
  • 南阳网站优化渠道郑州网络营销排名
  • 公司网站制作招聘免费网站入口在哪
  • 影视文化网站建设软文优化
  • 多边形网站电子报刊的传播媒体是什么
  • 曹县汽车网站建设爱站网影院
  • 增城门户网站百度首页关键词推广
  • 企业网站后台管理模板互联网运营
  • 色情姐姐做床戏网站怎样制作一个自己的网站