具有价值的响应式网站,电子商务网站建设教学,网站建设的费用,宜昌市住房和城乡建设局网站当前示例源码github地址:
https://github.com/vilyLei/voxwebgpu/blob/feature/rendering/src/voxgpu/sample/BasePbrMaterialTest.ts
当前示例运行效果: 微调参数之后的效果: 此示例基于此渲染系统实现#xff0c;当前示例TypeScript源码如下:
export class BasePbrMateri…当前示例源码github地址:
https://github.com/vilyLei/voxwebgpu/blob/feature/rendering/src/voxgpu/sample/BasePbrMaterialTest.ts
当前示例运行效果: 微调参数之后的效果: 此示例基于此渲染系统实现当前示例TypeScript源码如下:
export class BasePbrMaterialTest {private mRscene new RendererScene();initialize(): void {this.mRscene.initialize({ canvasWith: 1024, canvasHeight: 1024, rpassparam: { multisampleEnabled: true } });this.initScene();this.initEvent();}private hdrEnvtex new SpecularEnvBrnTexture();private createTextures(ns: string): WGTextureDataDescriptor[] {const albedoTex { albedo: { url: static/assets/pbr/${ns}/albedo.jpg } };const normalTex { normal: { url: static/assets/pbr/${ns}/normal.jpg } };const aoTex { ao: { url: static/assets/pbr/${ns}/ao.jpg } };const roughnessTex { roughness: { url: static/assets/pbr/${ns}/roughness.jpg } };const metallicTex { metallic: { url: static/assets/pbr/${ns}/metallic.jpg } };let textures [this.hdrEnvtex, albedoTex, normalTex, aoTex, roughnessTex, metallicTex];return textures;}private initScene(): void {this.initEntities();}private initEntities(): void {let rc this.mRscene;let monkeySrc new ModelEntity({modelUrl: static/assets/draco/monkey.drc});let sphSrc new SphereEntity({radius: 100,latitudeNumSegments: 30,longitudeNumSegments: 30});let lightData this.createLightData();let startV new Vector3(-500, 0, -500);for (let i 0; i 3; i) {for (let j 0; j 5; j) {let pos new Vector3(j * 300 startV.x, 0, i * 600 startV.z);let roughness 1.0 - (0.05 0.95 * j/(5-1));let roughnessBase i/(3-1);let material new BasePBRMaterial();let property material.property;property.setLightData(lightData.lightsData, lightData.lightColorsData);property.ambient.value new Color4().randomRGB(0.3, 0.1);property.albedo.value new Color4().randomRGB(1.0, 0.2);property.arms.value [1, roughness, 1];property.armsBase.value [0, roughnessBase ,0];material.addTextures(this.createTextures(gold));let sph new SphereEntity({materials: [material],geometry: sphSrc.geometry});sph.transform.setPosition(pos);rc.addEntity(sph);material new BasePBRMaterial();property material.property;property.setLightData(lightData.lightsData, lightData.lightColorsData);property.ambient.value new Color4().randomRGB(0.3, 0.1).ceil();property.albedo.value new Color4().randomRGB(1.0, 0.2);property.arms.value [1, roughness, 1];property.armsBase.value [0, roughnessBase ,0];property.uvParam.value [2,2];material.addTextures(this.createTextures(rusted_iron));let monkey new ModelEntity({materials: [material],geometry: monkeySrc.geometry,transform: { position: pos.clone().subtractBy(new Vector3(0, 0, 270)), scale: [100, 100, 100], rotation: [0, 90, 0] }});rc.addEntity(monkey);}}}private createLightData(): { lightsData: Float32Array; lightColorsData: Float32Array } {let lightsData new Float32Array([0.0, 300.0, 0, 0.000001]);let lightColorsData new Float32Array([5.0, 5.0, 5.0, 0.000005]);return { lightsData, lightColorsData };}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 {};run(): void {this.mRscene.run();}
}