From f373e0c0797e1800bf066fdfbb748bb9242230f6 Mon Sep 17 00:00:00 2001 From: wangjuncheng <1> Date: 星期二, 08 七月 2025 17:46:02 +0800 Subject: [PATCH] 泥位计 --- public/CimSDK/ser.js | 1 + 1 files changed, 1 insertions(+), 0 deletions(-) diff --git a/public/CimSDK/ser.js b/public/CimSDK/ser.js new file mode 100644 index 0000000..8f85814 --- /dev/null +++ b/public/CimSDK/ser.js @@ -0,0 +1 @@ +function a0_0x5202(){var _0x504974=['LightBodiesRemoveDuplicatesComputeBingGroup','write-only','downLeftX','position:\x20absolute;bottom:\x200;left:\x200;z-index:\x201;border:\x201px\x20solid\x20white;pointer-events:\x20none;','meshRenderAtomic_VmBuffer','LightBodiesBounceOne','streamRender_Uniform_DataViewU32','createShaderModule','call','\x0a\x20\x20\x20\x20uniform\x20sampler2D\x20bimColorTexture;\x0a\x20\x20\x20\x20uniform\x20sampler2D\x20bimDepthTexture;\x0a\x20\x20\x20\x20in\x20vec2\x20v_textureCoordinates;\x0a\x20\x20\x20\x0a\x20\x20\x20\x20float\x20unpackDepth2(vec4\x20packedDepth)\x0a\x20\x20\x20\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20vec4\x20uu_rgba\x20=\x20round(packedDepth\x20*\x20255.0);\x0a\x20\x20\x20\x20\x20\x20\x20\x20uint\x20uu_rgba_uu\x20=\x20(uint(uu_rgba.r)\x20<<\x2024u)\x20|\x20(uint(uu_rgba.g)\x20<<\x2016u)\x20|\x20(uint(uu_rgba.b)\x20<<\x208u)\x20|\x20(uint(uu_rgba.a));\x0a\x20\x20\x20\x20\x20\x20\x20\x20return\x20uintBitsToFloat(uu_rgba_uu);\x0a\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x0a\x20\x20\x20\x20void\x20main()\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20//\x20閲囨牱棰滆壊鍜屾繁搴x0a\x20\x20\x20\x20\x20\x20\x20\x20vec4\x20color\x20=\x20texture(bimColorTexture,\x20v_textureCoordinates);\x0a\x20\x20\x20\x20\x20\x20\x20\x20vec4\x20zipZV\x20=\x20texture(bimDepthTexture,\x20v_textureCoordinates);\x0a\x20\x20\x20\x20\x20\x20\x20\x20//\x20float\x20zv\x20=\x20czm_unpackDepth(zipZV);\x0a\x20\x20\x20\x20\x20\x20\x20\x20float\x20zv\x20=\x20unpackDepth2(zipZV);\x0a\x20\x20\x20\x20\x20\x20\x20\x20gl_FragDepth\x20=\x20zv;\x0a\x20\x20\x20\x20\x20\x20\x20\x20if(color.a\x20!=\x200.0)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20out_FragColor\x20=\x20color;\x0a\x20\x20\x20\x20\x20\x20\x20\x20}\x20else\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20discard;\x0a\x20\x20\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20}\x0a','target','INDIRECT','ReadMesh','assign','renderDebugTest2BindGroup','function','draw','BYTES_PER_ELEMENT','yxz','zxy','context2','MakeCommandComputeBingGroup2','scene_dataBuffer','RENDER_ATTACHMENT','lastFrameMS','send','CancelInstanceTransformByComponentIds','worker','createSampler','storage','dataLayout','vert_main','clipPlane','SetInstanceTransformByComponentIds','_projection','revokeObjectURL','MakeCommandIntend','configure','2441748uCfjQE','readMesh_dispatchWorkgroupsX','greater','vec2','KeyQ','CameraChange','movementY','\x0d\x0astruct\x20SelfUniform\x20{\x0d\x0a\x20\x20\x20\x20offsetU\x20:\x20f32,\x0d\x0a\x20\x20\x20\x20offsetV\x20:\x20f32,\x0d\x0a\x20\x20\x20\x20moveing\x20:\x20f32,\x0d\x0a};\x0d\x0a\x0d\x0a@group(0)\x20@binding(7)\x20var<uniform>\x20selfUniform\x20:\x20SelfUniform;\x0d\x0a\x0d\x0a@group(0)\x20@binding(0)\x20var\x20samplerLinear\x20:\x20sampler;\x0d\x0a@group(0)\x20@binding(1)\x20var\x20samplerNearest\x20:\x20sampler;\x0d\x0a@group(0)\x20@binding(2)\x20var\x20finalColorTexture\x20:\x20texture_2d<f32>;\x0d\x0a@group(0)\x20@binding(4)\x20var\x20edgeStrengthTexture\x20:\x20texture_2d<f32>;\x0d\x0a@group(0)\x20@binding(5)\x20var\x20packData\x20:\x20texture_2d<u32>;\x0d\x0a@group(0)\x20@binding(6)\x20var\x20instancePtrData\x20:\x20texture_2d<u32>;\x0d\x0a\x0d\x0astruct\x20VertexInput\x20{\x0d\x0a\x20\x20@builtin(instance_index)\x20instanceIndex\x20:\x20u32,\x0d\x0a\x20\x20@builtin(vertex_index)\x20vertexIndex\x20:\x20u32\x0d\x0a}\x0d\x0astruct\x20VertexOutput\x20{\x0d\x0a\x20\x20@builtin(position)\x20position:\x20vec4<f32>,\x0d\x0a\x20\x20@location(0)\x20fragUV\x20:\x20vec2f,\x0d\x0a};\x0d\x0a\x0d\x0a@vertex\x0d\x0afn\x20vert_main(input\x20:VertexInput)\x20->\x20VertexOutput\x20{\x0d\x0a\x0d\x0a\x20\x20\x20\x20const\x20pos\x20=\x20array<vec2<f32>,6>(\x0d\x0a\x20\x20\x20\x20vec2<f32>(-1.0,\x20\x201.0),\x0d\x0a\x20\x20\x20\x20vec2<f32>(-1.0,\x20\x20-1.0),\x0d\x0a\x20\x20\x20\x20vec2<f32>(1.0,\x20\x201.0),\x0d\x0a\x0d\x0a\x20\x20\x20\x20vec2<f32>(1.0,\x20\x201.0),\x0d\x0a\x20\x20\x20\x20vec2<f32>(-1.0,\x20\x20-1.0),\x0d\x0a\x20\x20\x20\x20vec2<f32>(1.0,\x20\x20-1.0),\x0d\x0a\x20\x20\x20\x20);\x0d\x0a\x0d\x0a\x20\x20\x20\x20const\x20uv\x20=\x20array<vec2<f32>,6>(\x0d\x0a\x20\x20\x20\x20vec2<f32>(0,\x20\x200),\x0d\x0a\x20\x20\x20\x20vec2<f32>(0,\x20\x201),\x0d\x0a\x20\x20\x20\x20vec2<f32>(1,\x20\x200),\x0d\x0a\x0d\x0a\x20\x20\x20\x20vec2<f32>(1,\x20\x200),\x0d\x0a\x20\x20\x20\x20vec2<f32>(0,\x20\x201),\x0d\x0a\x20\x20\x20\x20vec2<f32>(1,\x20\x201),\x0d\x0a\x20\x20\x20\x20);\x0d\x0a\x0d\x0a\x20\x20\x20\x20var\x20output\x20:\x20VertexOutput;\x0d\x0a\x20\x20\x20\x20output.position\x20=\x20vec4(pos[input.vertexIndex],\x200.0,\x201.0);\x0d\x0a\x20\x20\x20\x20output.fragUV\x20=\x20uv[input.vertexIndex];\x0d\x0a\x20\x20\x20\x20return\x20output;\x0d\x0a}\x0d\x0a\x0d\x0astruct\x20FragmentOutput\x20{\x0d\x0a\x20\x20@location(0)\x20albedo\x20:\x20vec4<f32>,\x0d\x0a}\x0d\x0a\x0d\x0a@fragment\x0d\x0afn\x20frag_main(input\x20:\x20VertexOutput)\x20->\x20FragmentOutput\x20{\x0d\x0a\x20\x20\x20\x20let\x20edgeStrengthColor\x20=\x20textureSample(edgeStrengthTexture,\x20samplerLinear,\x20input.fragUV);\x0d\x0a\x20\x20\x20\x20let\x20offsetUV\x20=\x20vec2f(input.fragUV\x20-\x20vec2f(selfUniform.offsetU,selfUniform.offsetV));\x0d\x0a\x20\x20\x20\x20var\x20originalColorOffset\x20=\x20linearTosRGB(textureSample(finalColorTexture,\x20samplerLinear,\x20offsetUV).rgb);\x0d\x0a\x0d\x0a\x0d\x0a\x20\x20\x20\x20var\x20finalColor\x20=\x20originalColorOffset;\x0d\x0a\x20\x20\x20\x20if(selfUniform.moveing\x20==\x201){\x0d\x0a\x20\x20\x20\x20\x20\x20\x20\x20if(offsetUV.x\x20<\x200\x20||\x20offsetUV.y\x20<\x200\x20||\x20offsetUV.x\x20>\x201\x20||\x20offsetUV.y\x20>\x201\x20||\x20edgeStrengthColor.r\x20!=\x200){\x0d\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20finalColor\x20=\x20vec3f(0.3);\x0d\x0a\x20\x20\x20\x20\x20\x20\x20\x20}\x0d\x0a\x20\x20\x20\x20}\x0d\x0a\x0d\x0a\x0d\x0a\x20\x20\x20\x20var\x20output\x20:\x20FragmentOutput;\x0d\x0a//\x20\x20output.albedo\x20=\x20vec4((input.normal\x20+\x201)\x20/\x202,\x201.0);\x0d\x0a//\x20\x20\x20\x20output.albedo\x20=\x20vec4(textureSample(normalData,samplerNearest,\x20input.fragUV).xyz,1);\x0d\x0a\x20\x20\x20\x20output.albedo\x20=\x20vec4(finalColor.rgb,1);\x0d\x0a\x20\x20\x20\x20return\x20output;\x0d\x0a\x0d\x0a}\x0d\x0a\x0d\x0a\x0d\x0a//\x20linear\x20<->\x20sRGB\x20conversions\x0d\x0afn\x20linearTosRGB(linea\x20:\x20vec3f)\x20->\x20vec3f\x20{\x0d\x0a\x20\x20\x20\x20if\x20(all(linea\x20<=\x20vec3f(0.0031308,\x200.0031308,\x200.0031308)))\x20{\x0d\x0a\x20\x20\x20\x20\x20\x20\x20\x20return\x20linea\x20*\x2012.92;\x0d\x0a\x20\x20\x20\x20}\x0d\x0a\x20\x20\x20\x20return\x20(pow(abs(linea),\x20vec3f(1.0/2.4,\x201.0/2.4,\x201.0/2.4))\x20*\x201.055)\x20-\x20vec3f(0.055,\x200.055,\x200.055);\x0d\x0a}\x0d\x0a\x0d\x0afn\x20sRGBToLinear(srgb\x20:\x20vec3f)\x20->\x20vec3f\x20{\x0d\x0a\x20\x20\x20\x20if\x20(all(srgb\x20<=\x20vec3f(0.04045,\x200.04045,\x200.04045)))\x20{\x0d\x0a\x20\x20\x20\x20\x20\x20\x20\x20return\x20srgb\x20/\x20vec3f(12.92,\x2012.92,\x2012.92);\x0d\x0a\x20\x20\x20\x20}\x0d\x0a\x20\x20\x20\x20return\x20pow((srgb\x20+\x20vec3f(0.055,\x200.055,\x200.055))\x20/\x20vec3f(1.055,\x201.055,\x201.055),\x20vec3f(2.4,\x202.4,\x202.4));\x0d\x0a}','getWorker','copy','worldMatrix','meshRenderAtomic_InitData_VmBuffer','getBindGroupLayout','lightBodiesBounceCount','InitCesium','SetModelTransform','vm_target_mesh','all','LightBodiesAssociateIntend','toString','VisibleTreeUpdate','auto','leftHeading','readPickPosition_VmBuffer','maxRenderInstance','FrameSelection','orm_Texture','maxTextureSize','lightBodiesAssociate_ComputePipeline','streamRender_particleColor_Texture','renderToCanvasPipelineLabel','yzx','clientY','CLAMP_TO_EDGE','acos','lightBodiesAssociateCount','aspect','instancesArea_atomicData_VmBuffer','meshRenderBindGroup','\x0d\x0a@group(0)\x20@binding(1)\x20var\x20finalColor_texture\x20:\x20texture_storage_2d<rgba8unorm,write>;\x0d\x0a@group(0)\x20@binding(2)\x20var\x20packData\x20:\x20texture_storage_2d<rgba32uint,read>;\x0d\x0a\x0d\x0astruct\x20InputData\x20{\x0d\x0a\x20\x20\x20@builtin(local_invocation_id)\x20local_id:\x20vec3<u32>,\x0d\x0a\x20\x20\x20@builtin(local_invocation_index)\x20local_index:\x20u32,\x0d\x0a\x20\x20\x20@builtin(global_invocation_id)\x20global_id:\x20vec3<u32>,\x0d\x0a}\x0d\x0a\x0d\x0a@compute\x20@workgroup_size(16,16)\x0d\x0afn\x20main(input:\x20InputData)\x20{\x0d\x0a\x0d\x0a\x20\x20\x20\x20//\x20鑾峰彇绾圭悊灏哄骞舵鏌ヨ竟鐣孿x0d\x0a\x20\x20\x20\x20let\x20texSizeU\x20=\x20textureDimensions(finalColor_texture);\x0d\x0a\x20\x20\x20\x20if\x20(any(input.global_id.xy\x20>=\x20texSizeU.xy))\x20{\x0d\x0a\x20\x20\x20\x20\x20\x20\x20\x20return;\x0d\x0a\x20\x20\x20\x20}\x0d\x0a\x20\x20\x20\x20let\x20texSize\x20=\x20vec2<f32>(texSizeU.xy);\x0d\x0a\x0d\x0a\x20\x20\x20\x20textureStore(finalColor_texture,\x20input.global_id.xy,\x20vec4<f32>(0,0,0,1));\x0d\x0a\x20\x20\x20\x20let\x20centerNormal\x20=\x20unpack4x8snorm(textureLoad(packData,vec2(input.global_id.x\x20\x20\x20\x20,input.global_id.y\x20\x20\x20\x20)).x).xyz;\x0d\x0a\x20\x20\x20\x20if(centerNormal.x\x20!=\x200\x20||\x20centerNormal.y\x20!=\x200\x20||\x20centerNormal.z\x20!=\x200){\x0d\x0a\x20\x20\x20\x20\x20\x20\x20\x20let\x20neighborNormal1\x20=\x20unpack4x8snorm(textureLoad(packData,vec2(input.global_id.x\x20-\x201,input.global_id.y\x20-\x201)).x).xyz;\x0d\x0a\x20\x20\x20\x20\x20\x20\x20\x20let\x20neighborNormal2\x20=\x20unpack4x8snorm(textureLoad(packData,vec2(input.global_id.x\x20+\x201,input.global_id.y\x20+\x201)).x).xyz;\x0d\x0a\x20\x20\x20\x20\x20\x20\x20\x20let\x20neighborNormal3\x20=\x20unpack4x8snorm(textureLoad(packData,vec2(input.global_id.x\x20+\x201,input.global_id.y\x20-\x201)).x).xyz;\x0d\x0a\x20\x20\x20\x20\x20\x20\x20\x20let\x20neighborNormal4\x20=\x20unpack4x8snorm(textureLoad(packData,vec2(input.global_id.x\x20-\x201,input.global_id.y\x20+\x201)).x).xyz;\x0d\x0a//\x20\x20\x20\x20\x20\x20\x20\x20let\x20neighborNormal6\x20=\x20unpack4x8snorm(textureLoad(packData,vec2(input.global_id.x\x20+\x201,input.global_id.y\x20\x20\x20\x20)).x).xyz;\x0d\x0a//\x20\x20\x20\x20\x20\x20\x20\x20let\x20neighborNormal7\x20=\x20unpack4x8snorm(textureLoad(packData,vec2(input.global_id.x\x20-\x201,input.global_id.y\x20\x20\x20\x20)).x).xyz;\x0d\x0a//\x20\x20\x20\x20\x20\x20\x20\x20let\x20neighborNormal8\x20=\x20unpack4x8snorm(textureLoad(packData,vec2(input.global_id.x\x20\x20\x20\x20,input.global_id.y\x20+\x201)).x).xyz;\x0d\x0a//\x20\x20\x20\x20\x20\x20\x20\x20let\x20neighborNormal9\x20=\x20unpack4x8snorm(textureLoad(packData,vec2(input.global_id.x,\x20\x20\x20\x20input.global_id.y\x20-\x201)).x).xyz;\x0d\x0a\x0d\x0a\x0d\x0a\x20\x20\x20\x20\x20\x20\x20\x20let\x20edgeStrength\x20=\x20(\x20abs(dot(centerNormal,\x20neighborNormal1))\x0d\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20+\x20abs(dot(centerNormal,\x20neighborNormal2))\x0d\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20+\x20abs(dot(centerNormal,\x20neighborNormal3))\x0d\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20+\x20abs(dot(centerNormal,\x20neighborNormal4)))\x20/\x204;\x0d\x0a\x0d\x0a\x20\x20\x20\x20\x20\x20\x20\x20if(edgeStrength\x20<\x200.6){\x0d\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20textureStore(finalColor_texture,\x20input.global_id.xy,\x20vec4<f32>(1));\x0d\x0a\x20\x20\x20\x20\x20\x20\x20\x20}\x0d\x0a\x20\x20\x20\x20}\x0d\x0a}','finalDisplayRenderPassDescriptor','operateVmBuffer','meshRenderInstancePtrTexture','oneOverLog2FarDepthFromNearPlusOne','lightBodiesSize','direction','context1','upRightY','round','length','addEventListener','transformQuat','resolveQuerySet','explodeParam','renderToCanvasPipeline','PickId','create','allow_read_renderMaterial','copyTextureToBuffer','SetInstanceMaterial','abs','indirect_render_VmBuffer','alpha_depth_Texture','VoxelRender','count','KeyS','main','LightBodiesRemoveDuplicatesIntend','blur_tileDim','prototype','baseUrl','EdgeStrengthIntend','LightBodiesBounceOneIntend','LightBodiesAssociate','createQuerySet','log','getMappedRange','BoundingSphere','byteLength','renderDebugTest3BindGroup','InstancesAreaIntend','hasOwnProperty','r16float','executeBundles','camera','data','readPickPosition_noLocking','projectionMatrix','modelId','features','finalDisplayPipeline','ConfigureCanvasSize','streamRender_Uniform_VmBuffer','UNIFORM','_position','readMesh_Uniform_DataViewF32','SpaceIndex_Heartbeat','forward','\x0d\x0a@group(0)\x20@binding(0)\x20var<storage,read_write>\x20renderIndex_opaque:\x20array<u32>;\x0d\x0a@group(0)\x20@binding(1)\x20var<storage,read_write>\x20lightBodiesSpace:\x20array<u32>;\x0d\x0a@group(0)\x20@binding(2)\x20var<storage,read_write>\x20indirect_render:\x20array<u32>;\x0d\x0a@group(0)\x20@binding(3)\x20var<storage,read_write>\x20renderMaterial:\x20array<u32>;\x0d\x0a@group(0)\x20@binding(4)\x20var<storage,read_write>\x20instanceData:\x20array<u32>;\x0d\x0a@group(0)\x20@binding(5)\x20var<uniform>\x20scene:\x20SceneInfoStruct;\x0d\x0a@group(0)\x20@binding(6)\x20var<storage,read_write>\x20lightBodiesBounceOne:\x20array<u32>;\x0d\x0a@group(0)\x20@binding(7)\x20var<storage,read_write>\x20lightBodiesBounce_Indirect:\x20array<u32>;\x0d\x0a@group(0)\x20@binding(8)\x20var<storage,read_write>\x20readMesh_atomic:\x20array<i32>;\x0d\x0a@group(0)\x20@binding(9)\x20var<storage,read_write>\x20lightInfo:\x20LightInfoStruct;\x0d\x0a\x0d\x0astruct\x20InputData\x20{\x0d\x0a\x20\x20\x20@builtin(local_invocation_id)\x20local_id:\x20vec3<u32>,\x0d\x0a\x20\x20\x20@builtin(local_invocation_index)\x20local_index:\x20u32,\x0d\x0a\x20\x20\x20@builtin(global_invocation_id)\x20global_id:\x20vec3<u32>,\x0d\x0a}\x0d\x0a\x0d\x0aoverride\x20multiDrawIndirect\x20:\x20u32;\x0d\x0a\x0d\x0a@compute\x20@workgroup_size(1)\x0d\x0afn\x20main(input:\x20InputData)\x20{\x0d\x0a\x0d\x0a\x0d\x0alet\x20boxMin\x20=\x20vec3f(f32(readMesh_atomic[0]),f32(readMesh_atomic[1]),f32(readMesh_atomic[2]))\x20-\x201;\x0d\x0alet\x20boxMax\x20=\x20vec3f(f32(readMesh_atomic[3]),f32(readMesh_atomic[4]),f32(readMesh_atomic[5]))\x20+\x201;\x0d\x0areadMesh_atomic[0]\x20=\x202147483647;\x0d\x0areadMesh_atomic[1]\x20=\x202147483647;\x0d\x0areadMesh_atomic[2]\x20=\x202147483647;\x0d\x0areadMesh_atomic[3]\x20=\x20-2147483648;\x0d\x0areadMesh_atomic[4]\x20=\x20-2147483648;\x0d\x0areadMesh_atomic[5]\x20=\x20-2147483648;\x0d\x0alet\x20pos_center\x20=\x20boxMin\x20+\x20(boxMax\x20-\x20boxMin)\x20*\x200.5;\x0d\x0a\x0d\x0alet\x20parallelLightDir\x20=\x20normalize(vec3<f32>(lightInfo.dir_x,lightInfo.dir_y,lightInfo.dir_z));\x0d\x0a\x0d\x0a//let\x20forward\x20=\x20normalize(vec3(-scene.viewMatrix[0][2],\x20-scene.viewMatrix[1][2],\x20-scene.viewMatrix[2][2]));\x20//\x20Z\x20杞村弽鍚慭x0d\x0a//let\x20right\x20=\x20normalize(vec3(scene.viewMatrix[0][0],\x20scene.viewMatrix[1][0],\x20scene.viewMatrix[2][0]));\x20\x20\x20\x20\x20//\x20X\x20杞碶x0d\x0a//let\x20up\x20=\x20normalize(vec3(scene.viewMatrix[0][1],\x20scene.viewMatrix[1][1],\x20scene.viewMatrix[2][1]));\x20\x20\x20\x20\x20\x20\x20\x20//\x20Y\x20杞碶x0d\x0a\x0d\x0alet\x20tempView\x20=\x20lookAt(pos_center,pos_center\x20-\x20parallelLightDir,vec3f(0,1,0));\x0d\x0a\x0d\x0a\x20\x20let\x20AABBVertices\x20=\x20array<vec4f,8>(\x0d\x0a\x20\x20\x20\x20vec4f(boxMin[0],\x20boxMin[1],\x20boxMin[2],\x201.0),\x0d\x0a\x20\x20\x20\x20vec4f(boxMax[0],\x20boxMin[1],\x20boxMin[2],\x201.0),\x0d\x0a\x20\x20\x20\x20vec4f(boxMax[0],\x20boxMax[1],\x20boxMin[2],\x201.0),\x0d\x0a\x20\x20\x20\x20vec4f(boxMin[0],\x20boxMax[1],\x20boxMin[2],\x201.0),\x0d\x0a\x20\x20\x20\x20vec4f(boxMin[0],\x20boxMin[1],\x20boxMax[2],\x201.0),\x0d\x0a\x20\x20\x20\x20vec4f(boxMax[0],\x20boxMin[1],\x20boxMax[2],\x201.0),\x0d\x0a\x20\x20\x20\x20vec4f(boxMax[0],\x20boxMax[1],\x20boxMax[2],\x201.0),\x0d\x0a\x20\x20\x20\x20vec4f(boxMin[0],\x20boxMax[1],\x20boxMax[2],\x201.0)\x0d\x0a\x20\x20);\x0d\x0a\x20\x20\x0d\x0alet\x20lightView_pos0\x20=\x20tempView\x20*\x20\x20AABBVertices[0];\x0d\x0alet\x20lightView_pos1\x20=\x20tempView\x20*\x20\x20AABBVertices[1];\x0d\x0alet\x20lightView_pos2\x20=\x20tempView\x20*\x20\x20AABBVertices[2];\x0d\x0alet\x20lightView_pos3\x20=\x20tempView\x20*\x20\x20AABBVertices[3];\x0d\x0alet\x20lightView_pos4\x20=\x20tempView\x20*\x20\x20AABBVertices[4];\x0d\x0alet\x20lightView_pos5\x20=\x20tempView\x20*\x20\x20AABBVertices[5];\x0d\x0alet\x20lightView_pos6\x20=\x20tempView\x20*\x20\x20AABBVertices[6];\x0d\x0alet\x20lightView_pos7\x20=\x20tempView\x20*\x20\x20AABBVertices[7];\x0d\x0a\x0d\x0avar\x20lightView_pos_max\x20=\x20max(lightView_pos0,lightView_pos1);\x0d\x0alightView_pos_max\x20=\x20max(lightView_pos_max,lightView_pos2);\x0d\x0alightView_pos_max\x20=\x20max(lightView_pos_max,lightView_pos3);\x0d\x0alightView_pos_max\x20=\x20max(lightView_pos_max,lightView_pos4);\x0d\x0alightView_pos_max\x20=\x20max(lightView_pos_max,lightView_pos5);\x0d\x0alightView_pos_max\x20=\x20max(lightView_pos_max,lightView_pos6);\x0d\x0alightView_pos_max\x20=\x20max(lightView_pos_max,lightView_pos7);\x0d\x0alightView_pos_max\x20=\x20abs(lightView_pos_max);\x0d\x0a\x0d\x0alet\x20zLenght\x20=\x20lightView_pos_max.z\x20*\x204;\x0d\x0alet\x20light_cameraPos\x20=\x20pos_center\x20+\x20parallelLightDir\x20*\x20zLenght;\x0d\x0alet\x20lightView\x20=\x20lookAt(light_cameraPos,pos_center,vec3f(0,1,0));\x0d\x0alet\x20lightProjection\x20=\x20ortho(-lightView_pos_max.x,lightView_pos_max.x,-lightView_pos_max.y,lightView_pos_max.y,zLenght*2,0);\x0d\x0alightInfo.lightViewProjMatrix\x20=\x20lightProjection\x20*\x20lightView;\x0d\x0a\x0d\x0a\x0d\x0a\x0d\x0a\x0d\x0a\x0d\x0a//if(1u\x20==\x20scene.cameraUpdate){\x0d\x0a\x20\x20\x20\x20lightBodiesBounceOne[0]\x20=\x20min(2000000u,instanceData[4]);\x0d\x0a\x20\x20\x20\x20instanceData[4]\x20=\x201;\x0d\x0a\x20\x20\x20\x20lightBodiesBounce_Indirect[0]\x20=\x20lightBodiesBounceOne[0]\x20/\x201024\x20+\x201;\x0d\x0a\x0d\x0a\x20\x20\x20\x20lightBodiesSpace[10]\x20=\x202;\x0d\x0a//}\x0d\x0a\x0d\x0a\x20\x20\x20\x20renderMaterial[0]\x20=\x20indirect_render[3]\x20+\x202;\x0d\x0a\x20\x20\x20\x20if(multiDrawIndirect\x20==\x201u){\x0d\x0a\x20\x20\x20\x20\x20\x20\x20\x20indirect_render[0]\x20=\x20indirect_render[0]\x20/\x204;\x0d\x0a\x20\x20\x20\x20\x20\x20\x20\x20indirect_render[1]\x20=\x20indirect_render[1]\x20/\x204;\x0d\x0a\x20\x20\x20\x20}else{\x0d\x0a\x20\x20\x20\x20\x20\x20\x20\x20let\x20opaque\x20=\x20indirect_render[0];\x0d\x0a\x20\x20\x20\x20\x20\x20\x20\x20let\x20transparent\x20=\x20indirect_render[1];\x0d\x0a\x0d\x0a\x20\x20\x20\x20\x20\x20\x20\x20var\x20sumCount_opaque\x20=\x200u;\x0d\x0a\x20\x20\x20\x20\x20\x20\x20\x20for(var\x20i\x20=\x200u\x20;\x20i\x20<\x20opaque;\x20i+=2u){\x0d\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20sumCount_opaque\x20=\x20renderIndex_opaque[i]\x20+\x20sumCount_opaque;\x0d\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20renderIndex_opaque[i]\x20=\x20sumCount_opaque;\x0d\x0a\x20\x20\x20\x20\x20\x20\x20\x20}\x0d\x0a\x0d\x0a\x20\x20\x20\x20\x20\x20\x20\x20indirect_render[0]\x20=\x20sumCount_opaque;\x0d\x0a\x20\x20\x20\x20\x20\x20\x20\x20indirect_render[1]\x20=\x201;\x0d\x0a\x20\x20\x20\x20\x20\x20\x20\x20indirect_render[2]\x20=\x200;\x0d\x0a\x20\x20\x20\x20\x20\x20\x20\x20indirect_render[3]\x20=\x20opaque;\x0d\x0a\x20\x20\x20\x20}\x0d\x0a}\x0d\x0a\x0d\x0afn\x20lookAt(eye:\x20vec3<f32>,\x20target_:\x20vec3<f32>,\x20up:\x20vec3<f32>)\x20->\x20mat4x4<f32>\x20{\x0d\x0a\x20\x20\x20\x20let\x20zAxis\x20=\x20normalize(eye\x20-\x20target_);//back\x0d\x0a\x20\x20\x20\x20let\x20xAxis\x20=\x20normalize(cross(up,\x20zAxis));//right\x0d\x0a\x20\x20\x20\x20let\x20yAxis\x20=\x20normalize(cross(zAxis,\x20xAxis));//up\x0d\x0a\x20\x20\x20\x20//\x20鏋勫缓瑙嗗浘鐭╅樀\x0d\x0a\x20\x20\x20\x20return\x20mat4x4<f32>(\x0d\x0a\x20\x20\x20\x20\x20\x20\x20\x20vec4<f32>(xAxis.x,\x20yAxis.x,\x20zAxis.x,\x200.0),\x0d\x0a\x20\x20\x20\x20\x20\x20\x20\x20vec4<f32>(xAxis.y,\x20yAxis.y,\x20zAxis.y,\x200.0),\x0d\x0a\x20\x20\x20\x20\x20\x20\x20\x20vec4<f32>(xAxis.z,\x20yAxis.z,\x20zAxis.z,\x200.0),\x0d\x0a\x20\x20\x20\x20\x20\x20\x20\x20vec4<f32>(-dot(xAxis,\x20eye),\x20-dot(yAxis,\x20eye),\x20-dot(zAxis,\x20eye),\x201.0)\x0d\x0a\x20\x20\x20\x20);\x0d\x0a}\x0d\x0a\x0d\x0a\x0d\x0afn\x20ortho(left:\x20f32,\x20right:\x20f32,\x20bottom:\x20f32,\x20top:\x20f32,\x20near:\x20f32,\x20far:\x20f32)\x20->\x20mat4x4<f32>\x20{\x0d\x0a\x20\x20\x20\x20return\x20mat4x4<f32>(\x0d\x0a\x20\x20\x20\x20\x20\x20\x20\x20vec4<f32>(2\x20/\x20(right\x20-\x20left),\x200,\x200,\x200.0),\x0d\x0a\x20\x20\x20\x20\x20\x20\x20\x20vec4<f32>(0,2\x20/\x20(top\x20-\x20bottom),0,0),\x0d\x0a\x20\x20\x20\x20\x20\x20\x20\x20vec4<f32>(0,0,1\x20/\x20(near\x20-\x20far),0),\x0d\x0a\x20\x20\x20\x20\x20\x20\x20\x20vec4<f32>(\x0d\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20(right\x20+\x20left)\x20/\x20(left\x20-\x20right),\x0d\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20(top\x20+\x20bottom)\x20/\x20(bottom\x20-\x20top),\x0d\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20near\x20/\x20(near\x20-\x20far)\x0d\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20,1),\x0d\x0a\x20\x20\x20\x20);\x0d\x0a}','open','finalDisplayBindGroup','renderDebugTest1Pipeline','\x0d\x0a@group(0)\x20@binding(0)\x20var<uniform>\x20scene:\x20SceneInfoStruct;\x0d\x0a@group(0)\x20@binding(1)\x20var<storage,read>\x20modelData:\x20array<f32>;\x0d\x0a@group(0)\x20@binding(2)\x20var<storage,read>\x20instanceData:\x20array<f32>;\x0d\x0a@group(0)\x20@binding(3)\x20var<storage,read>\x20meshData:\x20array<f32>;\x0d\x0a@group(0)\x20@binding(4)\x20var\x20samplerNearest\x20:\x20sampler;\x0d\x0a@group(0)\x20@binding(5)\x20var<uniform>\x20clipPlane:\x20array<vec4<f32>,21>;\x0d\x0a@group(0)\x20@binding(6)\x20var\x20albedo_texture\x20:\x20texture_2d<f32>;\x0d\x0a@group(0)\x20@binding(7)\x20var\x20normal_texture\x20:\x20texture_2d<f32>;\x0d\x0a@group(0)\x20@binding(8)\x20var\x20orm_texture\x20:\x20texture_2d<f32>;\x0d\x0a@group(0)\x20@binding(9)\x20var<storage,read_write>\x20lightBodiesSpace:\x20array<u32>;\x0d\x0a@group(0)\x20@binding(10)\x20var<storage,read_write>\x20lightBodiesSpaceAdd:\x20array<u32>;\x0d\x0a@group(0)\x20@binding(11)\x20var<storage,read_write>\x20selfAtomicData:\x20array<atomic<u32>>;\x0d\x0a@group(0)\x20@binding(12)\x20var<storage,read_write>\x20transparentColorData:\x20array<f32>;\x0d\x0a@group(0)\x20@binding(13)\x20var<storage,read>\x20meshLodData:\x20array<f32>;\x0d\x0a@group(0)\x20@binding(14)\x20var<storage,read>\x20operateData:\x20array<f32>;\x0d\x0a@group(1)\x20@binding(0)\x20var<storage,read>\x20renderIndex:\x20array<u32>;\x0d\x0a\x0d\x0astruct\x20Model\x20{\x0d\x0a\x20\x20\x20\x20id:\x20u32,\x0d\x0a\x20\x20\x20\x20transform:\x20mat4x4<f32>,\x0d\x0a\x20\x20\x20\x20status:\x20u32,\x0d\x0a};\x0d\x0a\x0d\x0afn\x20getModel(offset:u32)\x20->\x20Model\x20{\x0d\x0a\x20\x20\x20\x20var\x20model\x20:\x20Model;\x0d\x0a\x20\x20\x20\x20model.id\x20=\x20bitcast<u32>(modelData[offset\x20+\x2016]);\x0d\x0a\x0d\x0a\x20\x20\x20\x20model.transform\x20=\x20mat4x4<f32>(\x0d\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20modelData[offset],modelData[offset\x20+\x201],modelData[offset\x20+\x202],modelData[offset\x20+\x203],\x0d\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20modelData[offset\x20+\x204],modelData[offset\x20+\x205],modelData[offset\x20+\x206],modelData[offset\x20+\x207],\x0d\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20modelData[offset\x20+\x208],modelData[offset\x20+\x209],modelData[offset\x20+\x2010],modelData[offset\x20+\x2011],\x0d\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20modelData[offset\x20+\x2012],modelData[offset\x20+\x2013],modelData[offset\x20+\x2014],modelData[offset\x20+\x2015]);\x0d\x0a\x0d\x0a\x20\x20\x20\x20model.status\x20=\x20bitcast<u32>(modelData[offset\x20+\x2017]);\x0d\x0a\x0d\x0a\x20\x20\x20\x20return\x20model;\x0d\x0a}\x0d\x0a\x0d\x0a\x0d\x0astruct\x20Instance\x20{\x0d\x0a\x20\x20\x20\x20id:\x20u32,\x0d\x0a\x20\x20\x20\x20transform:\x20mat4x4<f32>,\x0d\x0a\x20\x20\x20\x20modelPtr:\x20u32,\x0d\x0a\x20\x20\x20\x20meshLodPtr:\x20u32,\x0d\x0a\x20\x20\x20\x20status:\x20u32,\x0d\x0a\x20\x20\x20\x20materialPtr:\x20u32,\x0d\x0a\x20\x20\x20\x20operatePtr:\x20u32,\x0d\x0a\x20\x20\x20\x20//\x20鍖呭洿鐩抃x0d\x0a\x20\x20\x20\x20boxMin:\x20vec3<f32>,\x0d\x0a\x20\x20\x20\x20boxMax:\x20vec3<f32>,\x0d\x0a};\x0d\x0a\x0d\x0a\x0d\x0afn\x20getInstance(offset:u32)\x20->\x20Instance\x20{\x0d\x0a\x20\x20\x20\x20var\x20ins\x20:\x20Instance;\x0d\x0a\x0d\x0a\x20\x20\x20\x20ins.modelPtr\x20=\x20bitcast<u32>(instanceData[offset]);\x0d\x0a\x20\x20\x20\x20ins.id\x20=\x20bitcast<u32>(instanceData[offset\x20+\x201]);\x0d\x0a\x0d\x0a\x20\x20\x20\x20ins.transform\x20=\x20mat4x4<f32>(\x0d\x0a\x20\x20\x20\x20instanceData[offset\x20+\x203],instanceData[offset\x20+\x204],instanceData[offset\x20+\x205],0,\x0d\x0a\x20\x20\x20\x20instanceData[offset\x20+\x206],instanceData[offset\x20+\x207],instanceData[offset\x20+\x208],0,\x0d\x0a\x20\x20\x20\x20instanceData[offset\x20+\x209],instanceData[offset\x20+\x2010],instanceData[offset\x20+\x2011],0,\x0d\x0a\x20\x20\x20\x20instanceData[offset\x20+\x2012],instanceData[offset\x20+\x2013],instanceData[offset\x20+\x2014],1);\x0d\x0a\x0d\x0a\x20\x20\x20\x20ins.meshLodPtr\x20=\x20bitcast<u32>(instanceData[offset\x20+\x2025]);\x0d\x0a\x20\x20\x20\x20ins.operatePtr\x20=\x20bitcast<u32>(instanceData[offset\x20+\x2021]);\x0d\x0a\x20\x20\x20\x20ins.status\x20=\x20bitcast<u32>(instanceData[offset\x20+\x2022]);\x0d\x0a\x20\x20\x20\x20ins.materialPtr\x20=\x20bitcast<u32>(instanceData[offset\x20+\x2023]);\x0d\x0a\x0d\x0a\x20\x20\x20\x20ins.boxMin\x20=\x20vec3<f32>(bitcast<f32>(instanceData[offset\x20+\x2015]),bitcast<f32>(instanceData[offset\x20+\x2016]),bitcast<f32>(instanceData[offset\x20+\x2017]));\x0d\x0a\x20\x20\x20\x20ins.boxMax\x20=\x20vec3<f32>(bitcast<f32>(instanceData[offset\x20+\x2018]),bitcast<f32>(instanceData[offset\x20+\x2019]),bitcast<f32>(instanceData[offset\x20+\x2020]));\x0d\x0a\x0d\x0a\x0d\x0a\x20\x20\x20\x20return\x20ins;\x0d\x0a}\x0d\x0a\x0d\x0astruct\x20MeshLodInfo\x20{\x0d\x0a\x20\x20\x20\x20meshId:\x20u32,\x0d\x0a\x20\x20\x20\x20density:\x20f32,\x0d\x0a\x20\x20\x20\x20materialPtr:\x20u32,\x0d\x0a\x20\x20\x20\x20verticesCount:\x20u32,\x0d\x0a\x20\x20\x20\x20meshPtr:\x20u32,\x0d\x0a};\x0d\x0a\x0d\x0afn\x20getMeshLodInfo(meshLodPtr:u32)\x20->\x20MeshLodInfo\x20{\x0d\x0a\x0d\x0a\x20\x20\x20\x20var\x20meshLodInfo\x20:\x20MeshLodInfo;\x0d\x0a\x0d\x0a//\x20\x20\x20\x20meshLodInfo.meshId\x20=\x20bitcast<u32>(meshLodData[meshLodPtr]);\x0d\x0a//\x20\x20\x20\x20meshLodInfo.density\x20=\x20meshLodData[meshLodPtr\x20+\x201];\x0d\x0a\x20\x20\x20\x20meshLodInfo.materialPtr\x20=\x20bitcast<u32>(meshLodData[meshLodPtr\x20+\x202]);\x0d\x0a//\x20\x20\x20\x20meshLodInfo.verticesCount\x20=\x20bitcast<u32>(meshLodData[meshLodPtr\x20+\x203]);\x0d\x0a\x20\x20\x20\x20meshLodInfo.meshPtr\x20=\x20bitcast<u32>(meshLodData[meshLodPtr\x20+\x204]);\x0d\x0a\x0d\x0a\x20\x20\x20\x20return\x20meshLodInfo;\x0d\x0a\x0d\x0a}\x0d\x0a\x0d\x0astruct\x20Position\x20{\x0d\x0a\x20\x20\x20\x20position:\x20vec3<f32>,\x0d\x0a\x20\x20\x20\x20normal:\x20vec3<f32>,\x0d\x0a\x20\x20\x20\x20uv:\x20vec2<f32>,\x0d\x0a};\x0d\x0a\x0d\x0afn\x20getPosition(offset:u32,vertexIndex:u32)\x20->\x20Position\x20{\x0d\x0a\x20\x20\x20\x20var\x20pos\x20:\x20Position;\x0d\x0a\x20\x20\x20\x20var\x20vertexIndexTemp\x20=\x20vertexIndex\x20*\x203;\x0d\x0a\x20\x20\x20\x20var\x20positionOffset\x20=\x20bitcast<u32>(meshData[offset\x20+\x20vertexIndexTemp]);\x0d\x0a\x20\x20\x20\x20var\x20normalOffset\x20=\x20bitcast<u32>(meshData[offset\x20+\x20vertexIndexTemp\x20+\x201]);\x0d\x0a\x20\x20\x20\x20var\x20uvOffset\x20=\x20bitcast<u32>(meshData[offset\x20+\x20vertexIndexTemp\x20+\x202]);\x0d\x0a\x0d\x0a\x20\x20\x20\x20pos.position\x20=\x20vec3(meshData[offset\x20+\x20positionOffset],meshData[offset\x20+\x20positionOffset\x20+\x201],meshData[offset\x20+\x20positionOffset\x20+\x202]);\x0d\x0a\x20\x20\x20\x20pos.normal\x20=\x20vec3(meshData[offset\x20+\x20normalOffset],meshData[offset\x20+\x20normalOffset\x20+\x201],meshData[offset\x20+\x20normalOffset\x20+\x202]);\x0d\x0a\x20\x20\x20\x20pos.uv\x20=\x20vec2(meshData[offset\x20+\x20uvOffset],meshData[offset\x20+\x20uvOffset\x20+\x201]);\x0d\x0a\x0d\x0a\x20\x20\x20\x20return\x20pos;\x0d\x0a}\x0d\x0a\x0d\x0astruct\x20VertexInput\x20{\x0d\x0a\x20\x20@builtin(vertex_index)\x20vertexIndex\x20:\x20u32,\x0d\x0a\x20\x20@builtin(instance_index)\x20instanceIndex\x20:\x20u32\x0d\x0a}\x0d\x0astruct\x20VertexOutput\x20{\x0d\x0a\x20\x20@builtin(position)\x20position:\x20vec4<f32>,\x0d\x0a\x20\x20@location(0)\x20@interpolate(flat)\x20instancePtr:\x20u32,\x0d\x0a\x20\x20@location(1)\x20uv:\x20vec2<f32>,\x0d\x0a\x20\x20@location(2)\x20wordPosition:\x20vec4<f32>,\x0d\x0a\x20\x20@location(3)\x20@interpolate(flat)\x20materialPtr:\x20u32,\x0d\x0a\x20\x20@location(4)\x20prev_position:\x20vec4<f32>,\x0d\x0a\x20\x20@location(5)\x20normal:\x20vec3<f32>,\x0d\x0a};\x0d\x0a\x0d\x0a@vertex\x0d\x0afn\x20vert_main(input\x20:VertexInput)\x20->\x20VertexOutput\x20{\x0d\x0a\x0d\x0a\x20\x20\x20\x20//\x20instancePtr,vertexIndex\x0d\x0a\x20\x20\x20\x20let\x20ri\x20=\x20vec2<u32>(input.instanceIndex,input.vertexIndex);\x0d\x0a\x20\x20\x20\x20//\x20let\x20ri\x20=\x20getRenderIndex(input);\x0d\x0a\x0d\x0a\x20\x20\x20\x20let\x20ins\x20=\x20getInstance(ri[0]);\x0d\x0a\x20\x20\x20\x20let\x20model\x20=\x20getModel(ins.modelPtr);\x0d\x0a\x0d\x0a\x20\x20\x20\x20let\x20meshLodInfo\x20=\x20getMeshLodInfo(ins.meshLodPtr);\x0d\x0a\x20\x20\x20\x20var\x20pos\x20:\x20Position;\x0d\x0a\x20\x20\x20\x20if(meshLodInfo.meshPtr\x20!=\x200){\x0d\x0a\x20\x20\x20\x20\x20\x20\x20\x20pos\x20=\x20getPosition(meshLodInfo.meshPtr,ri[1]);\x0d\x0a\x20\x20\x20\x20}\x0d\x0a\x0d\x0a\x20\x20\x20\x20var\x20output:\x20VertexOutput;\x0d\x0a\x20\x20\x20\x20output.wordPosition\x20=\x20model.transform\x20*\x20ins.transform\x20*\x20vec4(pos.position,1);\x0d\x0a//\x20\x20\x20\x20output.position\x20=\x20scene.projectionMatrix\x20*\x20scene.viewMatrix\x20*\x20output.wordPosition;\x0d\x0a\x20\x20\x20\x20if(ins.operatePtr\x20!=0){\x0d\x0a\x20\x20\x20\x20\x20\x20\x20\x20let\x20operateTransform\x20=\x20mat4x4<f32>(\x0d\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20operateData[ins.operatePtr],operateData[ins.operatePtr\x20+\x201],operateData[ins.operatePtr\x20+\x202],operateData[ins.operatePtr\x20+\x203],\x0d\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20operateData[ins.operatePtr\x20+\x204],operateData[ins.operatePtr\x20+\x205],operateData[ins.operatePtr\x20+\x206],operateData[ins.operatePtr\x20+\x207],\x0d\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20operateData[ins.operatePtr\x20+\x208],operateData[ins.operatePtr\x20+\x209],operateData[ins.operatePtr\x20+\x2010],operateData[ins.operatePtr\x20+\x2011],\x0d\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20operateData[ins.operatePtr\x20+\x2012],operateData[ins.operatePtr\x20+\x2013],operateData[ins.operatePtr\x20+\x2014],operateData[ins.operatePtr\x20+\x2015]);\x0d\x0a\x20\x20\x20\x20\x20\x20\x20\x20output.wordPosition\x20=\x20operateTransform\x20*\x20output.wordPosition;\x0d\x0a\x20\x20\x20\x20}\x0d\x0a\x0d\x0a\x20\x20\x20\x20if\x20(operateData[0]\x20!=\x200.0)\x20{\x0d\x0a\x20\x20\x20\x20\x20\x20\x20\x20let\x20instanceCenterWorld\x20=\x20\x20(model.transform\x20*\x20vec4((ins.boxMin\x20+\x20ins.boxMax)\x20*\x200.5,\x201.0)).xyz;\x0d\x0a\x20\x20\x20\x20\x20\x20\x20\x20if\x20(operateData[0]\x20==\x201.0)\x20{\x0d\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20let\x20explodeNormal\x20=\x20vec3(1.0,\x200.0,\x200.0);\x0d\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20let\x20explodeLength\x20=\x20instanceCenterWorld.x\x20-\x20operateData[3];\x0d\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20if\x20(operateData[2]\x20>\x20abs(explodeLength))\x20{\x0d\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20output.wordPosition\x20=\x20vec4(output.wordPosition.xyz\x20+\x20explodeNormal\x20*\x20explodeLength\x20*\x20operateData[1],1);\x0d\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20}\x0d\x0a\x20\x20\x20\x20\x20\x20\x20\x20}\x20else\x20if\x20(operateData[0]\x20==\x202.0)\x20{\x0d\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20let\x20explodeNormal\x20=\x20vec3(0.0,\x201.0,\x200.0);\x0d\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20let\x20explodeLength\x20=\x20instanceCenterWorld.y\x20-\x20operateData[4];\x0d\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20if\x20(operateData[2]\x20>\x20abs(explodeLength))\x20{\x0d\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20output.wordPosition\x20=\x20vec4(output.wordPosition.xyz\x20+\x20explodeNormal\x20*\x20explodeLength\x20*\x20operateData[1],1);\x0d\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20}\x0d\x0a\x20\x20\x20\x20\x20\x20\x20\x20}\x20else\x20if\x20(operateData[0]\x20==\x203.0)\x20{\x0d\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20let\x20explodeNormal\x20=\x20vec3(0.0,\x200.0,\x201.0);\x0d\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20let\x20explodeLength\x20=\x20instanceCenterWorld.z\x20-\x20operateData[5];\x0d\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20if\x20(operateData[2]\x20>\x20abs(explodeLength))\x20{\x0d\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20output.wordPosition\x20=\x20vec4(output.wordPosition.xyz\x20+\x20explodeNormal\x20*\x20explodeLength\x20*\x20operateData[1],1);\x0d\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20}\x0d\x0a\x20\x20\x20\x20\x20\x20\x20\x20}\x20else\x20if\x20(operateData[0]\x20==\x204.0)\x20{\x0d\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20let\x20explodeDir\x20=\x20instanceCenterWorld\x20-\x20vec3(operateData[3],operateData[4],operateData[5]);\x0d\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20let\x20explodeLength\x20=\x20length(explodeDir);\x0d\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20let\x20explodeNormal\x20=\x20normalize(explodeDir);\x0d\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20if\x20(operateData[2]\x20>\x20explodeLength)\x20{\x0d\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20output.wordPosition\x20=\x20vec4(output.wordPosition.xyz\x20+\x20explodeNormal\x20*\x20explodeLength\x20*\x20operateData[1],1);\x0d\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20}\x0d\x0a\x20\x20\x20\x20\x20\x20\x20\x20}\x20else\x20if\x20(operateData[0]\x20==\x205.0)\x20{\x0d\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20let\x20explodeNormal\x20=\x20vec3(operateData[6],operateData[7],operateData[8]);\x0d\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20let\x20pointC\x20=\x20instanceCenterWorld\x20-\x20dot(instanceCenterWorld\x20-\x20vec3(operateData[3],operateData[4],operateData[5]),\x20explodeNormal)\x20*\x20explodeNormal;\x0d\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20let\x20explodeLength\x20=\x20length(pointC\x20-\x20instanceCenterWorld);\x0d\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20if\x20(operateData[2]\x20>\x20explodeLength)\x20{\x0d\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20output.wordPosition\x20=\x20vec4(output.wordPosition.xyz\x20+\x20explodeNormal\x20*\x20explodeLength\x20*\x20operateData[1],1);\x0d\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20}\x0d\x0a\x20\x20\x20\x20\x20\x20\x20\x20}\x0d\x0a\x20\x20\x20\x20}\x0d\x0a\x20\x20\x20\x20\x0d\x0a\x20\x20\x20\x20output.position\x20=\x20scene.projectionViewMatrix\x20*\x20output.wordPosition;\x0d\x0a\x20\x20\x20\x20output.prev_position\x20=\x20scene.prev_projectionViewMatrix\x20*\x20output.wordPosition;\x0d\x0a\x20\x20\x20\x20output.instancePtr\x20=\x20ri[0];\x0d\x0a\x20\x20\x20\x20output.materialPtr\x20=\x20ins.materialPtr;\x0d\x0a\x20\x20\x20\x20if(output.materialPtr\x20==\x200){\x0d\x0a\x20\x20\x20\x20\x20\x20\x20\x20output.materialPtr\x20=\x20meshLodInfo.materialPtr;\x0d\x0a\x20\x20\x20\x20}\x0d\x0a\x0d\x0a\x20\x20\x20\x20let\x20material\x20=\x20getMaterial(output.materialPtr);\x0d\x0a\x20\x20\x20\x20let\x20textureInfo\x20=\x20getTextureInfo(material.texturePtr);\x0d\x0a\x0d\x0a\x20\x20\x20\x20output.uv\x20=\x20(textureInfo.transform\x20*\x20pos.uv).xy;\x0d\x0a\x0d\x0a\x0d\x0a\x20\x20\x20\x20let\x20model_transform3x3\x20=\x20mat3x3<f32>(model.transform[0].xyz,model.transform[1].xyz,model.transform[2].xyz);\x0d\x0a\x20\x20\x20\x20let\x20ins_transform3x3\x20=\x20mat3x3<f32>(ins.transform[0].xyz,ins.transform[1].xyz,ins.transform[2].xyz);\x0d\x0a\x0d\x0a\x20\x20\x20\x20output.normal\x20=\x20model_transform3x3\x20*\x20ins_transform3x3\x20*\x20pos.normal;\x0d\x0a\x20\x20\x20\x20return\x20output;\x0d\x0a}\x0d\x0a\x0d\x0astruct\x20Material\x20{\x0d\x0a\x20\x20\x20\x20color:\x20vec4<f32>,\x0d\x0a\x20\x20\x20\x20overlay:\x20f32,\x0d\x0a\x20\x20\x20\x20texturePtr:\x20u32,\x0d\x0a};\x0d\x0a\x0d\x0afn\x20getMaterial(offset:u32)\x20->\x20Material\x20{\x0d\x0a\x20\x20\x20\x20var\x20mtl\x20:\x20Material;\x0d\x0a\x0d\x0a\x20\x20\x20\x20mtl.color\x20=\x20unpack4x8unorm(bitcast<u32>(modelData[offset]));\x0d\x0a\x20\x20\x20\x20mtl.overlay\x20=\x20modelData[offset+1];\x0d\x0a\x20\x20\x20\x20mtl.texturePtr\x20=\x20bitcast<u32>(modelData[offset+2]);\x0d\x0a\x0d\x0a\x20\x20\x20\x20return\x20mtl;\x0d\x0a}\x0d\x0a\x0d\x0astruct\x20TextureInfo\x20{\x0d\x0a\x20\x20\x20\x20imgExit:\x20u32,\x0d\x0a\x20\x20\x20\x20uvStart:\x20vec2f,\x0d\x0a\x20\x20\x20\x20uvErr:\x20vec2f,\x0d\x0a\x20\x20\x20\x20//\x20roughness,metallic,emissive\x0d\x0a\x20\x20\x20\x20r_m_e:\x20vec3f,\x0d\x0a\x20\x20\x20\x20transform:\x20mat2x3<f32>\x0d\x0a};\x0d\x0a\x0d\x0afn\x20getTextureInfo(offset:u32)\x20->\x20TextureInfo\x20{\x0d\x0a\x20\x20\x20\x20var\x20tex\x20:\x20TextureInfo;\x0d\x0a\x20\x20\x20\x20if(offset\x20!=\x200){\x0d\x0a\x20\x20\x20\x20\x20\x20\x20\x20tex.imgExit\x20=\x20bitcast<u32>(modelData[offset]);\x0d\x0a\x20\x20\x20\x20\x20\x20\x20\x20tex.uvStart\x20=\x20vec2f(modelData[offset+1],modelData[offset+2]);\x0d\x0a\x20\x20\x20\x20\x20\x20\x20\x20tex.uvErr\x20=\x20vec2f(modelData[offset+3],modelData[offset+4]);\x0d\x0a\x20\x20\x20\x20\x20\x20\x20\x20//\x20roughness,metallic,emissive\x0d\x0a\x20\x20\x20\x20\x20\x20\x20\x20tex.r_m_e\x20=\x20vec3f(modelData[offset+5],modelData[offset+6],modelData[offset+7]);\x0d\x0a\x20\x20\x20\x20\x20\x20\x20\x20tex.transform[0][0]\x20=\x20modelData[offset+8];\x0d\x0a\x20\x20\x20\x20\x20\x20\x20\x20tex.transform[0][1]\x20=\x20modelData[offset+9];\x0d\x0a\x20\x20\x20\x20\x20\x20\x20\x20tex.transform[0][2]\x20=\x20modelData[offset+10];\x0d\x0a\x20\x20\x20\x20\x20\x20\x20\x20tex.transform[1][0]\x20=\x20modelData[offset+11];\x0d\x0a\x20\x20\x20\x20\x20\x20\x20\x20tex.transform[1][1]\x20=\x20modelData[offset+12];\x0d\x0a\x20\x20\x20\x20\x20\x20\x20\x20tex.transform[1][2]\x20=\x20modelData[offset+13];\x0d\x0a\x20\x20\x20\x20}\x0d\x0a\x20\x20\x20\x20return\x20tex;\x0d\x0a}\x0d\x0a\x0d\x0a\x0d\x0astruct\x20FragmentOutput\x20{\x0d\x0a\x20\x20@location(0)\x20position\x20:\x20vec4<f32>,\x0d\x0a\x20\x20@location(1)\x20packData\x20:\x20vec4<u32>,\x0d\x0a\x20\x20@location(2)\x20instancePtr\x20:\x20u32,\x0d\x0a\x20\x20@location(3)\x20prev_position\x20:\x20vec4<f32>,\x0d\x0a}\x0d\x0a\x0d\x0aoverride\x20spaceTotalCount\x20:\x20u32\x20=\x200;\x0d\x0aoverride\x20spaceUnit\x20:\x20f32\x20=\x200.0;\x0d\x0a\x0d\x0a@fragment\x0d\x0afn\x20frag_main(input\x20:\x20VertexOutput)\x20->\x20FragmentOutput\x20{\x0d\x0a\x0d\x0a\x20\x20\x20\x20let\x20planeCount\x20=\x20i32(abs(clipPlane[0].x));\x0d\x0a\x20\x20\x20\x20if\x20(planeCount\x20!=\x200)\x20{\x0d\x0a\x20\x20\x20\x20\x20\x20\x20\x20var\x20hitCount\x20=\x200;\x0d\x0a\x20\x20\x20\x20\x20\x20\x20\x20for\x20(var\x20i\x20=\x201;i\x20<=\x20planeCount;\x20i++)\x20{\x0d\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20if\x20(dot(vec3(clipPlane[i].x,\x20clipPlane[i].y,\x20clipPlane[i].z),\x20input.wordPosition.xyz)\x20+\x20clipPlane[i].w\x20>\x200)\x20{\x0d\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20hitCount++;\x0d\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20}\x0d\x0a\x20\x20\x20\x20\x20\x20\x20\x20}\x0d\x0a\x20\x20\x20\x20\x20\x20\x20\x20if\x20(clipPlane[0].x\x20>\x200)\x20{\x0d\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20if\x20(hitCount\x20==\x20planeCount)\x20{\x0d\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20discard;\x0d\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20}\x0d\x0a\x20\x20\x20\x20\x20\x20\x20\x20}\x0d\x0a\x20\x20\x20\x20\x20\x20\x20\x20else\x20{\x0d\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20if\x20(hitCount\x20!=\x20planeCount)\x20{\x0d\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20discard;\x0d\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20}\x0d\x0a\x20\x20\x20\x20\x20\x20\x20\x20}\x0d\x0a\x20\x20\x20\x20}\x0d\x0a\x0d\x0a\x20\x20\x20\x20var\x20output\x20:\x20FragmentOutput;\x0d\x0a\x20\x20\x20\x20output.position\x20=\x20vec4f(input.wordPosition.xyz\x20+\x200.001,input.position.z);\x0d\x0a\x20\x20\x20\x20output.instancePtr\x20=\x20input.instancePtr;\x0d\x0a\x20\x20\x20\x20let\x20material\x20=\x20getMaterial(input.materialPtr);\x0d\x0a\x20\x20\x20\x20let\x20textureInfo\x20=\x20getTextureInfo(material.texturePtr);\x0d\x0a\x0d\x0a\x20\x20\x20\x20output.prev_position\x20=\x20input.prev_position;\x0d\x0a\x0d\x0a\x20\x20\x20\x20let\x20imgExit\x20=\x20textureInfo.imgExit;\x0d\x0a\x20\x20\x20\x20let\x20a\x20=\x20spaceTotalCount;\x0d\x0a\x20\x20\x20\x20let\x20b\x20=\x20spaceUnit;\x0d\x0a\x0d\x0a\x20\x20\x20\x20let\x20uv\x20=\x20textureInfo.uvStart\x20+\x20textureInfo.uvErr\x20*\x20fract(input.uv);\x0d\x0a\x20\x20\x20\x20let\x20albedo_t\x20=\x20textureSample(albedo_texture,\x20samplerNearest,\x20uv);\x0d\x0a\x20\x20\x20\x20let\x20normal_t\x20=\x20textureSample(normal_texture,\x20samplerNearest,\x20uv);\x0d\x0a\x20\x20\x20\x20let\x20orm_t\x20=\x20textureSample(orm_texture,\x20samplerNearest,\x20uv);\x0d\x0a\x0d\x0a\x20\x20\x20\x20let\x20normal\x20=\x20normalize(input.normal.xyz);\x0d\x0a\x0d\x0a\x20\x20\x20\x20//\x20璁$畻\x20pos\x20鐨勫眬閮ㄥ亸瀵兼暟\x0d\x0a\x20\x20\x20\x20let\x20dp1\x20=\x20dpdx(output.position.xyz);\x0d\x0a\x20\x20\x20\x20let\x20dp2\x20=\x20dpdy(output.position.xyz);\x0d\x0a\x0d\x0a\x20\x20\x20\x20//\x20璁$畻\x20uv\x20鐨勫眬閮ㄥ亸瀵兼暟\x0d\x0a\x20\x20\x20\x20let\x20duv1\x20=\x20dpdx(uv);\x0d\x0a\x20\x20\x20\x20let\x20duv2\x20=\x20dpdy(uv);\x0d\x0a\x0d\x0a\x20\x20\x20\x20var\x20color\x20=\x20vec4f(0);\x0d\x0a\x0d\x0a\x20\x20\x20\x20let\x20pack_normal_geometry\x20=\x20pack4x8snorm(vec4(normal.xyz,\x200));\x0d\x0a\x20\x20\x20\x20if((imgExit\x20&\x202)\x20==\x200){\x0d\x0a\x20\x20\x20\x20\x20\x20\x20\x20color\x20=\x20material.color;\x0d\x0a\x20\x20\x20\x20\x20\x20\x20\x20output.packData\x20=\x20vec4(pack_normal_geometry\x20|\x20(imgExit\x20<<\x2024),0,0,0);\x0d\x0a\x20\x20\x20\x20}else{\x0d\x0a\x20\x20\x20\x20\x20\x20\x20\x20var\x20pack_normal\x20=\x200u;\x0d\x0a\x20\x20\x20\x20\x20\x20\x20\x20if((imgExit\x20&\x204)\x20==\x204){\x0d\x0a\x0d\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20//\x20璁$畻鍒囩嚎鍜屽弻鍒囩嚎\x0d\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20let\x20r\x20=\x201.0\x20/\x20(duv1.x\x20*\x20duv2.y\x20-\x20duv1.y\x20*\x20duv2.x);\x0d\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20var\x20tangent\x20=\x20normalize((dp1\x20*\x20duv2.y\x20-\x20dp2\x20*\x20duv1.y)\x20*\x20r);\x0d\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20let\x20bitangent\x20=\x20normalize((dp2\x20*\x20duv1.x\x20-\x20dp1\x20*\x20duv2.x)\x20*\x20r);\x0d\x0a\x0d\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20//\x20纭繚娉曠嚎鍜屽垏绾挎槸姝d氦鐨刓x0d\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20tangent\x20=\x20normalize(tangent\x20-\x20dot(tangent,\x20normal)\x20*\x20normal);\x0d\x0a\x0d\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20//\x20TBN\x20鐭╅樀\x0d\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20let\x20tbnMatrix\x20\x20=\x20mat3x3<f32>(tangent,\x20bitangent,\x20normal);\x0d\x0a\x0d\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20let\x20normalMap\x20=\x20normal_t.xyz\x20*\x202.0\x20-\x201.0;\x0d\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20let\x20worldNormal\x20=\x20normalize(tbnMatrix\x20*\x20normalMap);\x0d\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20pack_normal\x20=\x20pack4x8snorm(vec4(worldNormal.xyz,\x200));\x0d\x0a\x20\x20\x20\x20\x20\x20\x20\x20}else{\x0d\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20pack_normal\x20=\x20pack4x8snorm(vec4(normal.xyz,\x200));\x0d\x0a\x20\x20\x20\x20\x20\x20\x20\x20}\x0d\x0a\x0d\x0a\x20\x20\x20\x20\x20\x20\x20\x20var\x20pack_roughnessMetallic\x20=\x200u;\x0d\x0a\x20\x20\x20\x20\x20\x20\x20\x20if((imgExit\x20&\x208)\x20==\x208){\x0d\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20pack_roughnessMetallic\x20=\x20pack4x8unorm(orm_t);\x0d\x0a\x20\x20\x20\x20\x20\x20\x20\x20}else{\x0d\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20pack_roughnessMetallic\x20=\x20pack4x8unorm(vec4(0,\x20textureInfo.r_m_e));\x0d\x0a\x20\x20\x20\x20\x20\x20\x20\x20}\x0d\x0a\x0d\x0a\x20\x20\x20\x20\x20\x20\x20\x20color\x20=\x20mix(albedo_t,vec4(vec3(albedo_t.r\x20*\x200.299\x20+\x20albedo_t.g\x20*\x200.587\x20+\x20albedo_t.b\x20*\x200.114)\x20+\x20material.color.rgb,albedo_t.a),material.overlay);\x0d\x0a\x20\x20\x20\x20\x20\x20\x20\x20color\x20=\x20select(color,material.color,material.overlay\x20==\x201.0);\x0d\x0a\x0d\x0a\x20\x20\x20\x20\x20\x20\x20\x20output.packData\x20=\x20vec4(pack_normal\x20|\x20(imgExit\x20<<\x2024),0,pack_roughnessMetallic,0);\x0d\x0a\x20\x20\x20\x20}\x0d\x0a\x20\x20\x20\x20let\x20pack_color\x20=\x20pack4x8unorm(color);\x0d\x0a\x0d\x0a\x0d\x0a\x0d\x0a\x20\x20\x20\x20if(color.a\x20==\x201){\x0d\x0a\x20\x20\x20\x20\x20\x20\x20\x20output.packData.y\x20=\x20pack_color;\x0d\x0a\x20\x20\x20\x20}else{\x0d\x0a//\x20\x20\x20\x20\x20\x20\x20\x20let\x20pixelCoord\x20=\x20vec2<u32>(input.position.xy);\x0d\x0a//\x20\x20\x20\x20\x20\x20\x20\x20let\x20it\x20=\x20(pixelCoord.y\x20*\x20u32(scene.width)\x20+\x20pixelCoord.x)\x20*\x202;\x0d\x0a//\x20\x20\x20\x20\x20\x20\x20\x20let\x20old_z\x20=\x20transparentColorData[it];\x0d\x0a//\x20\x20\x20\x20\x20\x20\x20\x20if(old_z\x20<\x20input.position.z){\x0d\x0a//\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20transparentColorData[it]\x20=\x20input.position.z;\x0d\x0a//\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20transparentColorData[it+1]\x20=\x20bitcast<f32>(pack_color);\x0d\x0a//\x20\x20\x20\x20\x20\x20\x20\x20}\x0d\x0a\x20\x20\x20\x20\x20\x20\x20\x20discard\x20;\x0d\x0a\x20\x20\x20\x20}\x0d\x0a\x0d\x0a\x0d\x0a//\x20\x20\x20\x20let\x20pos\x20=\x20vec3<u32>(abs(output.position.xyz\x20*\x20spaceUnit));\x0d\x0a//\x20\x20\x20\x20let\x20bzf\x20=\x20vec3<u32>(output.position.xyz\x20>\x20vec3<f32>(0));\x0d\x0a//\x20\x20\x20\x20var\x20p_offset\x20=\x20lightBodiesSpace[1u\x20+\x20(bzf[0]\x20|\x20(bzf[1]\x20<<\x201u)\x20|\x20(bzf[2]\x20<<\x202u))]\x20>>\x201u;\x0d\x0a//\x20\x20\x20\x20var\x20bn\x20=\x2026u;\x0d\x0a//\x20\x20\x20\x20loop\x20{\x0d\x0a//\x20\x20\x20\x20\x20\x20\x20\x20let\x20b1\x20=\x20((pos.x\x20>>\x20bn)\x20&\x201u)\x20|\x20(((pos.y\x20>>\x20bn)\x20&\x201u)\x20<<\x201u)\x20|\x20(((pos.z\x20>>\x20bn)\x20&\x201u)\x20<<\x202u);\x0d\x0a//\x20\x20\x20\x20\x20\x20\x20\x20let\x20prt_status\x20=\x20lightBodiesSpace[p_offset\x20+\x20b1];\x0d\x0a//\x20\x20\x20\x20\x20\x20\x20\x20if((prt_status&1)\x20==\x201){\x0d\x0a//\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20p_offset\x20=\x20prt_status\x20>>\x201;\x0d\x0a//\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20if(bn\x20==\x200){\x0d\x0a////\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20let\x20ynor\x20=\x20unpack4x8snorm(lightBodiesSpace[p_offset\x20+\x2013]);\x0d\x0a////\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20lightBodiesSpace[p_offset\x20+\x2013]\x20=\x20pack4x8snorm(vec4(normalize(ynor.xyz\x20+\x20normal.xyz),0));\x0d\x0a//\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20if(lightBodiesSpace[p_offset\x20+\x2013]\x20==\x200){\x0d\x0a//\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20lightBodiesSpace[p_offset\x20+\x2013]\x20=\x20pack4x8snorm(vec4(normal.xyz,0));\x0d\x0a//\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20}\x0d\x0a//\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20//\x20鏍囪鏈�鍚庝竴涓眰绾x0d\x0a//\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20lightBodiesSpace[p_offset\x20+\x209]\x20|=\x204;\x0d\x0a//\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20break;\x0d\x0a//\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20}\x0d\x0a//\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20bn--;\x0d\x0a//\x20\x20\x20\x20\x20\x20\x20\x20}else{\x0d\x0a//\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20let\x20cameraPosition\x20=\x20vec3<f32>(scene.cameraPositionX,scene.cameraPositionY,scene.cameraPositionZ);\x0d\x0a//\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20let\x20layerDis\x20=\x20distance(cameraPosition\x20,\x20output.position.xyz);\x0d\x0a//\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20if((layerDis\x20<\x20100\x20||\x20bn\x20>\x20(25u\x20-\x20countLeadingZeros(u32(layerDis))))){\x0d\x0a//\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20let\x20addI\x20=\x20min(2097000u,atomicAdd(&selfAtomicData[0],2));\x0d\x0a//\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20lightBodiesSpaceAdd[0]\x20=\x20addI;\x0d\x0a//\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20lightBodiesSpaceAdd[1]\x20=\x20addI\x20/\x202\x20/\x2064\x20+\x201;\x0d\x0a//\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20lightBodiesSpaceAdd[addI]\x20=\x20p_offset;\x0d\x0a//\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20lightBodiesSpaceAdd[addI\x20+\x201]\x20=\x20b1;\x0d\x0a//\x20\x20\x20\x20//\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20lightBodiesSpaceAdd[addI\x20+\x201]\x20=\x20b1;\x0d\x0a//\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20}\x0d\x0a//\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20break;\x0d\x0a//\x20\x20\x20\x20\x20\x20\x20\x20}\x0d\x0a//\x20\x20\x20\x20}\x0d\x0a\x0d\x0a\x0d\x0a\x20\x20\x20\x20return\x20output;\x0d\x0a}\x0d\x0a','samplerNearest','KeyE','volumeRender_Uniform_VmBuffer','NEAREST','readMesh_Uniform_dataBuffer','scene','ShaderSource','rightHeading','edgeStrengthComputePipeline','none','height','linear','createBindGroup','shaderCache','UpdateClipPlaneAccuracyOffset','instanceBoxRender','len','arrayBuffer','allow_read_pendingRequest_mesh','lightInfo_VmBuffer','meshRenderBundle','samplerDepth','volumeRender_3dData_Texture','buffer','SetInstanceMaterialByComponentIds','GetMaterial','upLeftY','blur_blockDim','LightBodiesRemoveDuplicatesIndirectIntend','querySet','movementX','command','OnModelServer','style','voxelRender_Uniform_VmBuffer','StreamRenderIntend','serDepthTexture','blurComputePipeline','SetModelStatus','edgeMerge_color_Texture','isFinite','set','SetInstanceTransform','tempRL','SetMaterialColor','readMesh_dispatchWorkgroupsY','InitPer','KeyU','\x0d\x0astruct\x20SelfUniform\x20{\x0d\x0a\x20\x20\x20\x20serialNumber:\x20u32,\x0d\x0a\x20\x20\x20\x20//\x20宸ヤ綔缁勭殑闅忔満绉嶅瓙\x0d\x0a\x20\x20\x20\x20seed1:u32,\x0d\x0a\x20\x20\x20\x20seed2:u32,\x0d\x0a\x20\x20\x20\x20seed3:u32,\x0d\x0a};\x0d\x0a\x0d\x0a@group(0)\x20@binding(0)\x20var<uniform>\x20selfUniform:\x20SelfUniform;\x0d\x0a@group(0)\x20@binding(1)\x20var<uniform>\x20lightInfo:\x20LightInfoStruct;\x0d\x0a@group(0)\x20@binding(2)\x20var<uniform>\x20scene:\x20SceneInfoStruct;\x0d\x0a@group(0)\x20@binding(3)\x20var\x20positionData\x20:\x20texture_storage_2d<rgba32float,read>;\x0d\x0a@group(0)\x20@binding(4)\x20var\x20packData\x20:\x20texture_storage_2d<rgba32uint,read>;\x0d\x0a@group(0)\x20@binding(5)\x20var\x20instancePtrData\x20:\x20texture_storage_2d<r32uint,read>;\x0d\x0a@group(0)\x20@binding(6)\x20var<storage,read_write>\x20instanceData:\x20array<atomic<u32>>;\x0d\x0a@group(0)\x20@binding(7)\x20var<storage,read_write>\x20lightBodiesSpace:\x20array<u32>;\x0d\x0a@group(0)\x20@binding(8)\x20var<storage,read_write>\x20lightBodiesBounceOne:\x20array<u32>;\x0d\x0a@group(0)\x20@binding(9)\x20var\x20finalColor_texture\x20:\x20texture_storage_2d<rgba8unorm,write>;\x0d\x0a@group(0)\x20@binding(10)\x20var<storage,read_write>\x20transparentColorData:\x20array<f32>;\x0d\x0a@group(0)\x20@binding(11)\x20var\x20reflectionData\x20:\x20texture_storage_2d<rgba32float,read>;\x0d\x0a@group(0)\x20@binding(12)\x20var\x20shadow_instancePtrData\x20:\x20texture_storage_2d<r32uint,read>;\x0d\x0a@group(0)\x20@binding(13)\x20var\x20samplerDepth:\x20sampler_comparison;\x0d\x0a@group(0)\x20@binding(14)\x20var\x20shadowMap:\x20texture_depth_2d_array;\x0d\x0a@group(0)\x20@binding(15)\x20var<storage,read_write>\x20selfAtomic:\x20array<atomic<i32>>;\x0d\x0a\x0d\x0astruct\x20InputData\x20{\x0d\x0a\x20\x20\x20@builtin(local_invocation_id)\x20local_id:\x20vec3<u32>,\x0d\x0a\x20\x20\x20@builtin(local_invocation_index)\x20local_index:\x20u32,\x0d\x0a\x20\x20\x20@builtin(global_invocation_id)\x20global_id:\x20vec3<u32>,\x0d\x0a}\x0d\x0a\x0d\x0aoverride\x20spaceUnit\x20:\x20f32;\x0d\x0a@compute\x20@workgroup_size(16,16)\x0d\x0afn\x20main(input:\x20InputData)\x20{\x0d\x0a\x0d\x0a\x20\x20\x20\x20let\x20texSizeU\x20=\x20textureDimensions(instancePtrData);\x0d\x0a\x20\x20\x20\x20if(any(texSizeU\x20<\x20input.global_id.xy)){\x0d\x0a\x20\x20\x20\x20\x20\x20\x20\x20return\x20;\x0d\x0a\x20\x20\x20\x20}\x0d\x0a\x20\x20\x20\x20let\x20texSize\x20=\x20vec2<f32>(texSizeU);\x0d\x0a\x0d\x0a\x20\x20\x20\x20textureStore(finalColor_texture,input.global_id.xy,vec4(0,0,0,0));\x0d\x0a\x0d\x0a\x20\x20\x20\x20let\x20shadowMapSize\x20=\x20textureDimensions(shadowMap);\x0d\x0a\x20\x20\x20\x20let\x20shadow_instancePtr\x20=\x20textureLoad(shadow_instancePtrData,input.global_id.xy\x20*\x20shadowMapSize\x20/\x20texSizeU).x;\x0d\x0a\x20\x20\x20\x20if(shadow_instancePtr\x20!=\x200){\x0d\x0a\x20\x20\x20\x20\x20\x20\x20\x20atomicStore(&instanceData[shadow_instancePtr\x20+\x2027],atomicLoad(&instanceData[shadow_instancePtr\x20+\x2026]));\x0d\x0a\x20\x20\x20\x20\x20\x20\x20\x20atomicAdd(&instanceData[shadow_instancePtr\x20+\x2028],1u);\x0d\x0a\x20\x20\x20\x20}\x0d\x0a\x0d\x0a\x20\x20\x20\x20let\x20instancePtr\x20=\x20textureLoad(instancePtrData,input.global_id.xy).x;\x0d\x0a\x20\x20\x20\x20if(instancePtr\x20==\x200){\x0d\x0a\x20\x20\x20\x20\x20\x20\x20\x20return\x20;\x0d\x0a\x20\x20\x20\x20}\x0d\x0a\x20\x20\x20\x20atomicStore(&instanceData[instancePtr\x20+\x2027],atomicLoad(&instanceData[instancePtr\x20+\x2026]));\x0d\x0a\x20\x20\x20\x20atomicAdd(&instanceData[instancePtr\x20+\x2028],1u);\x0d\x0a\x0d\x0a\x20\x20\x20\x20let\x20posOrigin\x20=\x20textureLoad(positionData,input.global_id.xy);\x0d\x0a\x0d\x0a\x20\x20\x20\x20let\x20int_posOrigin\x20=\x20vec3i(posOrigin.xyz);\x0d\x0a\x20\x20\x20\x20atomicMin(&selfAtomic[0],int_posOrigin.x);\x0d\x0a\x20\x20\x20\x20atomicMin(&selfAtomic[1],int_posOrigin.y);\x0d\x0a\x20\x20\x20\x20atomicMin(&selfAtomic[2],int_posOrigin.z);\x0d\x0a\x20\x20\x20\x20atomicMax(&selfAtomic[3],int_posOrigin.x);\x0d\x0a\x20\x20\x20\x20atomicMax(&selfAtomic[4],int_posOrigin.y);\x0d\x0a\x20\x20\x20\x20atomicMax(&selfAtomic[5],int_posOrigin.z);\x0d\x0a\x0d\x0a\x0d\x0a\x0d\x0a\x20\x20\x20\x20//褰撳墠鐩告満浣嶇疆\x0d\x0a\x20\x20\x20\x20let\x20cameraPosition\x20=\x20vec3f(scene.cameraPositionX,scene.cameraPositionY,scene.cameraPositionZ);\x0d\x0a\x20\x20\x20\x20let\x20viewDir\x20=\x20normalize(cameraPosition\x20-\x20posOrigin.xyz);\x0d\x0a\x20\x20\x20\x20let\x20parallelLightDir\x20=\x20normalize(vec3f(lightInfo.dir_x,lightInfo.dir_y,lightInfo.dir_z));\x0d\x0a\x20\x20\x20\x20let\x20lightColor\x20=\x20vec3f(lightInfo.color_r,lightInfo.color_g,lightInfo.color_b);\x0d\x0a\x0d\x0a\x0d\x0a\x20\x20\x20\x20let\x20packData_t\x20=\x20textureLoad(packData,input.global_id.xy);\x0d\x0a\x20\x20\x20\x20let\x20normal\x20=\x20unpack4x8snorm(packData_t.x).xyz;\x0d\x0a\x20\x20\x20\x20let\x20imgExit\x20=\x20(packData_t.x\x20>>\x2024u);\x0d\x0a\x20\x20\x20\x20let\x20srme\x20=\x20unpack4x8unorm(packData_t.z);\x0d\x0a\x0d\x0a\x20\x20\x20\x20var\x20position_color\x20=\x20vec3f(0.0);\x0d\x0a\x0d\x0a\x20\x20\x20\x20//\x20涓嶉�忔槑棰滆壊\x0d\x0a//\x20\x20\x20\x20let\x20o_color\x20=\x20sRGBToLinear(unpack4x8unorm(packData_t.y).rgb);\x0d\x0a\x20\x20\x20\x20let\x20o_color\x20=\x20unpack4x8unorm(packData_t.y).rgb;\x0d\x0a\x20\x20\x20\x20let\x20it\x20=\x20(input.global_id.y\x20*\x20u32(scene.width)\x20+\x20input.global_id.x)\x20*\x202;\x0d\x0a\x20\x20\x20\x20let\x20t_color1_depth\x20=\x20transparentColorData[it];\x0d\x0a\x20\x20\x20\x20//\x20閫忔槑棰滆壊\x0d\x0a\x20\x20\x20\x20let\x20t_color1\x20=\x20unpack4x8unorm(bitcast<u32>(transparentColorData[it+1]));\x0d\x0a\x20\x20\x20\x20if(posOrigin.w\x20<\x20t_color1_depth){\x0d\x0a//\x20\x20\x20\x20\x20\x20\x20\x20position_color\x20=\x20pow(t_color1.rgb,\x20vec3f(2.2))\x20*\x20t_color1.a\x20+\x20(1-\x20t_color1.a)\x20*\x20o_color.rgb;\x0d\x0a\x20\x20\x20\x20\x20\x20\x20\x20position_color\x20=\x20t_color1.rgb\x20*\x20t_color1.a\x20+\x20(1-\x20t_color1.a)\x20*\x20o_color.rgb;\x0d\x0a\x20\x20\x20\x20}else{\x0d\x0a\x20\x20\x20\x20\x20\x20\x20\x20position_color\x20=\x20o_color.rgb;\x0d\x0a\x20\x20\x20\x20}\x0d\x0a\x0d\x0a\x0d\x0a\x20\x20\x20\x20let\x20reflection_color\x20=\x20textureLoad(reflectionData,input.global_id.xy);\x0d\x0a//\x20\x20\x20\x20textureStore(finalColor_texture,input.global_id.xy,vec4((unpack4x8snorm(lightBodiesSpace[targetPrt]>>\x201).rgb\x20+\x201)\x20*\x200.5,1));\x0d\x0a//\x20\x20\x20\x20textureStore(finalColor_texture,input.global_id.xy,vec4((normal.rgb\x20+\x201)\x20*\x200.5,1));\x0d\x0a\x0d\x0a//\x20\x20\x20\x20let\x20groundColor\x20=\x20vec3f(0.5,\x200.5,\x200.5);\x0d\x0a//\x20\x20\x20\x20let\x20NdotL\x20=\x20dot(normal.xyz,\x20parallelLightDir)\x20*\x200.5\x20+\x200.5;\x0d\x0a//\x20\x20\x20\x20var\x20finalColor\x20=\x20mix(groundColor,\x20lightColor,\x20NdotL)\x20*\x20position_color.xyz;\x0d\x0a//\x20\x20\x20\x20finalColor\x20=\x20pow(finalColor,\x20vec3f(0.45454545454545453));\x0d\x0a//\x20\x20\x20\x20textureStore(finalColor_texture,input.global_id.xy,vec4(finalColor.rgb,1));\x0d\x0a\x0d\x0a\x0d\x0a//let\x20ss\x20=\x20spaceUnit;\x0d\x0a\x0d\x0a\x0d\x0a\x20\x20\x20\x20let\x20positionFromLight\x20=\x20lightInfo.lightViewProjMatrix\x20*\x20vec4f(posOrigin.xyz,1.0);\x0d\x0a\x20\x20\x20\x20var\x20shadow\x20=\x20computeShadowWithCSMPCF3(0,\x20positionFromLight,shadowMap,samplerDepth,\x20vec2(f32(shadowMapSize.x),1.0\x20/\x20f32(shadowMapSize.x)),\x200.4);\x0d\x0a\x0d\x0a\x20\x20\x20\x20var\x20pbrInfo\x20:\x20PBRInfo;\x0d\x0a\x20\x20\x20\x20pbrInfo.normal\x20=\x20normal.xyz;\x0d\x0a\x20\x20\x20\x20pbrInfo.baseColor\x20=\x20pow(position_color.rgb,\x20vec3f(2.2));;\x0d\x0a\x20\x20\x20\x20pbrInfo.gi_ambientLight\x20=\x20vec3f(0.3);\x0d\x0a\x20\x20\x20\x20pbrInfo.lightDir\x20=\x20parallelLightDir;\x0d\x0a\x20\x20\x20\x20pbrInfo.lightColor\x20=\x20lightColor;\x0d\x0a\x20\x20\x20\x20pbrInfo.lightIntensity\x20=\x206;\x0d\x0a\x20\x20\x20\x20pbrInfo.viewDir\x20=\x20viewDir;\x0d\x0a\x20\x20\x20\x20pbrInfo.metallic\x20=\x20srme.b;\x0d\x0a\x20\x20\x20\x20pbrInfo.roughness\x20=\x20srme.g;\x0d\x0a//\x20\x20\x20\x20pbrInfo.isOcclusion\x20=\x20shadow\x20<\x200.5;\x0d\x0a\x20\x20\x20\x20pbrInfo.isOcclusion\x20=\x20false;\x0d\x0a\x0d\x0a\x0d\x0a\x20\x20\x20\x20var\x20finalColor\x20=\x20vec3f(0.0);\x0d\x0a\x20\x20\x20\x20if((imgExit\x20&\x202u)\x20!=\x200){\x0d\x0a\x20\x20\x20\x20\x20\x20\x20\x20finalColor\x20=\x20pbrLighting(pbrInfo);\x0d\x0a\x20\x20\x20\x20}else{\x0d\x0a\x20\x20\x20\x20\x20\x20\x20\x20let\x20groundColor\x20=\x20vec3f(0.5,\x200.5,\x200.5);\x0d\x0a\x20\x20\x20\x20\x20\x20\x20\x20if(pbrInfo.isOcclusion){\x0d\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20pbrInfo.lightColor\x20=\x20\x20vec3f(0.0,\x200.0,\x200.0);\x0d\x0a\x20\x20\x20\x20\x20\x20\x20\x20}\x0d\x0a\x20\x20\x20\x20\x20\x20\x20\x20let\x20NdotL\x20=\x20dot(pbrInfo.normal,\x20pbrInfo.lightDir)\x20*\x200.5\x20+\x200.5;\x0d\x0a\x20\x20\x20\x20\x20\x20\x20\x20finalColor\x20=\x20mix(groundColor,\x20pbrInfo.lightColor,\x20NdotL)\x20*\x20pbrInfo.baseColor.xyz;\x0d\x0a\x20\x20\x20\x20}\x0d\x0a\x0d\x0a//\x20\x20\x20\x20finalColor\x20=\x20mix(finalColor,reflection_color.rgb,0.8);\x0d\x0a\x0d\x0a//if(reflection_color.r\x20>\x200){\x0d\x0a//\x20\x20\x20\x20finalColor\x20=\x20reflection_color.rgb\x20*\x203;\x0d\x0a//}\x0d\x0a\x0d\x0a\x20\x20\x20\x20\x20\x20\x20\x20textureStore(finalColor_texture,input.global_id.xy,vec4(finalColor.rgb\x20*\x20shadow,1));\x0d\x0a\x0d\x0a\x0d\x0a\x0d\x0a\x0d\x0areturn\x20;\x0d\x0a\x0d\x0a\x0d\x0a\x20\x20\x20\x20let\x20posOriginTemp\x20=\x20posOrigin.xyz\x20*\x20spaceUnit;\x0d\x0a\x20\x20\x20\x20let\x20pos\x20=\x20vec3<u32>(abs(posOriginTemp));\x0d\x0a\x20\x20\x20\x20var\x20p_offset\x20=\x20lightBodiesSpace[1u\x20+\x20(select(0u,\x201u,\x20posOrigin[0]\x20>\x200)\x20|\x20(select(0u,\x201u,\x20posOrigin[1]\x20>\x200)\x20<<\x201u)\x20|\x20(select(0u,\x201u,\x20posOrigin[2]\x20>\x200)\x20<<\x202u))]\x20>>\x201u;\x0d\x0a\x20\x20\x20\x20var\x20bn\x20=\x2026u;\x0d\x0a\x20\x20\x20\x20loop\x20{\x0d\x0a\x20\x20\x20\x20\x20\x20\x20\x20let\x20b1\x20=\x20((pos.x\x20>>\x20bn)\x20&\x201u)\x20|\x20(((pos.y\x20>>\x20bn)\x20&\x201u)\x20<<\x201u)\x20|\x20(((pos.z\x20>>\x20bn)\x20&\x201u)\x20<<\x202u);\x0d\x0a\x20\x20\x20\x20\x20\x20\x20\x20let\x20prt_status\x20=\x20lightBodiesSpace[p_offset\x20+\x20b1];\x0d\x0a\x20\x20\x20\x20\x20\x20\x20\x20if((prt_status&1)\x20==\x201){\x0d\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20p_offset\x20=\x20prt_status\x20>>\x201;\x0d\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20if\x20(bn\x20==\x200u)\x20{\x0d\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20break;\x0d\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20}\x0d\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20bn--;\x0d\x0a\x20\x20\x20\x20\x20\x20\x20\x20}else{\x0d\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20break;\x0d\x0a\x20\x20\x20\x20\x20\x20\x20\x20}\x0d\x0a\x20\x20\x20\x20}\x0d\x0a\x20\x20\x20\x20let\x20targetPrt\x20=\x20p_offset;\x0d\x0a\x0d\x0a//\x20\x20\x20\x20pbrInfo.isOcclusion\x20=\x20(lightBodiesSpace[targetPrt+9]&1u)\x20==\x201u;\x0d\x0a//\x20\x20\x20\x20if(1u\x20==\x20scene.cameraUpdate){\x0d\x0a//\x20\x20\x20\x20\x20\x20\x20\x20if(lightBodiesSpace[0]\x20>\x201000){\x0d\x0a//\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20let\x20hit\x20=\x20lightFire(posOriginTemp.xyz,parallelLightDir,pow(2.0,f32(bn))*10);\x0d\x0a//\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20if(hit.targetPrt\x20!=\x200){\x0d\x0a//\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20lightBodiesSpace[targetPrt\x20+\x209]\x20|=\x201u;\x0d\x0a//\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20pbrInfo.isOcclusion\x20=\x20true;\x0d\x0a//\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20}else{\x0d\x0a//\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20lightBodiesSpace[targetPrt\x20+\x209]\x20&=\x204294967294u;\x0d\x0a//\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20pbrInfo.isOcclusion\x20=\x20false;\x0d\x0a//\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20}\x0d\x0a//\x20\x20\x20\x20\x20\x20\x20\x20}\x0d\x0a//\x20\x20\x20\x20}\x0d\x0a\x0d\x0a\x20\x20\x20\x20if((lightBodiesSpace[targetPrt]&1)\x20==\x200\x0d\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20&&\x20(lightBodiesSpace[targetPrt+1]&1)\x20==\x200\x0d\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20&&\x20(lightBodiesSpace[targetPrt+2]&1)\x20==\x200\x0d\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20&&\x20(lightBodiesSpace[targetPrt+3]&1)\x20==\x200\x0d\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20&&\x20(lightBodiesSpace[targetPrt+4]&1)\x20==\x200\x0d\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20&&\x20(lightBodiesSpace[targetPrt+5]&1)\x20==\x200\x0d\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20&&\x20(lightBodiesSpace[targetPrt+6]&1)\x20==\x200\x0d\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20&&\x20(lightBodiesSpace[targetPrt+7]&1)\x20==\x200){\x0d\x0a\x0d\x0a\x0d\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20lightBodiesSpace[targetPrt+9]\x20&=\x204294967293u;\x0d\x0a\x0d\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20let\x20lbi\x20=\x20atomicAdd(&instanceData[4],1u);\x0d\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20lightBodiesBounceOne[lbi]\x20=\x20targetPrt;\x0d\x0a\x0d\x0a\x0d\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20if(pbrInfo.isOcclusion){\x0d\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20lightBodiesSpace[targetPrt\x20+\x2014]\x20=\x200;\x0d\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20}else{\x0d\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20lightBodiesSpace[targetPrt\x20+\x2014]\x20=\x20pack4x8unorm(vec4<f32>(0,pbrInfo.baseColor.rgb));\x0d\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20}\x0d\x0a\x0d\x0a//\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20lightBodiesSpace[targetPrt\x20+\x2014]\x20=\x20pack4x8unorm(vec4<f32>(0,pbrInfo.baseColor.rgb));\x0d\x0a\x0d\x0a\x0d\x0a\x0d\x0a\x20\x20\x20\x20var\x20indirect_color\x20=\x20vec3f(bitcast<f32>(lightBodiesSpace[targetPrt\x20+\x2010]),bitcast<f32>(lightBodiesSpace[targetPrt\x20+\x2011]),bitcast<f32>(lightBodiesSpace[targetPrt\x20+\x2012]));\x0d\x0a\x20\x20\x20\x20if(reflection_color.a\x20==\x201){\x0d\x0a\x20\x20\x20\x20\x20\x20\x20\x20indirect_color\x20=\x20mix(indirect_color.rgb,reflection_color.rgb,0.5);\x0d\x0a\x20\x20\x20\x20lightBodiesSpace[targetPrt\x20+\x2010]\x20=\x20bitcast<u32>(indirect_color.r);\x0d\x0a\x20\x20\x20\x20lightBodiesSpace[targetPrt\x20+\x2011]\x20=\x20bitcast<u32>(indirect_color.g);\x0d\x0a\x20\x20\x20\x20lightBodiesSpace[targetPrt\x20+\x2012]\x20=\x20bitcast<u32>(indirect_color.b);\x0d\x0a\x20\x20\x20\x20}\x0d\x0a\x20\x20\x20\x20\x20\x20\x20\x20pbrInfo.gi_ambientLight\x20=\x20indirect_color;\x0d\x0a\x20\x20\x20}\x0d\x0a\x0d\x0a\x0d\x0a//\x20\x20\x20\x20var\x20finalColor\x20=\x20vec3f(0.0);\x0d\x0a//\x20\x20\x20\x20if((imgExit\x20&\x202u)\x20!=\x200){\x0d\x0a//\x20\x20\x20\x20\x20\x20\x20\x20finalColor\x20=\x20pbrLighting(pbrInfo);\x0d\x0a//\x20\x20\x20\x20}else{\x0d\x0a//\x20\x20\x20\x20\x20\x20\x20\x20let\x20groundColor\x20=\x20vec3f(0.5,\x200.5,\x200.5);\x0d\x0a//\x20\x20\x20\x20\x20\x20\x20\x20if(pbrInfo.isOcclusion){\x0d\x0a//\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20pbrInfo.lightColor\x20=\x20\x20vec3f(0.0,\x200.0,\x200.0);\x0d\x0a//\x20\x20\x20\x20\x20\x20\x20\x20}\x0d\x0a//\x20\x20\x20\x20\x20\x20\x20\x20let\x20NdotL\x20=\x20dot(pbrInfo.normal,\x20pbrInfo.lightDir)\x20*\x200.5\x20+\x200.5;\x0d\x0a//\x20\x20\x20\x20\x20\x20\x20\x20finalColor\x20=\x20mix(groundColor,\x20pbrInfo.lightColor,\x20NdotL)\x20*\x20pbrInfo.baseColor.xyz;\x0d\x0a//\x20\x20\x20\x20\x20\x20\x20\x20finalColor\x20=\x20pow(finalColor,\x20vec3f(0.45454545454545453));\x0d\x0a//\x20\x20\x20\x20}\x0d\x0a//\x0d\x0a//\x20\x20\x20\x20if(pbrInfo.isOcclusion){\x0d\x0a//\x20\x20\x20\x20\x20\x20\x20\x20textureStore(finalColor_texture,input.global_id.xy,vec4(0,0,0,1));\x0d\x0a//\x20\x20\x20\x20}else{\x0d\x0a//\x20\x20\x20\x20\x20\x20\x20\x20textureStore(finalColor_texture,input.global_id.xy,vec4(pbrInfo.gi_ambientLight.rgb,1));\x0d\x0a//\x20\x20\x20\x20}\x0d\x0a//\x0d\x0a//\x20\x20\x20\x20\x20\x20\x20\x20textureStore(finalColor_texture,input.global_id.xy,vec4(finalColor.rgb,1));\x0d\x0a\x0d\x0a\x0d\x0a//\x20\x20\x20\x20\x20\x20\x20\x20textureStore(finalColor_texture,input.global_id.xy,vec4(pbrInfo.baseColor.rgb,1));\x0d\x0a//\x20\x20\x20\x20\x20\x20\x20\x20textureStore(finalColor_texture,input.global_id.xy,vec4((unpack4x8snorm(lightBodiesSpace[targetPrt\x20+\x2013]).rgb\x20+\x201)\x20*\x200.5,1));\x0d\x0a\x0d\x0a//\x20\x20\x20\x20\x20\x20\x20\x20textureStore(finalColor_texture,input.global_id.xy,vec4(pbrInfo.gi_ambientLight.rgb,1));\x0d\x0a\x0d\x0a}\x0d\x0aconst\x20PI:\x20f32\x20=\x203.14159265359;\x0d\x0aconst\x20Epsilon:\x20f32\x20=\x200.0000001;\x0d\x0a\x0d\x0astruct\x20PBRInfo\x20{\x0d\x0a\x20\x20\x20\x20normal:\x20vec3f,\x20\x20\x20\x20\x20\x20//\x20娉曠嚎锛氳〃闈㈠瀭鐩存柟鍚慭x0d\x0a\x20\x20\x20\x20viewDir:\x20vec3f,\x20\x20\x20\x20\x20//\x20瑙嗚鏂瑰悜锛氫粠琛ㄩ潰鎸囧悜鐪肩潧\x0d\x0a\x20\x20\x20\x20lightDir:\x20vec3f,\x20\x20\x20\x20//\x20骞宠鍏夋柟鍚戯細鍏夋簮鐓у皠鏂瑰悜\x0d\x0a\x20\x20\x20\x20lightColor:\x20vec3f,\x20\x20//\x20骞宠鍏夐鑹诧細鍏夌殑\x20RGB\x20鍊糪x0d\x0a\x20\x20\x20\x20lightIntensity:f32,\x20//\x20骞宠鍏夊己搴︼細鍏夌殑浜害\x0d\x0a\x20\x20\x20\x20isOcclusion:\x20bool,\x20\x20//\x20鏄惁閬尅锛氳〃绀烘槸鍚︽湁閬尅鏁堟灉\x0d\x0a\x20\x20\x20\x20baseColor:\x20vec3f,\x20\x20\x20//\x20鍩虹棰滆壊锛氭潗璐ㄦ湰韬殑棰滆壊\x0d\x0a\x20\x20\x20\x20metallic:\x20f32,\x20\x20\x20\x20\x20\x20//\x20閲戝睘搴︼細0\x20琛ㄧず闈為噾灞烇紝1\x20琛ㄧず閲戝睘\x0d\x0a\x20\x20\x20\x20roughness:\x20f32,\x20\x20\x20\x20\x20//\x20绮楃硻搴︼細0\x20琛ㄧず鍏夋粦锛�1\x20琛ㄧず绮楃硻\x0d\x0a\x20\x20\x20\x20gi_ambientLight:\x20vec3f,\x20//\x20鍏ㄥ眬鍏夛細鐜鍏夌殑棰滆壊鍜屽己搴x0d\x0a\x20\x20\x20\x20ao\x20:\x20f32,\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20//\x20鐜閬斀锛氭帶鍒堕槾褰卞己搴x0d\x0a\x20\x20\x20\x20emissive\x20:\x20vec3f,\x20\x20\x20//\x20鑷彂鍏夛細鏉愯川鑷韩鍙戝嚭鐨勫厜\x0d\x0a};\x0d\x0a\x0d\x0afn\x20GeometrySchlickGGX(NdotV\x20:\x20f32,\x20roughness\x20:\x20f32)\x20->\x20f32\x20{\x0d\x0a\x20\x20let\x20r\x20=\x20(roughness\x20+\x201.0);\x0d\x0a\x20\x20let\x20k\x20=\x20(r*r)\x20/\x208.0;\x0d\x0a\x20\x20let\x20denom\x20=\x20NdotV\x20*\x20(1.0\x20-\x20k)\x20+\x20k;\x0d\x0a\x20\x20return\x20NdotV\x20/\x20denom;\x0d\x0a}\x0d\x0a\x0d\x0afn\x20rangeAttenuation(range\x20:\x20f32,\x20distance\x20:\x20f32)\x20->\x20f32\x20{\x0d\x0a\x20\x20if\x20(range\x20<=\x200.0)\x20{\x0d\x0a\x20\x20\x20\x20\x20\x20return\x201.0\x20/\x20pow(distance,\x202.0);\x0d\x0a\x20\x20}\x0d\x0a\x20\x20return\x20clamp(1.0\x20-\x20pow(distance\x20/\x20range,\x204.0),\x200.0,\x201.0)\x20/\x20pow(distance,\x202.0);\x0d\x0a}\x0d\x0a\x0d\x0afn\x20pbrLighting(input:\x20PBRInfo)\x20->\x20vec3f\x20{\x0d\x0a\x20\x20\x20\x20var\x20finalColor\x20=\x20vec3f(0.0);\x20//\x20鍒濆鍖栨渶缁堥鑹蹭负榛戣壊锛屽悗缁疮鍔犲厜鐓ф晥鏋淺x0d\x0a\x0d\x0a\x20\x20\x20\x20let\x20NdotV\x20=\x20max(dot(input.normal,\x20input.viewDir),\x20Epsilon);\x20//\x20娉曠嚎鍜岃瑙掓柟鍚戠殑鐐圭Н锛孍psilon\x20閬垮厤闄や互\x200锛岃〃绀鸿瑙掍笌琛ㄩ潰鐨勫瀭鐩寸▼搴x0d\x0a\x20\x20\x20\x20let\x20H\x20=\x20normalize(input.viewDir\x20+\x20input.lightDir);\x20//\x20鍗婄▼鍚戦噺锛氳瑙掑拰鍏夌収鏂瑰悜鐨勪腑闂存柟鍚戯紝鐢ㄤ簬闀滈潰鍙嶅皠璁$畻\x0d\x0a\x20\x20\x20\x20let\x20VdotH\x20=\x20clamp(dot(input.viewDir,\x20H),\x200.0,\x201.0);\x20//\x20瑙嗚鍜屽崐绋嬪悜閲忕殑鐐圭Н锛岄檺鍒跺湪\x20[0,\x201]锛岀敤浜庤彶娑呭皵鏁堝簲\x0d\x0a\x20\x20\x20\x20let\x20NdotL\x20=\x20max(dot(input.normal,\x20input.lightDir),\x200.0);\x20//\x20娉曠嚎鍜屽厜鐓ф柟鍚戠殑鐐圭Н锛岃〃绀哄厜鐓у己搴︼紝0\x20琛ㄧず鏃犲厜鐓x0d\x0a\x0d\x0a\x20\x20\x20\x20//\x20Cook-Torrance\x20BRDF锛歅BR\x20鐨勬牳蹇冿紝鍒嗕负娉曠嚎鍒嗗竷\x20(NDF)銆佸嚑浣曢伄鎸x20(G)\x20鍜岃彶娑呭皵椤筡x20(F)\x0d\x0a\x20\x20\x20\x20let\x20a\x20\x20\x20\x20\x20\x20=\x20input.roughness\x20*\x20input.roughness;\x20//\x20绮楃硻搴﹀钩鏂癸紝褰卞搷楂樺厜鍒嗘暎绋嬪害\x0d\x0a\x20\x20\x20\x20let\x20a2\x20\x20\x20\x20\x20=\x20a\x20*\x20a;\x20//\x20a\x20鐨勫钩鏂癸紝鐢ㄤ簬\x20NDF\x20璁$畻\x0d\x0a\x20\x20\x20\x20let\x20NdotH\x20\x20=\x20max(dot(input.normal,\x20H),\x200.0);\x20//\x20娉曠嚎鍜屽崐绋嬪悜閲忕殑鐐圭Н锛岃〃绀洪珮鍏夋柟鍚戜竴鑷存�x0d\x0a\x20\x20\x20\x20let\x20NdotH2\x20=\x20NdotH\x20*\x20NdotH;\x20//\x20NdotH\x20鐨勫钩鏂癸紝鐢ㄤ簬鍏紡鍒嗘瘝\x0d\x0a\x20\x20\x20\x20let\x20denom\x20\x20=\x20(NdotH2\x20*\x20(a2\x20-\x201.0)\x20+\x201.0);\x20//\x20鍒嗘瘝閮ㄥ垎锛屽熀浜嶾x20GGX\x20妯″瀷璁$畻楂樺厜鍒嗗竷\x0d\x0a\x20\x20\x20\x20let\x20NDF\x20=\x20a2\x20/\x20(PI\x20*\x20denom\x20*\x20denom);\x20//\x20娉曠嚎鍒嗗竷鍑芥暟锛氬喅瀹氶暅闈㈤珮鍏夌殑褰㈢姸鍜屽己搴︼紝绮楃硻搴﹁秺楂樿秺鍒嗘暎\x0d\x0a\x0d\x0a\x20\x20\x20\x20let\x20ggx2\x20\x20=\x20GeometrySchlickGGX(NdotV,\x20input.roughness);\x20//\x20瑙嗚鏂瑰悜鐨勫嚑浣曢伄鎸★紝妯℃嫙绮楃硻琛ㄩ潰鐨勯槾褰盶x0d\x0a\x20\x20\x20\x20let\x20ggx1\x20\x20=\x20GeometrySchlickGGX(NdotL,\x20input.roughness);\x20//\x20鍏夌収鏂瑰悜鐨勫嚑浣曢伄鎸x0d\x0a\x20\x20\x20\x20let\x20G\x20=\x20ggx1\x20*\x20ggx2;\x20//\x20鎬诲嚑浣曢伄鎸★細涓よ�呯浉涔橈紝琛ㄧず鍏夌嚎琚〃闈㈠井缁撴瀯閬尅鐨勭▼搴x0d\x0a\x0d\x0a\x20\x20\x20\x20let\x20f0\x20=\x20mix(vec3f(0.04),\x20input.baseColor,\x20vec3f(input.metallic));\x20//\x20鍩虹鍙嶅皠鐜囷細闈為噾灞炰负\x200.04锛岄噾灞炵敤鍩虹棰滆壊锛岄噾灞炲害鍐冲畾鎻掑�糪x0d\x0a\x20\x20\x20\x20let\x20F\x20=\x20f0\x20+\x20(vec3f(1.0)\x20-\x20f0)\x20*\x20pow(1.0\x20-\x20VdotH,\x205.0);\x20//\x20鑿叉秴灏旈」锛氳绠楅暅闈㈠弽灏勬瘮渚嬶紝杈圭紭鍙嶅皠鏇村己\x0d\x0a\x0d\x0a\x20\x20\x20\x20let\x20kD\x20=\x20(vec3f(1.0)\x20-\x20F)\x20*\x20(1.0\x20-\x20input.metallic);\x20//\x20婕弽灏勬瘮渚嬶細闀滈潰鍙嶅皠涔嬪鐨勯儴鍒嗭紝闈為噾灞炴湁鏇村婕弽灏刓x0d\x0a\x20\x20\x20\x20let\x20directLight_diffuse\x20=\x20kD\x20*\x20input.baseColor\x20/\x20PI;\x0d\x0a\x0d\x0a\x20\x20\x20\x20let\x20specular\x20=\x20(NDF\x20*\x20G\x20*\x20F)\x20/\x20max(4.0\x20*\x20NdotV\x20*\x20NdotL,\x200.001);\x20//\x20闀滈潰鍙嶅皠锛欳ook-Torrance\x20鍏紡锛�0.001\x20閬垮厤闄や互\x200\x0d\x0a\x0d\x0a\x20\x20\x20\x20//\x20let\x20attenuation\x20=\x20rangeAttenuation(light.range,\x20distance);\x20//\x20濡備綍鏄偣鍏夋簮闇�瑕佽繘琛岃“鍑廫x0d\x0a\x0d\x0a\x20\x20\x20\x20let\x20radiance\x20=\x20input.lightColor\x20*\x20input.lightIntensity;\x20//\x20鍏ュ皠鍏夊己锛氬厜鐨勯鑹蹭箻浠ュ己搴x0d\x0a\x20\x20\x20\x20let\x20directLight\x20=\x20(directLight_diffuse\x20+\x20specular)\x20*\x20radiance\x20*\x20NdotL;\x20//\x20鐩存帴鍏夎础鐚細婕弽灏刓x20+\x20闀滈潰鍙嶅皠\x0d\x0a\x0d\x0a\x20\x20\x20\x20//\x20娣诲姞鍩虹鐜鍏塡x0d\x0a\x20\x20\x20\x20let\x20ambientLight\x20=\x20input.gi_ambientLight\x20*\x20input.baseColor\x20*\x20(1.0\x20-\x20input.metallic);\x20//\x20鐜鍏夛細鍏ㄥ眬鍏塡x20脳\x20鍩虹棰滆壊\x20脳\x20闈為噾灞炲洜瀛怽x0d\x0a\x20\x20\x20\x20finalColor\x20=\x20directLight\x20+\x20ambientLight;\x20//\x20鏈�缁堥鑹瞈x20=\x20鐩存帴鍏塡x20+\x20鐜鍏夛紝纭繚鑳屽鍏夋簮鐨勯儴鍒嗕篃鏈変寒搴x0d\x0a\x0d\x0a\x20\x20\x20\x20return\x20finalColor;\x20//\x20杩斿洖鏈�缁堥鑹瞈x0d\x0a}\x0d\x0a\x0d\x0afn\x20computeShadowWithCSMPCF3(layer:\x20i32,\x20vPositionFromLight:\x20vec4f,\x20shadowTexture:\x20texture_depth_2d_array,\x0d\x0a\x20samplerDepth:\x20sampler_comparison,\x20shadowMapSizeAndInverse:\x20vec2f,\x20darkness:\x20f32)\x20->\x20f32\x0d\x0a{\x0d\x0a\x20\x20\x20\x20var\x20clipSpace:\x20vec3f\x20=\x20vPositionFromLight.xyz\x20/\x20vPositionFromLight.w;\x0d\x0a\x20\x20\x20\x20var\x20uvDepth:\x20vec3f\x20=\x20\x20vec3f(0.5\x20*\x20clipSpace.xyz\x20+\x20\x20vec3f(0.5));\x0d\x0a\x20\x20\x20\x20\x20\x20\x20\x20uvDepth.y\x20=\x201\x20-\x20uvDepth.y;\x0d\x0a\x0d\x0a\x20\x20\x20\x20uvDepth.z\x20=\x20clipSpace.z\x20+\x200.0005;\x0d\x0a\x0d\x0a//\x20\x20\x20\x20\x20\x20\x20\x20var\x20shadow:\x20f32\x20=\x20textureSampleCompareLevel(shadowTexture,\x20samplerDepth,\x20uvDepth.xy,\x20layer,\x20uvDepth.z);\x0d\x0a//\x20\x20\x20\x20\x20\x20\x20\x20return\x20mix(darkness,\x201.,\x20shadow);\x0d\x0a\x0d\x0a\x0d\x0a\x20\x20\x20\x20\x20\x20\x20\x20var\x20uv:\x20vec2f\x20=\x20uvDepth.xy\x20*\x20shadowMapSizeAndInverse.x;\x09//\x20uv\x20in\x20texel\x20units\x0d\x0a\x20\x20\x20\x20\x20\x20\x20\x20uv\x20+=\x200.5;\x09\x09\x09\x09\x09\x09\x09\x09\x09\x09\x09//\x20offset\x20of\x20half\x20to\x20be\x20in\x20the\x20center\x20of\x20the\x20texel\x0d\x0a\x20\x20\x20\x20\x20\x20\x20\x20var\x20st:\x20vec2f\x20=\x20fract(uv);\x09\x09\x09\x09\x09\x09\x09\x09//\x20how\x20far\x20from\x20the\x20center\x0d\x0a\x20\x20\x20\x20\x20\x20\x20\x20var\x20base_uv:\x20vec2f\x20=\x20floor(uv)\x20-\x200.5;\x09\x09\x09\x09\x09\x09//\x20texel\x20coord\x0d\x0a\x20\x20\x20\x20\x20\x20\x20\x20base_uv\x20*=\x20shadowMapSizeAndInverse.y;\x09\x09\x09\x09//\x20move\x20back\x20to\x20uv\x20coords\x0d\x0a\x0d\x0a\x20\x20\x20\x20\x20\x20\x20\x20//\x20Equation\x20resolved\x20to\x20fit\x20in\x20a\x203*3\x20distribution\x20like\x0d\x0a\x20\x20\x20\x20\x20\x20\x20\x20//\x201\x202\x201\x0d\x0a\x20\x20\x20\x20\x20\x20\x20\x20//\x202\x204\x202\x0d\x0a\x20\x20\x20\x20\x20\x20\x20\x20//\x201\x202\x201\x0d\x0a\x20\x20\x20\x20\x20\x20\x20\x20var\x20uvw0:\x20vec2f\x20=\x203.\x20-\x202.\x20*\x20st;\x0d\x0a\x20\x20\x20\x20\x20\x20\x20\x20var\x20uvw1:\x20vec2f\x20=\x201.\x20+\x202.\x20*\x20st;\x0d\x0a\x20\x20\x20\x20\x20\x20\x20\x20var\x20u:\x20vec2f\x20=\x20\x20vec2f((2.\x20-\x20st.x)\x20/\x20uvw0.x\x20-\x201.,\x20st.x\x20/\x20uvw1.x\x20+\x201.)\x20*\x20shadowMapSizeAndInverse.y;\x0d\x0a\x20\x20\x20\x20\x20\x20\x20\x20var\x20v:\x20vec2f\x20=\x20\x20vec2f((2.\x20-\x20st.y)\x20/\x20uvw0.y\x20-\x201.,\x20st.y\x20/\x20uvw1.y\x20+\x201.)\x20*\x20shadowMapSizeAndInverse.y;\x0d\x0a\x0d\x0a\x20\x20\x20\x20\x20\x20\x20\x20var\x20shadow:\x20f32\x20=\x200.;\x0d\x0a\x20\x20\x20\x20\x20\x20\x20\x20shadow\x20+=\x20uvw0.x\x20*\x20uvw0.y\x20*\x20textureSampleCompareLevel(shadowTexture,\x20samplerDepth,\x20\x20base_uv.xy\x20+\x20\x20vec2f(u[0],\x20v[0]),\x20layer,\x20uvDepth.z);\x0d\x0a\x20\x20\x20\x20\x20\x20\x20\x20shadow\x20+=\x20uvw1.x\x20*\x20uvw0.y\x20*\x20textureSampleCompareLevel(shadowTexture,\x20samplerDepth,\x20\x20base_uv.xy\x20+\x20\x20vec2f(u[1],\x20v[0]),\x20layer,\x20uvDepth.z);\x0d\x0a\x20\x20\x20\x20\x20\x20\x20\x20shadow\x20+=\x20uvw0.x\x20*\x20uvw1.y\x20*\x20textureSampleCompareLevel(shadowTexture,\x20samplerDepth,\x20\x20base_uv.xy\x20+\x20\x20vec2f(u[0],\x20v[1]),\x20layer,\x20uvDepth.z);\x0d\x0a\x20\x20\x20\x20\x20\x20\x20\x20shadow\x20+=\x20uvw1.x\x20*\x20uvw1.y\x20*\x20textureSampleCompareLevel(shadowTexture,\x20samplerDepth,\x20\x20base_uv.xy\x20+\x20\x20vec2f(u[1],\x20v[1]),\x20layer,\x20uvDepth.z);\x0d\x0a\x20\x20\x20\x20\x20\x20\x20\x20shadow\x20=\x20shadow\x20/\x2016.;\x0d\x0a\x20\x20\x20\x20return\x20mix(darkness,\x201.,\x20shadow);\x0d\x0a}\x0d\x0a\x0d\x0a\x0d\x0a//\x20linear\x20<->\x20sRGB\x20conversions\x0d\x0afn\x20linearTosRGB(linea\x20:\x20vec3f)\x20->\x20vec3f\x20{\x0d\x0a\x20\x20\x20\x20if\x20(all(linea\x20<=\x20vec3f(0.0031308,\x200.0031308,\x200.0031308)))\x20{\x0d\x0a\x20\x20\x20\x20\x20\x20\x20\x20return\x20linea\x20*\x2012.92;\x0d\x0a\x20\x20\x20\x20}\x0d\x0a\x20\x20\x20\x20return\x20(pow(abs(linea),\x20vec3f(1.0/2.4,\x201.0/2.4,\x201.0/2.4))\x20*\x201.055)\x20-\x20vec3f(0.055,\x200.055,\x200.055);\x0d\x0a}\x0d\x0a\x0d\x0afn\x20sRGBToLinear(srgb\x20:\x20vec3f)\x20->\x20vec3f\x20{\x0d\x0a\x20\x20\x20\x20if\x20(all(srgb\x20<=\x20vec3f(0.04045,\x200.04045,\x200.04045)))\x20{\x0d\x0a\x20\x20\x20\x20\x20\x20\x20\x20return\x20srgb\x20/\x20vec3f(12.92,\x2012.92,\x2012.92);\x0d\x0a\x20\x20\x20\x20}\x0d\x0a\x20\x20\x20\x20return\x20pow((srgb\x20+\x20vec3f(0.055,\x200.055,\x200.055))\x20/\x20vec3f(1.055,\x201.055,\x201.055),\x20vec3f(2.4,\x202.4,\x202.4));\x0d\x0a}\x0d\x0a\x0d\x0a','vm_target_operate','@group(1)\x20@binding(0)\x20var<storage,read>\x20renderIndex:\x20array<u32>;','ccw','lightBodiesAssociate_Uniform_VmBuffer','lightBodiesSpaceAdd_VmBuffer','OrganizeMeshVmData','MeshRenderIntend','accuracyOffset','beginComputePass','readMesh_Uniform_DataViewU32','copyBufferToBuffer','resolve','lightBodiesAssociateWorkgroups','renderDebugTest2Pipeline','createPipelineLayout','push','nearest','renderMaterial_VmBuffer','cos','lightInfo','vec3','edgeMergeComputeBingGroup','dataCallBack','replace','鏇存柊鏄惧瓨','renderToCanvasBindGroup','let\x20ri\x20=\x20vec2<u32>(input.instanceIndex,input.vertexIndex);','vec4','timestamp','struct\x20SelfUniform\x20{\x0d\x0a\x20\x20\x20\x20overlayColor:\x20vec4<f32>,\x0d\x0a\x20\x20\x20\x20outlineColor:\x20vec4<f32>,\x0d\x0a};\x0d\x0a\x0d\x0a@group(0)\x20@binding(0)\x20var<uniform>\x20scene:\x20SceneInfoStruct;\x0d\x0a@group(0)\x20@binding(1)\x20var<storage,read>\x20modelData:\x20array<f32>;\x0d\x0a@group(0)\x20@binding(2)\x20var<storage,read>\x20instanceData:\x20array<f32>;\x0d\x0a@group(0)\x20@binding(3)\x20var<storage,read>\x20meshData:\x20array<f32>;\x0d\x0a@group(0)\x20@binding(4)\x20var<storage,read>\x20meshLodData:\x20array<f32>;\x0d\x0a@group(0)\x20@binding(5)\x20var<uniform>\x20selfUniform\x20:\x20SelfUniform;\x0d\x0a@group(0)\x20@binding(6)\x20var<storage,read>\x20operateData:\x20array<f32>;\x0d\x0a@group(1)\x20@binding(0)\x20var<storage,read>\x20renderIndex:\x20array<u32>;\x0d\x0a\x0d\x0astruct\x20Model\x20{\x0d\x0a\x20\x20\x20\x20id:\x20u32,\x0d\x0a\x20\x20\x20\x20transform:\x20mat4x4<f32>,\x0d\x0a\x20\x20\x20\x20status:\x20u32,\x0d\x0a};\x0d\x0a\x0d\x0afn\x20getModel(offset:u32)\x20->\x20Model\x20{\x0d\x0a\x20\x20\x20\x20var\x20model\x20:\x20Model;\x0d\x0a\x20\x20\x20\x20model.id\x20=\x20bitcast<u32>(modelData[offset\x20+\x2016]);\x0d\x0a\x0d\x0a\x20\x20\x20\x20model.transform\x20=\x20mat4x4<f32>(\x0d\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20modelData[offset],modelData[offset\x20+\x201],modelData[offset\x20+\x202],modelData[offset\x20+\x203],\x0d\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20modelData[offset\x20+\x204],modelData[offset\x20+\x205],modelData[offset\x20+\x206],modelData[offset\x20+\x207],\x0d\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20modelData[offset\x20+\x208],modelData[offset\x20+\x209],modelData[offset\x20+\x2010],modelData[offset\x20+\x2011],\x0d\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20modelData[offset\x20+\x2012],modelData[offset\x20+\x2013],modelData[offset\x20+\x2014],modelData[offset\x20+\x2015]);\x0d\x0a\x0d\x0a\x20\x20\x20\x20model.status\x20=\x20bitcast<u32>(modelData[offset\x20+\x2017]);\x0d\x0a\x0d\x0a\x20\x20\x20\x20return\x20model;\x0d\x0a}\x0d\x0a\x0d\x0a\x0d\x0astruct\x20Instance\x20{\x0d\x0a\x20\x20\x20\x20id:\x20u32,\x0d\x0a\x20\x20\x20\x20transform:\x20mat4x4<f32>,\x0d\x0a\x20\x20\x20\x20modelPtr:\x20u32,\x0d\x0a\x20\x20\x20\x20meshLodPtr:\x20u32,\x0d\x0a\x20\x20\x20\x20status:\x20u32,\x0d\x0a\x20\x20\x20\x20materialPtr:\x20u32,\x0d\x0a\x20\x20\x20\x20operatePtr:\x20u32,\x0d\x0a};\x0d\x0a\x0d\x0a\x0d\x0afn\x20getInstance(offset:u32)\x20->\x20Instance\x20{\x0d\x0a\x20\x20\x20\x20var\x20ins\x20:\x20Instance;\x0d\x0a\x0d\x0a\x20\x20\x20\x20ins.modelPtr\x20=\x20bitcast<u32>(instanceData[offset]);\x0d\x0a\x20\x20\x20\x20ins.id\x20=\x20bitcast<u32>(instanceData[offset\x20+\x201]);\x0d\x0a\x0d\x0a\x20\x20\x20\x20ins.transform\x20=\x20mat4x4<f32>(\x0d\x0a\x20\x20\x20\x20instanceData[offset\x20+\x203],instanceData[offset\x20+\x204],instanceData[offset\x20+\x205],0,\x0d\x0a\x20\x20\x20\x20instanceData[offset\x20+\x206],instanceData[offset\x20+\x207],instanceData[offset\x20+\x208],0,\x0d\x0a\x20\x20\x20\x20instanceData[offset\x20+\x209],instanceData[offset\x20+\x2010],instanceData[offset\x20+\x2011],0,\x0d\x0a\x20\x20\x20\x20instanceData[offset\x20+\x2012],instanceData[offset\x20+\x2013],instanceData[offset\x20+\x2014],1);\x0d\x0a\x0d\x0a\x20\x20\x20\x20ins.meshLodPtr\x20=\x20bitcast<u32>(instanceData[offset\x20+\x2025]);\x0d\x0a\x20\x20\x20\x20ins.operatePtr\x20=\x20bitcast<u32>(instanceData[offset\x20+\x2021]);\x0d\x0a\x20\x20\x20\x20ins.status\x20=\x20bitcast<u32>(instanceData[offset\x20+\x2022]);\x0d\x0a\x20\x20\x20\x20ins.materialPtr\x20=\x20bitcast<u32>(instanceData[offset\x20+\x2023]);\x0d\x0a\x0d\x0a\x20\x20\x20\x20return\x20ins;\x0d\x0a}\x0d\x0a\x0d\x0astruct\x20MeshLodInfo\x20{\x0d\x0a\x20\x20\x20\x20meshId:\x20u32,\x0d\x0a\x20\x20\x20\x20density:\x20f32,\x0d\x0a\x20\x20\x20\x20materialPtr:\x20u32,\x0d\x0a\x20\x20\x20\x20verticesCount:\x20u32,\x0d\x0a\x20\x20\x20\x20meshPtr:\x20u32,\x0d\x0a};\x0d\x0a\x0d\x0afn\x20getMeshLodInfo(meshLodPtr:u32)\x20->\x20MeshLodInfo\x20{\x0d\x0a\x0d\x0a\x20\x20\x20\x20var\x20meshLodInfo\x20:\x20MeshLodInfo;\x0d\x0a\x0d\x0a//\x20\x20\x20\x20meshLodInfo.meshId\x20=\x20bitcast<u32>(meshLodData[meshLodPtr]);\x0d\x0a//\x20\x20\x20\x20meshLodInfo.density\x20=\x20meshLodData[meshLodPtr\x20+\x201];\x0d\x0a\x20\x20\x20\x20meshLodInfo.materialPtr\x20=\x20bitcast<u32>(meshLodData[meshLodPtr\x20+\x202]);\x0d\x0a//\x20\x20\x20\x20meshLodInfo.verticesCount\x20=\x20bitcast<u32>(meshLodData[meshLodPtr\x20+\x203]);\x0d\x0a\x20\x20\x20\x20meshLodInfo.meshPtr\x20=\x20bitcast<u32>(meshLodData[meshLodPtr\x20+\x204]);\x0d\x0a\x0d\x0a\x20\x20\x20\x20return\x20meshLodInfo;\x0d\x0a\x0d\x0a}\x0d\x0a\x0d\x0astruct\x20Position\x20{\x0d\x0a\x20\x20\x20\x20position:\x20vec3<f32>,\x0d\x0a\x20\x20\x20\x20normal:\x20vec3<f32>,\x0d\x0a\x20\x20\x20\x20uv:\x20vec2<f32>,\x0d\x0a};\x0d\x0a\x0d\x0afn\x20getPosition(offset:u32,vertexIndex:u32)\x20->\x20Position\x20{\x0d\x0a\x20\x20\x20\x20var\x20pos\x20:\x20Position;\x0d\x0a\x20\x20\x20\x20var\x20vertexIndexTemp\x20=\x20vertexIndex\x20*\x203;\x0d\x0a\x20\x20\x20\x20var\x20positionOffset\x20=\x20bitcast<u32>(meshData[offset\x20+\x20vertexIndexTemp]);\x0d\x0a\x20\x20\x20\x20var\x20normalOffset\x20=\x20bitcast<u32>(meshData[offset\x20+\x20vertexIndexTemp\x20+\x201]);\x0d\x0a\x20\x20\x20\x20var\x20uvOffset\x20=\x20bitcast<u32>(meshData[offset\x20+\x20vertexIndexTemp\x20+\x202]);\x0d\x0a\x0d\x0a\x20\x20\x20\x20pos.position\x20=\x20vec3(meshData[offset\x20+\x20positionOffset],meshData[offset\x20+\x20positionOffset\x20+\x201],meshData[offset\x20+\x20positionOffset\x20+\x202]);\x0d\x0a\x20\x20\x20\x20pos.normal\x20=\x20vec3(meshData[offset\x20+\x20normalOffset],meshData[offset\x20+\x20normalOffset\x20+\x201],meshData[offset\x20+\x20normalOffset\x20+\x202]);\x0d\x0a\x20\x20\x20\x20pos.uv\x20=\x20vec2(meshData[offset\x20+\x20uvOffset],meshData[offset\x20+\x20uvOffset\x20+\x201]);\x0d\x0a\x0d\x0a\x20\x20\x20\x20return\x20pos;\x0d\x0a}\x0d\x0a\x0d\x0astruct\x20VertexInput\x20{\x0d\x0a\x20\x20@builtin(vertex_index)\x20vertexIndex\x20:\x20u32,\x0d\x0a\x20\x20@builtin(instance_index)\x20instanceIndex\x20:\x20u32\x0d\x0a}\x0d\x0astruct\x20VertexOutput\x20{\x0d\x0a\x20\x20@builtin(position)\x20position:\x20vec4<f32>,\x0d\x0a\x20\x20@location(1)\x20@interpolate(flat)\x20status:\x20u32,\x0d\x0a};\x0d\x0a\x0d\x0a@vertex\x0d\x0afn\x20vert_main(input\x20:VertexInput)\x20->\x20VertexOutput\x20{\x0d\x0a\x0d\x0a\x20\x20\x20\x20//\x20instancePtr,vertexIndex\x0d\x0a\x20\x20\x20\x20let\x20ri\x20=\x20vec2<u32>(input.instanceIndex,input.vertexIndex);\x0d\x0a\x0d\x0a\x20\x20\x20\x20let\x20ins\x20=\x20getInstance(ri[0]);\x0d\x0a\x20\x20\x20\x20let\x20model\x20=\x20getModel(ins.modelPtr);\x0d\x0a\x0d\x0a\x20\x20\x20\x20let\x20meshLodInfo\x20=\x20getMeshLodInfo(ins.meshLodPtr);\x0d\x0a\x20\x20\x20\x20var\x20pos\x20:\x20Position;\x0d\x0a\x20\x20\x20\x20if(meshLodInfo.meshPtr\x20!=\x200){\x0d\x0a\x20\x20\x20\x20\x20\x20\x20\x20pos\x20=\x20getPosition(meshLodInfo.meshPtr,ri[1]);\x0d\x0a\x20\x20\x20\x20}\x0d\x0a\x0d\x0a\x20\x20\x20\x20var\x20output:\x20VertexOutput;\x0d\x0a\x20\x20\x20\x20if(ins.status\x20==\x202){\x0d\x0a\x20\x20\x20\x20\x20\x20\x20\x20var\x20wordPosition\x20=\x20model.transform\x20*\x20ins.transform\x20*\x20vec4(pos.position,1);\x0d\x0a\x20\x20\x20\x20\x20\x20\x20\x20if(ins.operatePtr\x20!=0){\x0d\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20let\x20operateTransform\x20=\x20mat4x4<f32>(\x0d\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20operateData[ins.operatePtr],operateData[ins.operatePtr\x20+\x201],operateData[ins.operatePtr\x20+\x202],operateData[ins.operatePtr\x20+\x203],\x0d\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20operateData[ins.operatePtr\x20+\x204],operateData[ins.operatePtr\x20+\x205],operateData[ins.operatePtr\x20+\x206],operateData[ins.operatePtr\x20+\x207],\x0d\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20operateData[ins.operatePtr\x20+\x208],operateData[ins.operatePtr\x20+\x209],operateData[ins.operatePtr\x20+\x2010],operateData[ins.operatePtr\x20+\x2011],\x0d\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20operateData[ins.operatePtr\x20+\x2012],operateData[ins.operatePtr\x20+\x2013],operateData[ins.operatePtr\x20+\x2014],operateData[ins.operatePtr\x20+\x2015]);\x0d\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20wordPosition\x20=\x20operateTransform\x20*\x20wordPosition;\x0d\x0a\x20\x20\x20\x20\x20\x20\x20\x20}\x0d\x0a\x20\x20\x20\x20\x20\x20\x20\x20output.position\x20=\x20scene.projectionViewMatrix\x20*\x20wordPosition;\x0d\x0a\x20\x20\x20\x20\x20\x20\x20\x20output.status\x20=\x20ins.status;\x0d\x0a\x20\x20\x20\x20}\x0d\x0a\x20\x20\x20\x20return\x20output;\x0d\x0a}\x0d\x0a\x0d\x0astruct\x20FragmentOutput\x20{\x0d\x0a\x20\x20@location(0)\x20color\x20:\x20vec4<f32>,\x0d\x0a}\x0d\x0a\x0d\x0a@fragment\x0d\x0afn\x20frag_main(input\x20:\x20VertexOutput)\x20->\x20FragmentOutput\x20{\x0d\x0a\x20\x20\x20\x20var\x20output\x20:\x20FragmentOutput;\x0d\x0a\x20\x20\x20\x20if(input.status\x20==\x202){\x0d\x0a\x20\x20\x20\x20\x20\x20\x20\x20output.color\x20=\x20vec4f(1,1,1,1);\x0d\x0a\x20\x20\x20\x20}else{\x0d\x0a\x20\x20\x20\x20\x20\x20\x20\x20discard\x20;\x0d\x0a\x20\x20\x20\x20}\x0d\x0a\x20\x20\x20\x20return\x20output;\x0d\x0a}\x0d\x0a','alpha_renderIndex_BindGroup','vm_target_meshLod_up','requestDevice','/THETA.bin','targets','102964zxAblW','MeshRender','53006ylUMsD','cbId','toFixed','apply','ssrReflections_Uniform_DataView','streamRender_3dData_VmBuffer','streamRender_particle_VmBuffer','adapter','rotationSpeed','StreamRender','createRenderPipeline','voxelRender_Indirect_VmBuffer','scene_dataViewU32','status','need_read_renderMaterial','alpha_Pipeline','line-list','renderDebugTest1BindGroup','r32uint','readTemp_VmBuffer2','instancesAreaComputeBingGroup','ssrReflectionsComputeBingGroup','albedo_Texture','maxComputeInvocationsPerWorkgroup','createObjectURL','readTemp_noLocking','edgeStrength_finalColor_Texture','comparison','createRenderBundleEncoder','SetInstanceStatus','ShiftLeft','clear','pointermove','RenderDebugTest','meshRenderRenderPassDescriptor','lightBodiesBounceOne_Uniform_VmBuffer','context3','CancelInstanceTransformByExtendedPropertiesId','normal_Texture','lastPickPositionValue','format','createCommandEncoder','finalDisplay_Uniform_VmBuffer','readPickId_noLocking','oldCameraData','instancesAreaList_VmBuffer','webgpu','add','button','renderDebugTest4Pipeline','\x20\x20\x20\x20LightBodiesAssociate','Render','OrganizeMesh','Cesium','pointerup','left','edgeStrengthComputeBingGroup','fromAxisAngle','lightBodiesAssociate_ComputeBingGroup','msgType','readTemp_noLocking2','VolumeRenderIntend','lightBodiesBounceTwo_VmBuffer','currentFrustum','renderToCanvas_Uniform_DataView','oldProjection','pointerdown','dynamicSpaceComputePipeline','viewMatrix','let\x20ri\x20=\x20getRenderIndex(input);','RenderDebugTestIntend','fill','SetClipPlaneArray','STORAGE_BINDING','outlineColor','lightBodiesBounceOneComputeBingGroup','vmOffset','alpha_color_Texture','rgba32float','presentationFormat','alpha_Uniform_DataView','isNaN','code','ArrowUp','projectToPixelMatrix','instanceItemVmSize','href','blur_computeConstants_ComputeBingGroup','alpha_RenderPassDescriptor','float','speedUp','fig','FinalDisplayIntend','alpha_Uniform_DataViewU32','right','multiDrawIndirect','spaceIndex_Heartbeat','_numberOfVertices','Texture','writeBuffer','lightBodiesBounceTwoComputePipeline','updateMeshOffsetComputeBingGroup','223f41a40e82d11a2198.js','sin','drawIndirect','createView','position','blur_filterSize','frag_main','renderShadowRenderPassDescriptor','from','voxelRenderRenderPassDescriptor','depthStencilAttachment','uniform','alpha_BingGroup','LightBodiesRemoveDuplicatesComputePipeline','zeroVmBuffer','backward','leftRoll','bim瀵硅薄鍙兘鍒涘缓涓�娆�','LEQUAL','downPitch','triangle-list','(((.+)+)+)+$','down','\x20\x20\x20\x20ReadMesh','renderMaterial_read_VmBuffer','ddWorker','scene_VmBuffer','instancesCount','SetInstanceStatusByComponentIds','ModelMeshAreaOrder','enable\x20f16;\x0d\x0a\x0d\x0astruct\x20SelfUniform\x20{\x0d\x0a\x20\x20\x20\x20projectToPixelMatrix:\x20mat4x4<f32>,\x0d\x0a\x20\x20\x20\x20viewMatrix:\x20mat4x4<f32>,\x0d\x0a\x20\x20\x20\x20delta_time\x20:\x20f32,\x20\x20\x20\x20\x20\x20\x20//\x20鏃堕棿姝ラ暱\x0d\x0a\x20\x20\x20\x20max_lifetime\x20:\x20f32,\x20\x20\x20\x20\x20//\x20绮掑瓙鏈�澶у鍛絓x0d\x0a\x20\x20\x20\x20fade_factor\x20:\x20f32,\x20\x20\x20\x20\x20\x20//\x20杞ㄨ抗琛板噺鍥犲瓙\x20(0.0-1.0)\x0d\x0a\x20\x20\x20\x20seed1:\x20u32,\x0d\x0a\x20\x20\x20\x20seed2:\x20u32,\x0d\x0a\x20\x20\x20\x20seed3:\x20u32,\x0d\x0a\x20\x20\x20\x20width:\x20f32,\x0d\x0a\x20\x20\x20\x20height:\x20f32,\x0d\x0a\x20\x20\x20\x20depth:\x20f32,\x0d\x0a};\x0d\x0a\x0d\x0a@group(0)\x20@binding(0)\x20var<uniform>\x20selfUniform\x20:\x20SelfUniform;\x0d\x0a@group(0)\x20@binding(1)\x20var<uniform>\x20scene:\x20SceneInfoStruct;\x0d\x0a@group(0)\x20@binding(2)\x20var<storage,\x20read>\x20volumeData\x20:\x20array<vec2<f16>>;\x0d\x0a@group(0)\x20@binding(3)\x20var<storage,\x20read_write>\x20particles\x20:\x20array<vec4f>;\x0d\x0a@group(0)\x20@binding(4)\x20var<storage,\x20read_write>\x20particlesColor\x20:\x20array<vec4f>;\x0d\x0a@group(0)\x20@binding(5)\x20var\x20finalColor_texture\x20:\x20texture_storage_2d<rgba8unorm,write>;\x0d\x0a\x0d\x0astruct\x20InputData\x20{\x0d\x0a\x20\x20\x20@builtin(local_invocation_id)\x20local_id:\x20vec3<u32>,\x0d\x0a\x20\x20\x20@builtin(local_invocation_index)\x20local_index:\x20u32,\x0d\x0a\x20\x20\x20@builtin(global_invocation_id)\x20global_id:\x20vec3<u32>,\x0d\x0a}\x0d\x0a\x0d\x0a@compute\x20@workgroup_size(16,16)\x0d\x0afn\x20main(input:\x20InputData)\x20{\x0d\x0a\x0d\x0a\x20\x20\x20\x20//\x20鑾峰彇绾圭悊灏哄骞舵鏌ヨ竟鐣孿x0d\x0a\x20\x20\x20\x20let\x20texSizeU\x20=\x20textureDimensions(finalColor_texture);\x0d\x0a\x20\x20\x20\x20if\x20(any(input.global_id.xy\x20>=\x20texSizeU.xy))\x20{\x0d\x0a\x20\x20\x20\x20\x20\x20\x20\x20return;\x0d\x0a\x20\x20\x20\x20}\x0d\x0a\x20\x20\x20\x20let\x20texSize\x20=\x20vec2<f32>(texSizeU.xy);\x0d\x0a\x0d\x0a\x20\x20\x20\x20let\x20currentIndex\x20=\x20input.global_id.y\x20*\x20texSizeU.x\x20+\x20input.global_id.x;\x0d\x0a\x0d\x0a\x20\x20\x20\x20//\x20杞ㄨ抗鏁堟灉锛氬鏁翠釜杈撳嚭绾圭悊搴旂敤琛板噺\x0d\x0a\x20\x20\x20\x20particlesColor[currentIndex].r\x20-=\x200.05;\x0d\x0a\x20\x20\x20\x20particlesColor[currentIndex].g\x20-=\x200.05;\x0d\x0a\x20\x20\x20\x20particlesColor[currentIndex].b\x20-=\x200.05;\x0d\x0a\x20\x20\x20\x20if(particlesColor[currentIndex].r\x20+\x20particlesColor[currentIndex].b\x20+\x20particlesColor[currentIndex].g\x20>\x200.8){\x0d\x0a\x20\x20\x20\x20\x20\x20\x20\x20//\x20鍐欏叆杈撳嚭绾圭悊\x0d\x0a\x20\x20\x20\x20\x20\x20\x20\x20textureStore(finalColor_texture,\x20vec2(input.global_id.x,texSizeU.y\x20-\x20input.global_id.y),\x20particlesColor[currentIndex]);\x0d\x0a\x20\x20\x20\x20}\x0d\x0a\x0d\x0a\x0d\x0a\x20\x20\x20\x20let\x20llh\x20=\x20vec3f(particles[currentIndex].xyz\x20/\x2010);\x0d\x0a\x20\x20\x20\x20let\x20lon_lat_height\x20=\x20vec3f(\x20llh.x,\x20llh.y,\x20llh.z)\x20-\x20vec3f(180,90,0);\x0d\x0a\x20\x20\x20\x20let\x20lonRadians\x20=\x20lon_lat_height.x\x20*\x20DEG_TO_RAD;\x0d\x0a\x20\x20\x20\x20let\x20latRadians\x20=\x20lon_lat_height.y\x20*\x20DEG_TO_RAD;\x0d\x0a\x0d\x0a\x20\x20\x20\x20//\x20璁$畻WGS84妞渾褰㈣〃闈笂鐨勬甯哥煝閲廫x0d\x0a\x20\x20\x20\x20let\x20cosLon\x20=\x20cos(lonRadians);\x0d\x0a\x20\x20\x20\x20let\x20sinLon\x20=\x20sin(lonRadians);\x0d\x0a\x20\x20\x20\x20let\x20cosLat\x20=\x20cos(latRadians);\x0d\x0a\x20\x20\x20\x20let\x20sinLat\x20=\x20sin(latRadians);\x0d\x0a\x0d\x0a\x20\x20\x20\x20//\x20姝e父鐭㈤噺鎴愬垎:\x20(cos(phi)\x20*\x20cos(lambda),\x20cos(phi)\x20*\x20sin(lambda),\x20sin(phi))\x0d\x0a\x20\x20\x20\x20let\x20n\x20=\x20vec3f(\x0d\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20cosLat\x20*\x20cosLon,\x0d\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20cosLat\x20*\x20sinLon,\x0d\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20sinLat\x0d\x0a\x20\x20\x20\x20\x20\x20\x20\x20);\x0d\x0a\x20\x20\x20\x20//\x20绮掑瓙鍦ㄧ悆涓婄殑娉曠嚎\x0d\x0a\x20\x20\x20\x20//\x20WGS84鍋忓績鐜囧钩鏂筡x20(绾x200.00669438)\x0d\x0a\x20\x20\x20\x20//\x20let\x20e2\x20=\x200.00669438;\x0d\x0a\x20\x20\x20\x20//\x20(1.0\x20-\x20e2)\x20=\x200.99330562\x0d\x0a\x20\x20\x20\x20let\x20par_normal\x20=\x20normalize(vec3(n.xy,n.z\x20*\x200.99330562));\x0d\x0a\x20\x20\x20\x20let\x20view_dir\x20=\x20vec3(selfUniform.viewMatrix[0].z,selfUniform.viewMatrix[1].z,selfUniform.viewMatrix[2].z);\x0d\x0a\x20\x20\x20\x20//\x20妫�鏌ユ槸鍚﹀彲瑙侊紙娉曞悜閲忎笌鍏夌嚎鏂瑰悜澶硅\x20<\x2090掳锛塡x0d\x0a\x20\x20\x20\x20if(dot(par_normal,view_dir)\x20>\x200.0\x20&&\x20particles[currentIndex].w\x20>\x200){\x0d\x0a\x0d\x0a\x20\x20\x20\x20\x20\x20\x20\x20//\x20鏇存柊瀵垮懡\x0d\x0a\x20\x20\x20\x20\x20\x20\x20\x20particles[currentIndex].w\x20-=\x20selfUniform.delta_time;\x0d\x0a\x0d\x0a\x20\x20\x20\x20\x20\x20\x20\x20//\x20浠庨�熷害鍦轰腑閲囨牱閫熷害\x0d\x0a\x20\x20\x20\x20\x20\x20\x20\x20let\x20texCoord\x20=\x20vec3u(particles[currentIndex].xyz);\x0d\x0a\x20\x20\x20\x20\x20\x20\x20\x20let\x20vd_index\x20=\x20texCoord.z\x20*\x20u32(selfUniform.width)\x20*\x20u32(selfUniform.height)\x20+\x20texCoord.y\x20*\x20u32(selfUniform.width)\x20+\x20texCoord.x;\x0d\x0a\x20\x20\x20\x20\x20\x20\x20\x20let\x20velocity\x20=\x20vec3f(f32(volumeData[vd_index].x),f32(volumeData[vd_index].y),0.0);\x0d\x0a\x20\x20\x20\x20\x20\x20\x20\x20if(all(abs(velocity.xy)\x20>\x20vec2f(0.001))){\x0d\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20//\x20鏇存柊绮掑瓙浣嶇疆\x0d\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20let\x20new_pos\x20=\x20particles[currentIndex].xyz\x20+\x20velocity.xyz\x20*\x20selfUniform.delta_time;\x0d\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20particles[currentIndex].x\x20=\x20new_pos.x\x20%\x20selfUniform.width;\x0d\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20particles[currentIndex].y\x20=\x20new_pos.y\x20%\x20selfUniform.height;\x0d\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20particles[currentIndex].z\x20=\x20new_pos.z\x20%\x20selfUniform.depth;\x0d\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20particles[currentIndex].w\x20=\x20selfUniform.max_lifetime;\x0d\x0a\x20\x20\x20\x20\x20\x20\x20\x20}else{\x0d\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20particles[currentIndex].w\x20=\x200;\x0d\x0a\x20\x20\x20\x20\x20\x20\x20\x20}\x0d\x0a\x0d\x0a\x20\x20\x20\x20\x20\x20\x20\x20//\x20棰勮绠梊x20gamma\x20鐨勫钩鏂归」\x0d\x0a\x20\x20\x20\x20\x20\x20\x20\x20let\x20cos_lat_sq\x20=\x20cosLat\x20*\x20cosLat;\x0d\x0a\x20\x20\x20\x20\x20\x20\x20\x20let\x20sin_lat_sq\x20=\x20sinLat\x20*\x20sinLat;\x0d\x0a\x20\x20\x20\x20\x20\x20\x20\x20let\x20gamma\x20=\x20sqrt(A2\x20*\x20cos_lat_sq\x20+\x20C2\x20*\x20sin_lat_sq);\x0d\x0a\x20\x20\x20\x20\x20\x20\x20\x20let\x20inv_gamma\x20=\x201.0\x20/\x20gamma;\x0d\x0a\x0d\x0a\x20\x20\x20\x20\x20\x20\x20\x20//\x20鍚堝苟琛ㄩ潰鐐瑰拰楂樺害鍋忕Щ\x0d\x0a\x20\x20\x20\x20\x20\x20\x20\x20let\x20scale\x20=\x20vec3<f32>(A2\x20*\x20inv_gamma\x20+\x20lon_lat_height.z,\x20A2\x20*\x20inv_gamma\x20+\x20lon_lat_height.z,\x20C2\x20*\x20inv_gamma\x20+\x20lon_lat_height.z);\x0d\x0a\x20\x20\x20\x20\x20\x20\x20\x20let\x20pos\x20=\x20n\x20*\x20scale\x20-\x20vec3(scene.accuracyOffsetX,scene.accuracyOffsetY,scene.accuracyOffsetZ);\x0d\x0a\x0d\x0a\x20\x20\x20\x20\x20\x20\x20\x20let\x20screenSpace\x20=\x20selfUniform.projectToPixelMatrix\x20*\x20selfUniform.viewMatrix\x20*\x20vec4f(pos,1);\x0d\x0a\x20\x20\x20\x20\x20\x20\x20\x20let\x20output_coord\x20=\x20vec2u(screenSpace.xy\x20/\x20screenSpace.w);\x0d\x0a\x20\x20\x20\x20\x20\x20\x20\x20if(output_coord.x\x20<\x20texSizeU.x\x20&&\x0d\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20output_coord.y\x20<\x20texSizeU.y\x20&&\x0d\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20output_coord.x\x20>\x200\x20&&\x0d\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20output_coord.y\x20>\x200){\x0d\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20let\x20outputIndex\x20=\x20output_coord.y\x20*\x20texSizeU.x\x20+\x20output_coord.x;\x0d\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20particlesColor[outputIndex]\x20=\x20transferFunction(length(velocity.xyz),0,1.5);\x0d\x0a\x20\x20\x20\x20\x20\x20\x20\x20}\x0d\x0a\x20\x20\x20\x20}\x20else\x20{\x0d\x0a\x20\x20\x20\x20\x20\x20\x20\x20particles[currentIndex].w\x20=\x200;\x0d\x0a\x20\x20\x20\x20\x20\x20\x20\x20init_rand(input.global_id,vec3(selfUniform.seed1,selfUniform.seed2,selfUniform.seed3));\x0d\x0a\x0d\x0a\x20\x20\x20\x20\x20\x20\x20\x20//\x20璁$畻鍏夌嚎璧风偣鍜屾柟鍚慭x0d\x0a\x20\x20\x20\x20\x20\x20\x20\x20let\x20ndc_xy\x20=\x202.0\x20*\x20vec2(rand(),rand())\x20-\x201.0;\x0d\x0a\x20\x20\x20\x20\x20\x20\x20\x20let\x20clip\x20=\x20vec4<f32>(ndc_xy,\x200,\x201.0);\x0d\x0a\x20\x20\x20\x20\x20\x20\x20\x20let\x20viewPos\x20=\x20scene.inverse_projectionMatrix\x20*\x20clip;\x0d\x0a\x20\x20\x20\x20\x20\x20\x20\x20let\x20worldPos\x20=\x20scene.inverse_viewMatrix\x20*\x20vec4<f32>(viewPos.xyz\x20/\x20viewPos.w,\x201.0)\x20\x20+\x20vec4(scene.accuracyOffsetX,scene.accuracyOffsetY,scene.accuracyOffsetZ,0);\x0d\x0a\x20\x20\x20\x20\x20\x20\x20\x20let\x20rayOrigin\x20=\x20scene.inverse_viewMatrix[3].xyz\x20\x20+\x20vec3(scene.accuracyOffsetX,scene.accuracyOffsetY,scene.accuracyOffsetZ);\x20\x20//\x20鐩告満浣嶇疆\x0d\x0a\x20\x20\x20\x20\x20\x20\x20\x20let\x20rayDir\x20=\x20normalize(worldPos.xyz\x20-\x20rayOrigin);\x0d\x0a\x0d\x0a\x20\x20\x20\x20\x20\x20\x20\x20let\x20t\x20=\x20ray_sphere_intersection(rayOrigin,rayDir);\x0d\x0a\x0d\x0a\x20\x20\x20\x20\x20\x20\x20\x20if(t.x\x20>\x200\x20&&\x20t.y\x20>\x20t.x){\x0d\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20//\x20璁$畻浜ょ偣\x0d\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20let\x20p\x20=\x20rayOrigin\x20+\x20t.x\x20*\x20rayDir;\x0d\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20let\x20lon_lat\x20=\x20cartesian3_to_radians(p);\x0d\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20let\x20texCoord\x20=\x20vec3u(u32((lon_lat.x\x20*\x20RAD_TO_DEG\x20+\x20180)\x20*\x2010),u32((lon_lat.y\x20*\x20RAD_TO_DEG\x20+\x2090)\x20*\x2010),u32(rand()\x20*\x20selfUniform.depth));\x0d\x0a\x0d\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20let\x20vd_index\x20=\x20texCoord.z\x20*\x20u32(selfUniform.width)\x20*\x20u32(selfUniform.height)\x20+\x20texCoord.y\x20*\x20u32(selfUniform.width)\x20+\x20texCoord.x;\x0d\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20let\x20velocity\x20=\x20vec3f(f32(volumeData[vd_index].x),f32(volumeData[vd_index].y),0.0);\x0d\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20if(all(abs(velocity.xy)\x20>\x20vec2f(0.001))){\x0d\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20particles[currentIndex]\x20=\x20vec4f(vec3f(texCoord),selfUniform.max_lifetime);\x0d\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20}\x0d\x0a\x20\x20\x20\x20\x20\x20\x20\x20}\x0d\x0a\x20\x20\x20\x20}\x0d\x0a}\x0d\x0a\x0d\x0a\x0d\x0afn\x20transferFunction(temp:\x20f32,\x20min:f32,\x20max:f32)\x20->\x20vec4<f32>\x20{\x0d\x0a\x0d\x0a\x20\x20\x20\x20//\x20褰掍竴鍖朶x20temp\x20鍒癨x20[0,\x201]\x20鍖洪棿\x0d\x0a\x20\x20\x20\x20let\x20t\x20=\x20clamp((temp\x20-\x20min)\x20/\x20(max\x20-\x20min),\x200.0,\x201.0);\x0d\x0a\x0d\x0a\x20\x20\x20\x20//\x20瀹氫箟棰滆壊杩囨浮\x0d\x0a\x20\x20\x20\x20var\x20color:\x20vec3<f32>;\x0d\x0a\x20\x20\x20\x20if\x20(t\x20<=\x200.25)\x20{\x0d\x0a\x20\x20\x20\x20\x20\x20\x20\x20//\x20钃濊壊\x20(0,0,1)\x20鍒癨x20闈掕壊\x20(0,1,1)\x0d\x0a\x20\x20\x20\x20\x20\x20\x20\x20color\x20=\x20mix(vec3<f32>(0.0,\x200.0,\x201.0),\x20vec3<f32>(0.0,\x201.0,\x201.0),\x20t\x20/\x200.25);\x0d\x0a\x20\x20\x20\x20}\x20else\x20if\x20(t\x20<=\x200.5)\x20{\x0d\x0a\x20\x20\x20\x20\x20\x20\x20\x20//\x20闈掕壊\x20(0,1,1)\x20鍒癨x20缁胯壊\x20(0,1,0)\x0d\x0a\x20\x20\x20\x20\x20\x20\x20\x20color\x20=\x20mix(vec3<f32>(0.0,\x201.0,\x201.0),\x20vec3<f32>(0.0,\x201.0,\x200.0),\x20(t\x20-\x200.25)\x20/\x200.25);\x0d\x0a\x20\x20\x20\x20}\x20else\x20if\x20(t\x20<=\x200.75)\x20{\x0d\x0a\x20\x20\x20\x20\x20\x20\x20\x20//\x20缁胯壊\x20(0,1,0)\x20鍒癨x20榛勮壊\x20(1,1,0)\x0d\x0a\x20\x20\x20\x20\x20\x20\x20\x20color\x20=\x20mix(vec3<f32>(0.0,\x201.0,\x200.0),\x20vec3<f32>(1.0,\x201.0,\x200.0),\x20(t\x20-\x200.5)\x20/\x200.25);\x0d\x0a\x20\x20\x20\x20}\x20else\x20{\x0d\x0a\x20\x20\x20\x20\x20\x20\x20\x20//\x20榛勮壊\x20(1,1,0)\x20鍒癨x20绾㈣壊\x20(1,0,0)\x0d\x0a\x20\x20\x20\x20\x20\x20\x20\x20color\x20=\x20mix(vec3<f32>(1.0,\x201.0,\x200.0),\x20vec3<f32>(1.0,\x200.0,\x200.0),\x20(t\x20-\x200.75)\x20/\x200.25);\x0d\x0a\x20\x20\x20\x20}\x0d\x0a\x0d\x0a\x20\x20\x20\x20//\x20閫忔槑搴x0d\x0a\x20\x20\x20\x20let\x20alpha\x20=\x20t\x20*\x200.8;\x20\x20//\x20鍙皟鏁磋繖涓郴鏁癨x0d\x0a\x20\x20\x20\x20return\x20vec4<f32>(color,\x201);\x0d\x0a}\x0d\x0a\x0d\x0a//let\x20lon\x20=\x20缁忓害\x20[-180,\x20180)\x0d\x0a//let\x20lat\x20=\x20绾害\x20[-90,\x2090)\x0d\x0aconst\x20PI\x20=\x203.141592653589793;\x0d\x0aconst\x20a\x20=\x206378137.0;\x20//\x20妞悆璧ら亾鍗婂緞锛堥暱鍗婅酱锛塡x0d\x0aconst\x20c\x20=\x206356752.3142451793;\x20//\x20妞悆鏋佸崐寰勶紙鐭崐杞达級\x0d\x0aconst\x20A2\x20=\x2040680631590769.0;\x20//\x20a^2\x0d\x0aconst\x20C2\x20=\x2040408299984661.445;\x20//\x20c^2\x0d\x0aconst\x20inv_a\x20=\x201.0\x20/\x206378137.0;\x20//\x20棰勮绠梊x201/a\x0d\x0aconst\x20inv_b\x20=\x201.0\x20/\x206356752.3142451793;\x20//\x20棰勮绠梊x201/b\x0d\x0aconst\x20e2\x20=\x201.0\x20-\x20C2\x20/\x20A2;\x20//\x20鍋忓績鐜囧钩鏂筡x20e^2\x20=\x201\x20-\x20(c/a)^2\x0d\x0afn\x20radians_to_cartesian3(longitude:\x20f32,\x20latitude:\x20f32,\x20height:\x20f32)\x20->\x20vec3<f32>\x20{\x0d\x0a\x20\x20\x20\x20//\x20缂撳瓨涓夎鍑芥暟\x0d\x0a\x20\x20\x20\x20let\x20cosLat\x20=\x20cos(latitude);\x0d\x0a\x20\x20\x20\x20let\x20sinLat\x20=\x20sin(latitude);\x0d\x0a\x20\x20\x20\x20let\x20cos_lon\x20=\x20cos(longitude);\x0d\x0a\x20\x20\x20\x20let\x20sin_lon\x20=\x20sin(longitude);\x0d\x0a\x0d\x0a\x20\x20\x20\x20//\x20闈炲綊涓�鍖栨硶鍚戦噺\x0d\x0a\x20\x20\x20\x20let\x20n\x20=\x20vec3<f32>(\x0d\x0a\x20\x20\x20\x20\x20\x20\x20\x20cosLat\x20*\x20cos_lon,\x0d\x0a\x20\x20\x20\x20\x20\x20\x20\x20cosLat\x20*\x20sin_lon,\x0d\x0a\x20\x20\x20\x20\x20\x20\x20\x20sinLat\x0d\x0a\x20\x20\x20\x20);\x0d\x0a\x0d\x0a\x20\x20\x20\x20//\x20棰勮绠梊x20gamma\x20鐨勫钩鏂归」\x0d\x0a\x20\x20\x20\x20let\x20cos_lat_sq\x20=\x20cosLat\x20*\x20cosLat;\x0d\x0a\x20\x20\x20\x20let\x20sin_lat_sq\x20=\x20sinLat\x20*\x20sinLat;\x0d\x0a\x20\x20\x20\x20let\x20gamma\x20=\x20sqrt(A2\x20*\x20cos_lat_sq\x20+\x20C2\x20*\x20sin_lat_sq);\x0d\x0a\x20\x20\x20\x20let\x20inv_gamma\x20=\x201.0\x20/\x20gamma;\x0d\x0a\x0d\x0a\x20\x20\x20\x20//\x20鍚堝苟琛ㄩ潰鐐瑰拰楂樺害鍋忕Щ\x0d\x0a\x20\x20\x20\x20let\x20scale\x20=\x20vec3<f32>(A2\x20*\x20inv_gamma\x20+\x20height,\x20A2\x20*\x20inv_gamma\x20+\x20height,\x20C2\x20*\x20inv_gamma\x20+\x20height);\x0d\x0a\x20\x20\x20\x20return\x20n\x20*\x20scale;\x0d\x0a}\x0d\x0a\x0d\x0afn\x20cartesian3_to_radians(p:\x20vec3f)\x20->\x20vec2<f32>\x20{\x0d\x0a\x20\x20\x20\x20//\x20璁$畻缁忓害\x0d\x0a\x20\x20\x20\x20let\x20longitude\x20=\x20atan2(p.y,\x20p.x);\x0d\x0a\x20\x20\x20\x20//\x20璁$畻澶у湴绾害\x0d\x0a\x20\x20\x20\x20let\x20r\x20=\x20sqrt(p.x\x20*\x20p.x\x20+\x20p.y\x20*\x20p.y);\x20//\x20璧ら亾骞抽潰涓婄殑璺濈\x0d\x0a\x20\x20\x20\x20let\x20latitude\x20=\x20atan2(p.z,\x20r\x20*\x20(1.0\x20-\x20e2));\x20//\x20澶у湴绾害鍏紡\x0d\x0a\x0d\x0a\x20\x20\x20\x20return\x20vec2f(longitude,latitude);\x0d\x0a}\x0d\x0a\x0d\x0aconst\x20DEG_TO_RAD\x20=\x20PI\x20/\x20180.0;\x0d\x0aconst\x20RAD_TO_DEG\x20=\x20180.0\x20/\x20PI;\x0d\x0a//\x20瑙掑害杞姬搴x0d\x0afn\x20degrees_to_radians(degrees:\x20f32)\x20->\x20f32\x20{\x0d\x0a\x20\x20\x20\x20return\x20degrees\x20*\x20DEG_TO_RAD;\x0d\x0a}\x0d\x0a//\x20寮у害杞搴x0d\x0afn\x20radians_to_degrees(radians:\x20f32)\x20->\x20f32\x20{\x0d\x0a\x20\x20\x20\x20return\x20radians\x20*\x20RAD_TO_DEG;\x0d\x0a}\x0d\x0a\x0d\x0afn\x20computeNormalWGS84(latitude:\x20f32,\x20longitude:\x20f32)\x20->\x20vec3f\x20{\x0d\x0a\x20\x20\x20\x20//\x20璁$畻WGS84妞渾褰㈣〃闈笂鐨勬甯哥煝閲廫x0d\x0a\x20\x20\x20\x20let\x20cosLat\x20=\x20cos(latitude);\x0d\x0a\x20\x20\x20\x20let\x20sinLat\x20=\x20sin(latitude);\x0d\x0a\x20\x20\x20\x20let\x20cosLon\x20=\x20cos(longitude);\x0d\x0a\x20\x20\x20\x20let\x20sinLon\x20=\x20sin(longitude);\x0d\x0a\x0d\x0a\x20\x20\x20\x20//\x20姝e父鐭㈤噺鎴愬垎:\x20(cos(phi)\x20*\x20cos(lambda),\x20cos(phi)\x20*\x20sin(lambda),\x20sin(phi))\x0d\x0a\x20\x20\x20\x20//\x20WGS84鍋忓績鐜囧钩鏂筡x20(绾x200.00669438)\x0d\x0a\x20\x20\x20\x20//\x20let\x20e2\x20=\x200.00669438;\x0d\x0a\x20\x20\x20\x20//\x20(1.0\x20-\x20e2)\x20=\x200.99330562\x0d\x0a\x20\x20\x20\x20let\x20n\x20=\x20vec3f(\x0d\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20cosLat\x20*\x20cosLon,\x0d\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20cosLat\x20*\x20sinLon,\x0d\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20sinLat\x20*\x200.99330562\x0d\x0a\x20\x20\x20\x20\x20\x20\x20\x20);\x0d\x0a\x20\x20\x20\x20return\x20normalize(n);\x0d\x0a}\x0d\x0a\x0d\x0afn\x20ray_sphere_intersection(start_point:\x20vec3<f32>,\x20direction:\x20vec3<f32>)\x20->\x20vec2f\x20{\x0d\x0a\x20\x20\x20\x20//\x20棰勮绠楃缉鏀惧洜瀛怽x0d\x0a\x20\x20\x20\x20let\x20scale\x20=\x20vec3<f32>(inv_a,\x20inv_a,\x20inv_b);\x0d\x0a\x20\x20\x20\x20let\x20o_prime\x20=\x20start_point\x20*\x20scale;\x0d\x0a\x20\x20\x20\x20let\x20d_prime\x20=\x20direction\x20*\x20scale;\x0d\x0a\x0d\x0a\x20\x20\x20\x20//\x20缂撳瓨鐐圭Н缁撴灉\x0d\x0a\x20\x20\x20\x20let\x20a_prime\x20=\x20dot(d_prime,\x20d_prime);\x0d\x0a\x20\x20\x20\x20let\x20o_dot_d\x20=\x20dot(o_prime,\x20d_prime);\x0d\x0a\x20\x20\x20\x20let\x20o_dot_o\x20=\x20dot(o_prime,\x20o_prime);\x0d\x0a\x0d\x0a\x20\x20\x20\x20//\x20妫�鏌ユ棤鏁堟柟鍚戝悜閲廫x0d\x0a\x20\x20\x20\x20if\x20(a_prime\x20<\x200)\x20{\x0d\x0a\x20\x20\x20\x20\x20\x20\x20\x20return\x20vec2f(0);\x0d\x0a\x20\x20\x20\x20}\x0d\x0a\x0d\x0a\x20\x20\x20\x20//\x20璁$畻浜屾鏂圭▼绯绘暟\x0d\x0a\x20\x20\x20\x20let\x20b_prime\x20=\x202.0\x20*\x20o_dot_d;\x0d\x0a\x20\x20\x20\x20let\x20c_prime\x20=\x20o_dot_o\x20-\x201.0;\x0d\x0a\x20\x20\x20\x20let\x20discriminant\x20=\x20b_prime\x20*\x20b_prime\x20-\x204.0\x20*\x20a_prime\x20*\x20c_prime;\x0d\x0a\x0d\x0a\x20\x20\x20\x20//\x20鍒ゅ埆寮忓宸鐞哱x0d\x0a\x20\x20\x20\x20if\x20(discriminant\x20<\x20-0.0001)\x20{\x0d\x0a\x20\x20\x20\x20\x20\x20\x20\x20return\x20vec2f(0);\x0d\x0a\x20\x20\x20\x20}\x0d\x0a\x0d\x0a\x20\x20\x20\x20//\x20璁$畻\x20t\x20鍊硷紝浼樺寲鍒嗘敮閫昏緫\x0d\x0a\x20\x20\x20\x20let\x20sqrt_disc\x20=\x20sqrt(max(discriminant,\x200.0));\x0d\x0a\x20\x20\x20\x20let\x20t1\x20=\x20(-b_prime\x20-\x20sqrt_disc)\x20/\x20(2.0\x20*\x20a_prime);\x0d\x0a\x20\x20\x20\x20let\x20t2\x20=\x20(-b_prime\x20+\x20sqrt_disc)\x20/\x20(2.0\x20*\x20a_prime);\x0d\x0a\x0d\x0a\x20\x20\x20\x20return\x20vec2f(min(t1,\x20t2),max(t1,\x20t2));\x0d\x0a}\x0d\x0a\x0d\x0a','/uv.bin','Widget','lightInfo_dataViewF32','23WsHgRo','LightBodiesRemoveDuplicatesIndirectComputePipeline','LightBodiesRemoveDuplicatesIndirectComputeBingGroup','setTargetAndPosition','random','outlineWidth','TextureWrap','alpha_RenderBundle','serverList','normalize','KeyJ','meshRenderPipeline','canvas','bufByteSize','KeyA','finish','meshVmBuffer','\x0afn\x20getRenderIndex(input\x20:VertexInput)\x20->\x20vec2<u32>\x20{\x0a\x0a\x20\x20\x20\x20var\x20minIndex\x20=\x200u;\x0a\x20\x20\x20\x20var\x20maxIndex\x20=\x20input.instanceIndex;\x0a\x20\x20\x20\x20var\x20vertexIndex\x20=\x200u;\x0a\x20\x20\x20\x20var\x20instancePtr\x20=\x200u;\x0a\x20\x20\x20\x20loop{\x0a\x20\x20\x20\x20\x20\x20\x20\x20let\x20halfIndexErr\x20=\x20minIndex\x20+\x20(maxIndex\x20-\x20minIndex)\x20/\x202;\x0a\x20\x20\x20\x20\x20\x20\x20\x20let\x20halfIndex\x20=\x20halfIndexErr\x20-\x20halfIndexErr\x20%\x202;\x0a\x20\x20\x20\x20\x20\x20\x20\x20if\x20(renderIndex[halfIndex]\x20>\x20input.vertexIndex)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20if(halfIndex\x20==\x200){\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20vertexIndex\x20=\x20input.vertexIndex;\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20instancePtr\x20=\x20renderIndex[halfIndex\x20+\x201];\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20break;\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20}else{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20let\x20upIndex\x20=\x20halfIndex\x20-\x202;\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20if\x20(renderIndex[upIndex]\x20<=\x20input.vertexIndex)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20vertexIndex\x20=\x20input.vertexIndex\x20-\x20renderIndex[upIndex];\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20instancePtr\x20=\x20renderIndex[halfIndex\x20+\x201];\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20break;\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20}\x20else\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20maxIndex\x20=\x20halfIndex;\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20\x20\x20}\x20else\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20minIndex\x20=\x20halfIndex;\x0a\x20\x20\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20}\x0a\x0a\x20\x20\x20\x20return\x20vec2<u32>(instancePtr,vertexIndex);\x0a}','fromQuat','ssrReflectionsComputePipeline','preventDefault','instancesAreaComputePipeline','renderToCanvasPassDescriptorLabel','device','serColorTexture','createComputePipeline','meshRenderPositionTexture','AddModelServer','renderShadowPipeline','ssr_color_Texture','SsrReflectionsIntend','spaceTotalCount','near','serverId','RenderState','non-filtering','UpdateExplodeAccuracyOffset','perspectiveReverseZ','mat4','RenderMaterialPixel','orientation','InstancesArea','RenderShadowIntend','width','bufs','renderShadowBindGroup1','QUERY_RESOLVE','downLeft_position','Pass','blur_alternately1_ComputeBingGroup','vm_target_meshLod','uniformState','UpdateMeshOffset','extended','orm_buf','upLeftX','vm_target_model','edgeStrength_Uniform_VmBuffer','upPitch','SsrReflections','2d-array','renderDebugTestRenderPassDescriptor','color','UpdateModelAccuracyOffset','\x0a@group(0)\x20@binding(2)\x20var<storage,read_write>\x20lightBodiesBounceTwo:\x20array<u32>;\x0a\x0aoverride\x20lightBodiesBounceCount\x20:\x20u32;\x0a@compute\x20@workgroup_size(1)\x0afn\x20main()\x20{\x0alightBodiesBounceTwo[1]\x20+=\x20lightBodiesBounceCount;\x0aif(lightBodiesBounceTwo[1]\x20>\x20lightBodiesBounceTwo[0]){\x0a\x20\x20\x20\x20lightBodiesBounceTwo[1]\x20=\x200;\x0a}\x0a}','KeyL','depth32float','upLeft_position','gpu','tan','scene_dataViewF32','VolumeRender','113544gXTxPe','then','readMesh_Uniform_VmBuffer','EdgeStrength','uint','KeyI','filtering','COPY_SRC','clipPlane_VmBuffer','mouse','VoxelRenderIntend','Module','copyFrom','xyz','body','initFine','\x0d\x0astruct\x20SelfUniform\x20{\x0d\x0a\x20\x20\x20\x20//\x20宸ヤ綔缁勭殑闅忔満绉嶅瓙\x0d\x0a\x20\x20\x20\x20seed1:u32,\x0d\x0a\x20\x20\x20\x20seed2:u32,\x0d\x0a\x20\x20\x20\x20seed3:u32,\x0d\x0a};\x0d\x0a\x0d\x0a@group(0)\x20@binding(0)\x20var<uniform>\x20selfUniform:\x20SelfUniform;\x0d\x0a@group(0)\x20@binding(1)\x20var<uniform>\x20lightInfo:\x20LightInfoStruct;\x0d\x0a@group(0)\x20@binding(2)\x20var<storage,read_write>\x20lightBodiesSpace:\x20array<u32>;\x0d\x0a@group(0)\x20@binding(3)\x20var<storage,read_write>\x20lightBodiesBounceOne:\x20array<u32>;\x0d\x0a@group(0)\x20@binding(4)\x20var<storage,read_write>\x20lightBodiesBounceTwo:\x20array<u32>;\x0d\x0a\x0d\x0a\x0d\x0a\x0d\x0astruct\x20InputData\x20{\x0d\x0a\x20\x20\x20@builtin(local_invocation_id)\x20local_id:\x20vec3<u32>,\x0d\x0a\x20\x20\x20@builtin(local_invocation_index)\x20local_index:\x20u32,\x0d\x0a\x20\x20\x20@builtin(global_invocation_id)\x20global_id:\x20vec3<u32>,\x0d\x0a}\x0d\x0a\x0d\x0a@compute\x20@workgroup_size(64)\x0d\x0afn\x20main(input:\x20InputData)\x20{\x0d\x0a\x0d\x0a}','writeTexture','readTemp_VmBuffer','wheel','\x0d\x0astruct\x20SceneInfoStruct\x20{\x0d\x0a\x20\x20\x20\x20cesium_projectionViewMatrix:\x20mat4x4<f32>,\x0d\x0a\x20\x20\x20\x20//16\x0d\x0a\x20\x20\x20\x20viewMatrix:\x20mat4x4<f32>,\x0d\x0a\x20\x20\x20\x20//32\x0d\x0a\x20\x20\x20\x20projectionViewMatrix:\x20mat4x4<f32>,\x0d\x0a\x20\x20\x20\x20//48\x0d\x0a\x20\x20\x20\x20cameraSerialNumber:\x20u32,\x0d\x0a\x20\x20\x20\x20//49\x0d\x0a\x20\x20\x20\x20cameraPositionX:\x20f32,\x0d\x0a\x20\x20\x20\x20//50\x0d\x0a\x20\x20\x20\x20cameraPositionY:\x20f32,\x0d\x0a\x20\x20\x20\x20//51\x0d\x0a\x20\x20\x20\x20cameraPositionZ:\x20f32,\x0d\x0a\x20\x20\x20\x20//52\x0d\x0a\x20\x20\x20\x20width:f32,\x0d\x0a\x20\x20\x20\x20//53\x0d\x0a\x20\x20\x20\x20height:f32,\x0d\x0a\x20\x20\x20\x20//54\x0d\x0a\x20\x20\x20\x20cameraUpdate:\x20u32,\x0d\x0a\x20\x20\x20\x20//55\x0d\x0a\x20\x20\x20\x20frameSerialNumber:\x20u32,\x0d\x0a\x20\x20\x20\x20//56\x0d\x0a\x20\x20\x20\x20prev_projectionViewMatrix:\x20mat4x4<f32>,\x0d\x0a\x20\x20\x20\x20//72\x0d\x0a\x20\x20\x20\x20inverse_projectionMatrix:\x20mat4x4<f32>,\x0d\x0a\x20\x20\x20\x20//88\x0d\x0a\x20\x20\x20\x20inverse_viewMatrix:\x20mat4x4<f32>,\x0d\x0a\x20\x20\x20\x20//104\x0d\x0a\x20\x20\x20\x20inverse_projectionViewMatrix:\x20mat4x4<f32>,\x0d\x0a\x20\x20\x20\x20//120\x0d\x0a\x20\x20\x20\x20accuracyOffsetX:\x20f32,\x0d\x0a\x20\x20\x20\x20//121\x0d\x0a\x20\x20\x20\x20accuracyOffsetY:\x20f32,\x0d\x0a\x20\x20\x20\x20//122\x0d\x0a\x20\x20\x20\x20accuracyOffsetZ:\x20f32,\x0d\x0a};\x0d\x0a\x0d\x0a\x0d\x0a//\x20\x20\x20\x20let\x20instancesMatrix\x20=\x20mat4x4<f32>(1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1);\x0d\x0a','MakeCommand','329OhqWDN','KeyX','RenderToCanvas','application/javascript','TEXTURE_BINDING','type','sign','READ','get','meshRenderDepthTexture','\x0d\x0astruct\x20LightInfoStruct\x20{\x0d\x0a\x20\x20\x20\x20lightType:\x20u32,\x0d\x0a\x20\x20\x20\x20dir_x:\x20f32,\x0d\x0a\x20\x20\x20\x20dir_y:\x20f32,\x0d\x0a\x20\x20\x20\x20dir_z:\x20f32,\x0d\x0a\x20\x20\x20\x20color_r:f32,\x0d\x0a\x20\x20\x20\x20color_g:f32,\x0d\x0a\x20\x20\x20\x20color_b:f32,\x0d\x0a\x20\x20\x20\x20temp:f32,\x0d\x0a\x20\x20\x20\x20lightViewProjMatrix:\x20mat4x4<f32>,\x0d\x0a};\x0d\x0a\x0d\x0a','\x0d\x0a@group(0)\x20@binding(0)\x20var\x20samplerLinear\x20:\x20sampler;\x0d\x0a@group(0)\x20@binding(1)\x20var\x20samplerNearest\x20:\x20sampler;\x0d\x0a@group(0)\x20@binding(2)\x20var\x20colorData\x20:\x20texture_2d<f32>;\x0d\x0a\x0d\x0astruct\x20VertexInput\x20{\x0d\x0a\x20\x20@builtin(instance_index)\x20instanceIndex\x20:\x20u32,\x0d\x0a\x20\x20@builtin(vertex_index)\x20vertexIndex\x20:\x20u32\x0d\x0a}\x0d\x0astruct\x20VertexOutput\x20{\x0d\x0a\x20\x20@builtin(position)\x20position:\x20vec4<f32>,\x0d\x0a\x20\x20@location(0)\x20fragUV\x20:\x20vec2f,\x0d\x0a};\x0d\x0a\x0d\x0a@vertex\x0d\x0afn\x20vert_main(input\x20:VertexInput)\x20->\x20VertexOutput\x20{\x0d\x0a\x0d\x0a\x20\x20\x20\x20const\x20pos\x20=\x20array<vec2<f32>,6>(\x0d\x0a\x20\x20\x20\x20vec2<f32>(-1.0,\x20\x201.0),\x0d\x0a\x20\x20\x20\x20vec2<f32>(-1.0,\x20\x20-1.0),\x0d\x0a\x20\x20\x20\x20vec2<f32>(1.0,\x20\x201.0),\x0d\x0a\x0d\x0a\x20\x20\x20\x20vec2<f32>(1.0,\x20\x201.0),\x0d\x0a\x20\x20\x20\x20vec2<f32>(-1.0,\x20\x20-1.0),\x0d\x0a\x20\x20\x20\x20vec2<f32>(1.0,\x20\x20-1.0),\x0d\x0a\x20\x20\x20\x20);\x0d\x0a\x0d\x0a\x20\x20\x20\x20const\x20uv\x20=\x20array<vec2<f32>,6>(\x0d\x0a\x20\x20\x20\x20vec2<f32>(0,\x20\x200),\x0d\x0a\x20\x20\x20\x20vec2<f32>(0,\x20\x201),\x0d\x0a\x20\x20\x20\x20vec2<f32>(1,\x20\x200),\x0d\x0a\x0d\x0a\x20\x20\x20\x20vec2<f32>(1,\x20\x200),\x0d\x0a\x20\x20\x20\x20vec2<f32>(0,\x20\x201),\x0d\x0a\x20\x20\x20\x20vec2<f32>(1,\x20\x201),\x0d\x0a\x20\x20\x20\x20);\x0d\x0a\x0d\x0a\x20\x20\x20\x20var\x20output\x20:\x20VertexOutput;\x0d\x0a\x20\x20\x20\x20output.position\x20=\x20vec4(pos[input.vertexIndex],\x200.0,\x201.0);\x0d\x0a\x20\x20\x20\x20output.fragUV\x20=\x20uv[input.vertexIndex];\x0d\x0a\x20\x20\x20\x20return\x20output;\x0d\x0a}\x0d\x0a\x0d\x0astruct\x20FragmentOutput\x20{\x0d\x0a\x20\x20@location(0)\x20albedo\x20:\x20vec4<f32>,\x0d\x0a}\x0d\x0a\x0d\x0a@fragment\x0d\x0afn\x20frag_main(input\x20:\x20VertexOutput)\x20->\x20FragmentOutput\x20{\x0d\x0a\x20\x20\x20\x20var\x20output\x20:\x20FragmentOutput;\x0d\x0a\x20\x20\x20\x20let\x20color\x20=\x20textureSample(colorData,\x20samplerLinear,\x20input.fragUV);\x0d\x0a\x20\x20\x20\x20output.albedo\x20=\x20vec4(color.rgb,color.a);\x0d\x0a\x20\x20\x20\x20return\x20output;\x0d\x0a\x0d\x0a}','far','keyboardSpeed','CancelInstanceTransform','shiftLeft','pauseLightRotate','DynamicSpaceIntend','meshRenderBindGroup_renderIndex','end','_inverseView','unmap','responseText','selectRender','logDepth','ReadMeshIntend','\x0d\x0a@group(0)\x20@binding(0)\x20var<storage,read_write>\x20lightBodiesSpace:\x20array<atomic<u32>>;\x0d\x0a@group(0)\x20@binding(1)\x20var<storage,read_write>\x20lightBodiesBounceOne:\x20array<u32>;\x0d\x0a@group(0)\x20@binding(2)\x20var<storage,read_write>\x20lightBodiesBounceTwo:\x20array<u32>;\x0d\x0a\x0d\x0a\x0d\x0a\x0d\x0astruct\x20InputData\x20{\x0d\x0a\x20\x20\x20@builtin(local_invocation_id)\x20local_id:\x20vec3<u32>,\x0d\x0a\x20\x20\x20@builtin(local_invocation_index)\x20local_index:\x20u32,\x0d\x0a\x20\x20\x20@builtin(global_invocation_id)\x20global_id:\x20vec3<u32>,\x0d\x0a}\x0d\x0a\x0d\x0a@compute\x20@workgroup_size(1024)\x0d\x0afn\x20main(input:\x20InputData)\x20{\x0d\x0a\x20\x20\x20\x20if(input.global_id.x\x20==\x200\x20||\x20input.global_id.x\x20>\x20lightBodiesBounceOne[0]\x20||\x20lightBodiesBounceOne[input.global_id.x]\x20==\x200){\x0d\x0a\x20\x20\x20\x20\x20\x20\x20\x20return\x20;\x0d\x0a\x20\x20\x20\x20}\x0d\x0a\x0d\x0a\x20\x20\x20\x20let\x20targetPrt\x20=\x20lightBodiesBounceOne[input.global_id.x];\x0d\x0a\x20\x20\x20\x20if((atomicOr(&lightBodiesSpace[targetPrt+9],2u)\x20&\x202u)\x20==\x200u){\x0d\x0a\x20\x20\x20\x20\x20\x20\x20\x20let\x20lbi\x20=\x20min(2000000u,atomicAdd(&lightBodiesSpace[10],1u));\x0d\x0a\x20\x20\x20\x20\x20\x20\x20\x20lightBodiesBounceTwo[lbi]\x20=\x20targetPrt;\x0d\x0a\x20\x20\x20\x20\x20\x20\x20\x20lightBodiesBounceTwo[0]\x20=\x20lbi;\x0d\x0a\x20\x20\x20\x20}\x0d\x0a\x0d\x0a}','_currentFrustum','overlayColor','readMeshComputePipeline','premultiplied','streamRenderComputeBingGroup','now','renderShadowBundle','readPickId_VmBuffer','readMesh_workgroupSize','keydown','renderShadowInstancePtrTexture','setPipeline','finalColor_Texture','transform','context','error','depthContext','clientX','substring','cameraParameter','InitEd','controlLeft','modelData','SetInstanceStatusByInstancePtr','TextureMagnificationFilter','depthCanvas','clipPlaneTransform','stopPropagation','finalDisplay_Uniform_DataView','ArrowRight','quat','keyboard','STORAGE','constructor','downRightY','alpha_Uniform_VmBuffer','COPY_DST','PickInstancePtr','COMPUTE','ImageBlur','\x0d\x0astruct\x20SelfUniform\x20{\x0d\x0a\x20\x20\x20\x20//\x20宸ヤ綔缁勭殑闅忔満绉嶅瓙\x0d\x0a\x20\x20\x20\x20seed1:u32,\x0d\x0a\x20\x20\x20\x20seed2:u32,\x0d\x0a\x20\x20\x20\x20seed3:u32,\x0d\x0a};\x0d\x0a\x0d\x0a@group(0)\x20@binding(0)\x20var<uniform>\x20selfUniform:\x20SelfUniform;\x0d\x0a@group(0)\x20@binding(1)\x20var<uniform>\x20lightInfo:\x20LightInfoStruct;\x0d\x0a@group(0)\x20@binding(2)\x20var<storage,read_write>\x20lightBodiesSpace:\x20array<u32>;\x0d\x0a@group(0)\x20@binding(3)\x20var<storage,read_write>\x20lightBodiesBounceOne:\x20array<u32>;\x0d\x0a@group(0)\x20@binding(4)\x20var<storage,read_write>\x20lightBodiesBounceTwo:\x20array<u32>;\x0d\x0a\x0d\x0a\x0d\x0a\x0d\x0astruct\x20InputData\x20{\x0d\x0a\x20\x20\x20@builtin(local_invocation_id)\x20local_id:\x20vec3<u32>,\x0d\x0a\x20\x20\x20@builtin(local_invocation_index)\x20local_index:\x20u32,\x0d\x0a\x20\x20\x20@builtin(global_invocation_id)\x20global_id:\x20vec3<u32>,\x0d\x0a}\x0d\x0a\x0d\x0a@compute\x20@workgroup_size(128)\x0d\x0afn\x20main(input:\x20InputData)\x20{\x0d\x0a\x20\x20\x20\x20let\x20ii\x20=\x20input.global_id.x\x20+\x20lightBodiesBounceTwo[1];\x0d\x0a\x20\x20\x20\x20if(ii\x20==\x200\x20||\x20ii\x20>\x20lightBodiesBounceTwo[0]\x20||\x20lightBodiesBounceTwo[ii]\x20==\x200){\x0d\x0a\x20\x20\x20\x20\x20\x20\x20\x20return\x20;\x0d\x0a\x20\x20\x20\x20}\x0d\x0a\x0d\x0a\x20\x20\x20\x20let\x20targetPrt\x20=\x20lightBodiesBounceTwo[ii];\x0d\x0a\x20\x20\x20\x20let\x20org_normal\x20=\x20normalize(unpack4x8snorm(lightBodiesSpace[targetPrt\x20+\x2013]).xyz);\x0d\x0a\x0d\x0a\x20\x20\x20\x20//\x20鏋勫缓浠庨粯璁ゅ崐鐞冨埌瀹為檯娉曠嚎鏂瑰悜鐨勮浆鎹㈢煩闃礬x0d\x0a\x20\x20\x20\x20let\x20transform\x20=\x20construct_coordinate_system(org_normal);\x0d\x0a\x20\x20\x20\x20let\x20normals\x20=\x20array<vec3<f32>,8>(\x0d\x0a\x20\x20\x20\x20\x20\x20\x20\x20org_normal,\x0d\x0a\x20\x20\x20\x20\x20\x20\x20\x20normalize(transform\x20*\x20coneDirections[0]),\x0d\x0a\x20\x20\x20\x20\x20\x20\x20\x20normalize(transform\x20*\x20coneDirections[1]),\x0d\x0a\x20\x20\x20\x20\x20\x20\x20\x20normalize(transform\x20*\x20coneDirections[2]),\x0d\x0a\x20\x20\x20\x20\x20\x20\x20\x20normalize(transform\x20*\x20coneDirections[3]),\x0d\x0a\x20\x20\x20\x20\x20\x20\x20\x20normalize(transform\x20*\x20coneDirections[4]),\x0d\x0a\x20\x20\x20\x20\x20\x20\x20\x20normalize(transform\x20*\x20coneDirections[5]),\x0d\x0a\x20\x20\x20\x20\x20\x20\x20\x20normalize(transform\x20*\x20coneDirections[6]),\x0d\x0a\x20\x20\x20\x20);\x0d\x0a\x0d\x0a\x20\x20\x20\x20var\x20skyColor\x20=\x20vec4<f32>(0.8,0.8,1,1);\x0d\x0a\x20\x20\x20\x20var\x20finalColor\x20=\x20vec3<f32>(0);\x0d\x0a\x20\x20\x20\x20var\x20finalCount\x20=\x200.0;\x0d\x0a\x20\x20\x20\x20var\x20track\x20=\x20false;\x0d\x0a\x20\x20\x20\x20for(var\x20ci\x20=\x200u\x20;\x20ci\x20<\x208u\x20;ci++){\x0d\x0a\x20\x20\x20\x20\x20\x20\x20\x20let\x20cv\x20=\x20lightBodiesSpace[targetPrt+ci]\x20>>\x201u;\x0d\x0a\x20\x20\x20\x20\x20\x20\x20\x20if(cv\x20==\x201){\x0d\x0a//\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20finalColor\x20+=\x20skyColor.rgb;\x0d\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20skyColor\x20=\x20vec4<f32>(0);\x0d\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20finalCount\x20+=\x20skyColor.a;\x0d\x0a\x20\x20\x20\x20\x20\x20\x20\x20}else\x20if(cv\x20!=\x200){\x0d\x0a\x0d\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20let\x20sh_v0_u32\x20=\x20lightBodiesSpace[cv\x20+\x2010];\x0d\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20let\x20sh_v1_u32\x20=\x20lightBodiesSpace[cv\x20+\x2011];\x0d\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20let\x20sh_v2_u32\x20=\x20lightBodiesSpace[cv\x20+\x2012];\x0d\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20let\x20sh_v3_u32\x20=\x20lightBodiesSpace[cv\x20+\x2013];\x0d\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20let\x20sh_v4_u32\x20=\x20lightBodiesSpace[cv\x20+\x2014];\x0d\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20let\x20sh_v5_u32\x20=\x20lightBodiesSpace[cv\x20+\x2015];\x0d\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20let\x20sh_v6_u32\x20=\x20lightBodiesSpace[cv\x20+\x2016];\x0d\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20let\x20sh_v7_u32\x20=\x20lightBodiesSpace[cv\x20+\x2017];\x0d\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20let\x20sh_v8_u32\x20=\x20lightBodiesSpace[cv\x20+\x2018];\x0d\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20var\x20sh_coefficients\x20=\x20array<vec3<f32>,\x209>(\x0d\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20vec3<f32>(f32((sh_v0_u32>>22u))\x20,\x20f32((sh_v0_u32>>11u)&2047u)\x20,\x20f32((sh_v0_u32)&2047u)\x20),\x0d\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20vec3<f32>(f32((sh_v1_u32>>22u))\x20,\x20f32((sh_v1_u32>>11u)&2047u)\x20,\x20f32((sh_v1_u32)&2047u)\x20),\x0d\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20vec3<f32>(f32((sh_v2_u32>>22u))\x20,\x20f32((sh_v2_u32>>11u)&2047u)\x20,\x20f32((sh_v2_u32)&2047u)\x20),\x0d\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20vec3<f32>(f32((sh_v3_u32>>22u))\x20,\x20f32((sh_v3_u32>>11u)&2047u)\x20,\x20f32((sh_v3_u32)&2047u)\x20),\x0d\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20vec3<f32>(f32((sh_v4_u32>>22u))\x20,\x20f32((sh_v4_u32>>11u)&2047u)\x20,\x20f32((sh_v4_u32)&2047u)\x20),\x0d\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20vec3<f32>(f32((sh_v5_u32>>22u))\x20,\x20f32((sh_v5_u32>>11u)&2047u)\x20,\x20f32((sh_v5_u32)&2047u)\x20),\x0d\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20vec3<f32>(f32((sh_v6_u32>>22u))\x20,\x20f32((sh_v6_u32>>11u)&2047u)\x20,\x20f32((sh_v6_u32)&2047u)\x20),\x0d\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20vec3<f32>(f32((sh_v7_u32>>22u))\x20,\x20f32((sh_v7_u32>>11u)&2047u)\x20,\x20f32((sh_v7_u32)&2047u)\x20),\x0d\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20vec3<f32>(f32((sh_v8_u32>>22u))\x20,\x20f32((sh_v8_u32>>11u)&2047u)\x20,\x20f32((sh_v8_u32)&2047u)\x20),\x0d\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20);\x0d\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20sh_coefficients[0]\x20=\x20vec3<f32>(sh_coefficients[0].r\x20/\x201023,sh_coefficients[0].g\x20/\x202047,sh_coefficients[0].b\x20/\x202047);\x0d\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20sh_coefficients[1]\x20=\x20vec3<f32>(sh_coefficients[1].r\x20/\x201023,sh_coefficients[1].g\x20/\x202047,sh_coefficients[1].b\x20/\x202047);\x0d\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20sh_coefficients[2]\x20=\x20vec3<f32>(sh_coefficients[2].r\x20/\x201023,sh_coefficients[2].g\x20/\x202047,sh_coefficients[2].b\x20/\x202047);\x0d\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20sh_coefficients[3]\x20=\x20vec3<f32>(sh_coefficients[3].r\x20/\x201023,sh_coefficients[3].g\x20/\x202047,sh_coefficients[3].b\x20/\x202047);\x0d\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20sh_coefficients[4]\x20=\x20vec3<f32>(sh_coefficients[4].r\x20/\x201023,sh_coefficients[4].g\x20/\x202047,sh_coefficients[4].b\x20/\x202047);\x0d\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20sh_coefficients[5]\x20=\x20vec3<f32>(sh_coefficients[5].r\x20/\x201023,sh_coefficients[5].g\x20/\x202047,sh_coefficients[5].b\x20/\x202047);\x0d\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20sh_coefficients[6]\x20=\x20vec3<f32>(sh_coefficients[6].r\x20/\x201023,sh_coefficients[6].g\x20/\x202047,sh_coefficients[6].b\x20/\x202047);\x0d\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20sh_coefficients[7]\x20=\x20vec3<f32>(sh_coefficients[7].r\x20/\x201023,sh_coefficients[7].g\x20/\x202047,sh_coefficients[7].b\x20/\x202047);\x0d\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20sh_coefficients[8]\x20=\x20vec3<f32>(sh_coefficients[8].r\x20/\x201023,sh_coefficients[8].g\x20/\x202047,sh_coefficients[8].b\x20/\x202047);\x0d\x0a\x0d\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20sh_coefficients[0]\x20=\x20sh_coefficients[0];\x0d\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20sh_coefficients[1]\x20=\x20sh_coefficients[1]\x20*\x202\x20-\x201;\x0d\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20sh_coefficients[2]\x20=\x20sh_coefficients[2]\x20*\x202\x20-\x201;\x0d\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20sh_coefficients[3]\x20=\x20sh_coefficients[3]\x20*\x202\x20-\x201;\x0d\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20sh_coefficients[4]\x20=\x20sh_coefficients[4]\x20*\x202\x20-\x201;\x0d\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20sh_coefficients[5]\x20=\x20sh_coefficients[5]\x20*\x202\x20-\x201;\x0d\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20sh_coefficients[6]\x20=\x20sh_coefficients[6]\x20*\x202\x20-\x201;\x0d\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20sh_coefficients[7]\x20=\x20sh_coefficients[7]\x20*\x202\x20-\x201;\x0d\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20sh_coefficients[8]\x20=\x20sh_coefficients[8]\x20*\x202\x20-\x201;\x0d\x0a\x0d\x0a\x0d\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20let\x20basis\x20=\x20compute_sh_basis(-normals[ci]);\x0d\x0a\x0d\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20//\x20閲嶅缓鍏夌収\x0d\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20var\x20light:\x20vec3<f32>\x20=\x20vec3(0.0);\x0d\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20for\x20(var\x20i:\x20u32\x20=\x200;\x20i\x20<\x209;\x20i++)\x20{\x0d\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20light\x20+=\x20sh_coefficients[i]\x20*\x20basis[i];\x0d\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20}\x0d\x0a\x0d\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20finalColor\x20+=\x20light;\x0d\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20finalCount\x20+=\x201.0;\x0d\x0a\x0d\x0a\x20\x20\x20\x20\x20\x20\x20\x20}else{\x0d\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20track\x20=\x20true;\x0d\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20break;\x0d\x0a\x20\x20\x20\x20\x20\x20\x20\x20}\x0d\x0a\x20\x20\x20\x20}\x0d\x0a\x0d\x0a//\x20\x20\x20\x20if((lightBodiesSpace[targetPrt]\x20>>\x201)\x20==\x200\x0d\x0a//\x20\x20\x20\x20\x20\x20\x20\x20&&\x20(lightBodiesSpace[targetPrt\x20+\x201]\x20>>\x201)\x20==\x200\x0d\x0a//\x20\x20\x20\x20\x20\x20\x20\x20&&\x20(lightBodiesSpace[targetPrt\x20+\x202]\x20>>\x201)\x20==\x200\x0d\x0a//\x20\x20\x20\x20\x20\x20\x20\x20&&\x20(lightBodiesSpace[targetPrt\x20+\x203]\x20>>\x201)\x20==\x200\x0d\x0a//\x20\x20\x20\x20\x20\x20\x20\x20&&\x20(lightBodiesSpace[targetPrt\x20+\x204]\x20>>\x201)\x20==\x200\x0d\x0a//\x20\x20\x20\x20\x20\x20\x20\x20&&\x20(lightBodiesSpace[targetPrt\x20+\x205]\x20>>\x201)\x20==\x200\x0d\x0a//\x20\x20\x20\x20\x20\x20\x20\x20&&\x20(lightBodiesSpace[targetPrt\x20+\x206]\x20>>\x201)\x20==\x200\x0d\x0a//\x20\x20\x20\x20\x20\x20\x20\x20&&\x20(lightBodiesSpace[targetPrt\x20+\x207]\x20>>\x201)\x20==\x200){\x0d\x0a//\x0d\x0a//\x20\x20\x20\x20\x20\x20\x20\x20let\x20posOrigin\x20=\x20prtToPos(targetPrt);\x0d\x0a//\x20\x20\x20\x20\x20\x20\x20\x20let\x20normal_lightBodies\x20=\x20normalize(unpack4x8snorm(lightBodiesSpace[targetPrt\x20+\x2013]).xyz);\x0d\x0a//\x0d\x0a//\x20\x20\x20\x20\x20\x20\x20\x20//\x20鏋勫缓浠庨粯璁ゅ崐鐞冨埌瀹為檯娉曠嚎鏂瑰悜鐨勮浆鎹㈢煩闃礬x0d\x0a//\x20\x20\x20\x20\x20\x20\x20\x20let\x20transform\x20=\x20construct_coordinate_system(normal_lightBodies.xyz);\x0d\x0a//\x20\x20\x20\x20\x20\x20\x20\x20lightBodiesSpace[targetPrt\x20+\x200]\x20=\x20(tracing(posOrigin,normal_lightBodies.xyz)\x20<<\x201u);\x0d\x0a//\x20\x20\x20\x20\x20\x20\x20\x20lightBodiesSpace[targetPrt\x20+\x201]\x20=\x20(tracing(posOrigin,normalize(transform\x20*\x20coneDirections[0]))\x20<<\x201u);\x0d\x0a//\x20\x20\x20\x20\x20\x20\x20\x20lightBodiesSpace[targetPrt\x20+\x202]\x20=\x20(tracing(posOrigin,normalize(transform\x20*\x20coneDirections[1]))\x20<<\x201u);\x0d\x0a//\x20\x20\x20\x20\x20\x20\x20\x20lightBodiesSpace[targetPrt\x20+\x203]\x20=\x20(tracing(posOrigin,normalize(transform\x20*\x20coneDirections[2]))\x20<<\x201u);\x0d\x0a//\x20\x20\x20\x20\x20\x20\x20\x20lightBodiesSpace[targetPrt\x20+\x204]\x20=\x20(tracing(posOrigin,normalize(transform\x20*\x20coneDirections[3]))\x20<<\x201u);\x0d\x0a//\x20\x20\x20\x20\x20\x20\x20\x20lightBodiesSpace[targetPrt\x20+\x205]\x20=\x20(tracing(posOrigin,normalize(transform\x20*\x20coneDirections[4]))\x20<<\x201u);\x0d\x0a//\x20\x20\x20\x20\x20\x20\x20\x20lightBodiesSpace[targetPrt\x20+\x206]\x20=\x20(tracing(posOrigin,normalize(transform\x20*\x20coneDirections[5]))\x20<<\x201u);\x0d\x0a//\x20\x20\x20\x20\x20\x20\x20\x20lightBodiesSpace[targetPrt\x20+\x207]\x20=\x20(tracing(posOrigin,normalize(transform\x20*\x20coneDirections[6]))\x20<<\x201u);\x0d\x0a//\x0d\x0a//\x20\x20\x20\x20\x20\x20\x20\x20return\x20;\x0d\x0a//\x20\x20\x20\x20}\x0d\x0a\x0d\x0a\x20\x20\x20\x20finalColor\x20/=\x20finalCount;\x0d\x0a\x0d\x0a\x20\x20\x20\x20let\x20indirect_color\x20=\x20vec3<f32>(bitcast<f32>(lightBodiesSpace[targetPrt\x20+\x2010]),bitcast<f32>(lightBodiesSpace[targetPrt\x20+\x2011]),bitcast<f32>(lightBodiesSpace[targetPrt\x20+\x2012]));\x0d\x0a\x0d\x0a\x20\x20\x20\x20finalColor\x20=\x20mix(indirect_color.rgb,finalColor.rgb,0.0025);\x0d\x0a\x0d\x0a\x20\x20\x20\x20lightBodiesSpace[targetPrt\x20+\x2010]\x20=\x20bitcast<u32>(finalColor.r);\x0d\x0a\x20\x20\x20\x20lightBodiesSpace[targetPrt\x20+\x2011]\x20=\x20bitcast<u32>(finalColor.g);\x0d\x0a\x20\x20\x20\x20lightBodiesSpace[targetPrt\x20+\x2012]\x20=\x20bitcast<u32>(finalColor.b);\x0d\x0a\x0d\x0a\x0d\x0a\x20\x20\x20\x20var\x20p_targetPrt\x20=\x20lightBodiesSpace[targetPrt\x20+\x208];\x0d\x0a\x20\x20\x20\x20var\x20sh\x20=\x20array<vec3<f32>,\x209>(vec3<f32>(0),vec3<f32>(0),vec3<f32>(0),vec3<f32>(0),\x0d\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20vec3<f32>(0),vec3<f32>(0),vec3<f32>(0),vec3<f32>(0),vec3<f32>(0));\x0d\x0a\x20\x20\x20\x20var\x20l_normal\x20=\x20vec3<f32>(0);\x0d\x0a\x20\x20\x20\x20var\x20sh_count\x20=\x200.0;\x0d\x0a\x20\x20\x20\x20for(var\x20i\x20=\x200u\x20;\x20i\x20<\x208;i++){\x0d\x0a\x20\x20\x20\x20\x20\x20\x20\x20if((lightBodiesSpace[p_targetPrt+i]&1)\x20==\x201u\x20&&\x20((lightBodiesSpace[targetPrt+9]>>2)&1)\x20==\x201){\x0d\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20let\x20c_t\x20=\x20lightBodiesSpace[p_targetPrt+i]\x20>>\x201u;\x0d\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20let\x20normal_lightBodies\x20=\x20normalize(unpack4x8snorm(lightBodiesSpace[c_t\x20+\x2013]).xyz);\x0d\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20if(all(l_normal\x20==\x20normal_lightBodies)){\x0d\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20continue;\x0d\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20}\x0d\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20l_normal\x20=\x20normal_lightBodies;\x0d\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20sh_count\x20+=\x201.0;\x0d\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20var\x20color\x20=\x20vec3<f32>(bitcast<f32>(lightBodiesSpace[c_t\x20+\x2010]),bitcast<f32>(lightBodiesSpace[c_t\x20+\x2011]),bitcast<f32>(lightBodiesSpace[c_t\x20+\x2012]));\x0d\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20color\x20+=\x20unpack4x8unorm(lightBodiesSpace[c_t\x20+\x2014]).yzw;\x0d\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20let\x20max_val\x20=\x201.0;\x0d\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20let\x20scale\x20=\x20min(1.0,\x20max_val\x20/\x20max(color.x,\x20max(color.y,\x20color.z)));\x0d\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20color\x20*=\x20scale;\x0d\x0a\x0d\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20let\x20basis\x20=\x20compute_sh_basis(normal_lightBodies);\x0d\x0a\x0d\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20sh[0]\x20+=\x20basis[0]\x20*\x20color;\x0d\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20sh[1]\x20+=\x20basis[1]\x20*\x20color;\x0d\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20sh[2]\x20+=\x20basis[2]\x20*\x20color;\x0d\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20sh[3]\x20+=\x20basis[3]\x20*\x20color;\x0d\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20sh[4]\x20+=\x20basis[4]\x20*\x20color;\x0d\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20sh[5]\x20+=\x20basis[5]\x20*\x20color;\x0d\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20sh[6]\x20+=\x20basis[6]\x20*\x20color;\x0d\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20sh[7]\x20+=\x20basis[7]\x20*\x20color;\x0d\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20sh[8]\x20+=\x20basis[8]\x20*\x20color;\x0d\x0a\x0d\x0a\x0d\x0a\x20\x20\x20\x20\x20\x20\x20\x20}\x0d\x0a\x20\x20\x20\x20}\x0d\x0a\x0d\x0a\x20\x20\x20\x20sh[0]\x20/=\x20sh_count;\x0d\x0a\x20\x20\x20\x20sh[1]\x20/=\x20sh_count;\x0d\x0a\x20\x20\x20\x20sh[2]\x20/=\x20sh_count;\x0d\x0a\x20\x20\x20\x20sh[3]\x20/=\x20sh_count;\x0d\x0a\x20\x20\x20\x20sh[4]\x20/=\x20sh_count;\x0d\x0a\x20\x20\x20\x20sh[5]\x20/=\x20sh_count;\x0d\x0a\x20\x20\x20\x20sh[6]\x20/=\x20sh_count;\x0d\x0a\x20\x20\x20\x20sh[7]\x20/=\x20sh_count;\x0d\x0a\x20\x20\x20\x20sh[8]\x20/=\x20sh_count;\x0d\x0a\x0d\x0a\x20\x20\x20\x20sh[1]\x20=\x20(sh[1]\x20+\x201)\x20*\x200.5;\x0d\x0a\x20\x20\x20\x20sh[2]\x20=\x20(sh[2]\x20+\x201)\x20*\x200.5;\x0d\x0a\x20\x20\x20\x20sh[3]\x20=\x20(sh[3]\x20+\x201)\x20*\x200.5;\x0d\x0a\x20\x20\x20\x20sh[4]\x20=\x20(sh[4]\x20+\x201)\x20*\x200.5;\x0d\x0a\x20\x20\x20\x20sh[5]\x20=\x20(sh[5]\x20+\x201)\x20*\x200.5;\x0d\x0a\x20\x20\x20\x20sh[6]\x20=\x20(sh[6]\x20+\x201)\x20*\x200.5;\x0d\x0a\x20\x20\x20\x20sh[7]\x20=\x20(sh[7]\x20+\x201)\x20*\x200.5;\x0d\x0a\x20\x20\x20\x20sh[8]\x20=\x20(sh[8]\x20+\x201)\x20*\x200.5;\x0d\x0a\x0d\x0a\x20\x20\x20\x20lightBodiesSpace[p_targetPrt\x20+\x2010]\x20=\x20(u32(sh[0].r\x20*\x201023)\x20<<\x2022u)\x20|\x20(u32(sh[0].g\x20*\x202047)\x20<<\x2011u)\x20|\x20(u32(sh[0].b\x20*\x202047));\x0d\x0a\x20\x20\x20\x20lightBodiesSpace[p_targetPrt\x20+\x2011]\x20=\x20(u32(sh[1].r\x20*\x201023)\x20<<\x2022u)\x20|\x20(u32(sh[1].g\x20*\x202047)\x20<<\x2011u)\x20|\x20(u32(sh[1].b\x20*\x202047));\x0d\x0a\x20\x20\x20\x20lightBodiesSpace[p_targetPrt\x20+\x2012]\x20=\x20(u32(sh[2].r\x20*\x201023)\x20<<\x2022u)\x20|\x20(u32(sh[2].g\x20*\x202047)\x20<<\x2011u)\x20|\x20(u32(sh[2].b\x20*\x202047));\x0d\x0a\x20\x20\x20\x20lightBodiesSpace[p_targetPrt\x20+\x2013]\x20=\x20(u32(sh[3].r\x20*\x201023)\x20<<\x2022u)\x20|\x20(u32(sh[3].g\x20*\x202047)\x20<<\x2011u)\x20|\x20(u32(sh[3].b\x20*\x202047));\x0d\x0a\x20\x20\x20\x20lightBodiesSpace[p_targetPrt\x20+\x2014]\x20=\x20(u32(sh[4].r\x20*\x201023)\x20<<\x2022u)\x20|\x20(u32(sh[4].g\x20*\x202047)\x20<<\x2011u)\x20|\x20(u32(sh[4].b\x20*\x202047));\x0d\x0a\x20\x20\x20\x20lightBodiesSpace[p_targetPrt\x20+\x2015]\x20=\x20(u32(sh[5].r\x20*\x201023)\x20<<\x2022u)\x20|\x20(u32(sh[5].g\x20*\x202047)\x20<<\x2011u)\x20|\x20(u32(sh[5].b\x20*\x202047));\x0d\x0a\x20\x20\x20\x20lightBodiesSpace[p_targetPrt\x20+\x2016]\x20=\x20(u32(sh[6].r\x20*\x201023)\x20<<\x2022u)\x20|\x20(u32(sh[6].g\x20*\x202047)\x20<<\x2011u)\x20|\x20(u32(sh[6].b\x20*\x202047));\x0d\x0a\x20\x20\x20\x20lightBodiesSpace[p_targetPrt\x20+\x2017]\x20=\x20(u32(sh[7].r\x20*\x201023)\x20<<\x2022u)\x20|\x20(u32(sh[7].g\x20*\x202047)\x20<<\x2011u)\x20|\x20(u32(sh[7].b\x20*\x202047));\x0d\x0a\x20\x20\x20\x20lightBodiesSpace[p_targetPrt\x20+\x2018]\x20=\x20(u32(sh[8].r\x20*\x201023)\x20<<\x2022u)\x20|\x20(u32(sh[8].g\x20*\x202047)\x20<<\x2011u)\x20|\x20(u32(sh[8].b\x20*\x202047));\x0d\x0a\x0d\x0a\x0d\x0a\x0d\x0a\x20\x20\x20\x20loop\x20{\x0d\x0a\x20\x20\x20\x20\x20\x20\x20\x20p_targetPrt\x20=\x20lightBodiesSpace[p_targetPrt\x20+\x208];\x0d\x0a\x20\x20\x20\x20\x20\x20\x20\x20if(p_targetPrt\x20>\x2010u){\x0d\x0a\x0d\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20var\x20sh_ll\x20=\x20array<vec3<f32>,\x209>(vec3<f32>(0),vec3<f32>(0),vec3<f32>(0),vec3<f32>(0),\x0d\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20vec3<f32>(0),vec3<f32>(0),vec3<f32>(0),vec3<f32>(0),vec3<f32>(0));\x0d\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20var\x20sh_ll_count\x20=\x200.0;\x0d\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20for(var\x20k\x20=\x200u\x20;\x20k\x20<\x208;k++){\x0d\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20if((lightBodiesSpace[p_targetPrt+k]&1)\x20==\x201u){\x0d\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20let\x20c_t\x20=\x20lightBodiesSpace[p_targetPrt+k]\x20>>\x201u;\x0d\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20if(lightBodiesSpace[c_t\x20+\x2010]\x20!=\x200){\x0d\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20sh_ll_count\x20+=\x201.0;\x0d\x0a\x0d\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20let\x20o1_0\x20=\x20lightBodiesSpace[c_t\x20+\x2010];\x0d\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20let\x20o2_0\x20=\x20vec3<f32>(f32(o1_0\x20>>\x2022u)\x20,f32((o1_0\x20>>\x2011u)\x20&\x202047)\x20,f32((o1_0)\x20&\x202047));\x0d\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20sh_ll[0]\x20+=\x20vec3<f32>(o2_0.r\x20/\x201023,o2_0.gb\x20/\x202047);\x0d\x0a\x0d\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20for\x20(var\x20f:\x20u32\x20=\x201;\x20f\x20<\x209;\x20f++)\x20{\x0d\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20let\x20o1\x20=\x20lightBodiesSpace[c_t\x20+\x2010\x20+\x20f];\x0d\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20let\x20o2\x20=\x20vec3<f32>(f32(o1\x20>>\x2022u)\x20,f32((o1\x20>>\x2011u)\x20&\x202047)\x20,f32((o1)\x20&\x202047));\x0d\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20let\x20o3\x20=\x20vec3<f32>(o2.r\x20/\x201023,o2.g\x20/\x202047,o2.b\x20/\x202047)\x20*\x202\x20-\x201;\x0d\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20sh_ll[f]\x20+=\x20o3;\x0d\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20}\x0d\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20}\x0d\x0a\x0d\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20}\x0d\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20}\x0d\x0a\x0d\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20sh_ll[0]\x20/=\x20sh_ll_count;\x0d\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20sh_ll[1]\x20/=\x20sh_ll_count;\x0d\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20sh_ll[2]\x20/=\x20sh_ll_count;\x0d\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20sh_ll[3]\x20/=\x20sh_ll_count;\x0d\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20sh_ll[4]\x20/=\x20sh_ll_count;\x0d\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20sh_ll[5]\x20/=\x20sh_ll_count;\x0d\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20sh_ll[6]\x20/=\x20sh_ll_count;\x0d\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20sh_ll[7]\x20/=\x20sh_ll_count;\x0d\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20sh_ll[8]\x20/=\x20sh_ll_count;\x0d\x0a\x0d\x0a\x0d\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20sh_ll[1]\x20=\x20(sh_ll[1]\x20+\x201)\x20*\x200.5;\x0d\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20sh_ll[2]\x20=\x20(sh_ll[2]\x20+\x201)\x20*\x200.5;\x0d\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20sh_ll[3]\x20=\x20(sh_ll[3]\x20+\x201)\x20*\x200.5;\x0d\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20sh_ll[4]\x20=\x20(sh_ll[4]\x20+\x201)\x20*\x200.5;\x0d\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20sh_ll[5]\x20=\x20(sh_ll[5]\x20+\x201)\x20*\x200.5;\x0d\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20sh_ll[6]\x20=\x20(sh_ll[6]\x20+\x201)\x20*\x200.5;\x0d\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20sh_ll[7]\x20=\x20(sh_ll[7]\x20+\x201)\x20*\x200.5;\x0d\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20sh_ll[8]\x20=\x20(sh_ll[8]\x20+\x201)\x20*\x200.5;\x0d\x0a\x0d\x0a\x0d\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20lightBodiesSpace[p_targetPrt\x20+\x2010]\x20=\x20(u32(sh_ll[0].r\x20*\x201023)\x20<<\x2022u)\x20|\x20(u32(sh_ll[0].g\x20*\x202047)\x20<<\x2011u)\x20|\x20(u32(sh_ll[0].b\x20*\x202047));\x0d\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20lightBodiesSpace[p_targetPrt\x20+\x2011]\x20=\x20(u32(sh_ll[1].r\x20*\x201023)\x20<<\x2022u)\x20|\x20(u32(sh_ll[1].g\x20*\x202047)\x20<<\x2011u)\x20|\x20(u32(sh_ll[1].b\x20*\x202047));\x0d\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20lightBodiesSpace[p_targetPrt\x20+\x2012]\x20=\x20(u32(sh_ll[2].r\x20*\x201023)\x20<<\x2022u)\x20|\x20(u32(sh_ll[2].g\x20*\x202047)\x20<<\x2011u)\x20|\x20(u32(sh_ll[2].b\x20*\x202047));\x0d\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20lightBodiesSpace[p_targetPrt\x20+\x2013]\x20=\x20(u32(sh_ll[3].r\x20*\x201023)\x20<<\x2022u)\x20|\x20(u32(sh_ll[3].g\x20*\x202047)\x20<<\x2011u)\x20|\x20(u32(sh_ll[3].b\x20*\x202047));\x0d\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20lightBodiesSpace[p_targetPrt\x20+\x2014]\x20=\x20(u32(sh_ll[4].r\x20*\x201023)\x20<<\x2022u)\x20|\x20(u32(sh_ll[4].g\x20*\x202047)\x20<<\x2011u)\x20|\x20(u32(sh_ll[4].b\x20*\x202047));\x0d\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20lightBodiesSpace[p_targetPrt\x20+\x2015]\x20=\x20(u32(sh_ll[5].r\x20*\x201023)\x20<<\x2022u)\x20|\x20(u32(sh_ll[5].g\x20*\x202047)\x20<<\x2011u)\x20|\x20(u32(sh_ll[5].b\x20*\x202047));\x0d\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20lightBodiesSpace[p_targetPrt\x20+\x2016]\x20=\x20(u32(sh_ll[6].r\x20*\x201023)\x20<<\x2022u)\x20|\x20(u32(sh_ll[6].g\x20*\x202047)\x20<<\x2011u)\x20|\x20(u32(sh_ll[6].b\x20*\x202047));\x0d\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20lightBodiesSpace[p_targetPrt\x20+\x2017]\x20=\x20(u32(sh_ll[7].r\x20*\x201023)\x20<<\x2022u)\x20|\x20(u32(sh_ll[7].g\x20*\x202047)\x20<<\x2011u)\x20|\x20(u32(sh_ll[7].b\x20*\x202047));\x0d\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20lightBodiesSpace[p_targetPrt\x20+\x2018]\x20=\x20(u32(sh_ll[8].r\x20*\x201023)\x20<<\x2022u)\x20|\x20(u32(sh_ll[8].g\x20*\x202047)\x20<<\x2011u)\x20|\x20(u32(sh_ll[8].b\x20*\x202047));\x0d\x0a\x0d\x0a\x0d\x0a\x20\x20\x20\x20\x20\x20\x20\x20}else{\x0d\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20break;\x0d\x0a\x20\x20\x20\x20\x20\x20\x20\x20}\x0d\x0a\x20\x20\x20\x20}\x0d\x0a\x0d\x0a}\x0d\x0a\x0d\x0a\x0d\x0aconst\x20coneDirections\x20=\x20array<vec3<f32>,\x207>(\x0d\x0a\x20\x20\x20\x20vec3<f32>(0,\x20-0.7660444378852844,\x200.6427876353263855),\x0d\x0a\x20\x20\x20\x20vec3<f32>(0.5989176034927368,\x20-0.4776208996772766,\x200.6427876353263855),\x0d\x0a\x20\x20\x20\x20vec3<f32>(0.7468380928039551,\x200.17046086490154266,\x200.6427876949310303),\x0d\x0a\x20\x20\x20\x20vec3<f32>(0.3323742747306824,\x200.690182089805603,\x200.6427876949310303),\x0d\x0a\x20\x20\x20\x20vec3<f32>(-0.33237409591674805,\x200.6901821494102478,\x200.6427876949310303),\x0d\x0a\x20\x20\x20\x20vec3<f32>(-0.7468379735946655,\x200.1704610139131546,\x200.6427876949310303),\x0d\x0a\x20\x20\x20\x20vec3<f32>(-0.5989176630973816,\x20-0.4776207208633423,\x200.642787694931030),\x0d\x0a);\x0d\x0a\x0d\x0a//\x20鏋勫缓浠嶼杞村埌鐩爣娉曠嚎鐨勫潗鏍囩郴杞崲鐭╅樀\x0d\x0afn\x20construct_coordinate_system(n:\x20vec3<f32>)\x20->\x20mat3x3<f32>\x20{\x0d\x0a\x20\x20\x20\x20var\x20N\x20=\x20n;\x0d\x0a\x20\x20\x20\x20//\x20鎵惧埌涓嶯鏈�涓嶇浉鍏崇殑鍚戦噺\x0d\x0a\x20\x20\x20\x20var\x20helperVec\x20=\x20vec3<f32>(1,\x200,\x200);\x0d\x0a\x20\x20\x20\x20if\x20(abs(N.x)\x20>\x20abs(N.z))\x20{\x0d\x0a\x20\x20\x20\x20\x20\x20\x20\x20helperVec\x20=\x20vec3<f32>(0,\x200,\x201);\x0d\x0a\x20\x20\x20\x20}\x0d\x0a\x20\x20\x20\x20//\x20浣跨敤鍙変箻鏋勫缓姝d氦鍩篭x0d\x0a\x20\x20\x20\x20var\x20T\x20=\x20normalize(cross(helperVec,\x20N));\x0d\x0a\x20\x20\x20\x20var\x20B\x20=\x20cross(N,\x20T);\x0d\x0a\x20\x20\x20\x20return\x20mat3x3<f32>(T,\x20B,\x20N);\x0d\x0a}\x0d\x0a\x0d\x0a\x0d\x0a\x0d\x0afn\x20tracing(posOrigin:vec3<f32>,dir:vec3<f32>)\x20->\x20u32\x20{\x0d\x0a\x20\x20\x20\x20let\x20hitInfo\x20=\x20lightFire(posOrigin.xyz,dir.xyz,20);\x0d\x0a\x20\x20\x20\x20if(hitInfo.targetPrt\x20==\x200){\x0d\x0a\x20\x20\x20\x20\x20\x20\x20\x20return\x201u;\x0d\x0a\x20\x20\x20\x20}\x0d\x0a\x20\x20\x20\x20else\x20{\x0d\x0a\x20\x20\x20\x20\x20\x20\x20\x20let\x20stepDis=\x20distance(posOrigin\x20,\x20hitInfo.targetPonstion);\x0d\x0a\x20\x20\x20\x20\x20\x20\x20\x20if(stepDis\x20<\x2010){\x0d\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20return\x200u;\x0d\x0a\x20\x20\x20\x20\x20\x20\x20\x20}\x0d\x0a\x20\x20\x20\x20\x20\x20\x20\x20//Math.tan(3.14159265359\x20/\x20180.0\x20*\x2050.0\x20/\x202)\x20=\x200.4663076581550335\x0d\x0a\x20\x20\x20\x20\x20\x20\x20\x20//Math.tan(3.14159265359\x20/\x20180.0\x20*\x2060.0\x20/\x202)\x20=\x200.5773502691896717\x0d\x0a\x20\x20\x20\x20\x20\x20\x20\x20//Math.tan(3.14159265359\x20/\x20180.0\x20*\x2030.0\x20/\x202)\x20=\x200.2679491924311412\x0d\x0a\x20\x20\x20\x20\x20\x20\x20\x20var\x20level\x20=\x20min(u32(log2(2\x20*\x20stepDis\x20*\x200.5773502691896717)),5u);\x0d\x0a\x20\x20\x20\x20\x20\x20\x20\x20var\x20tempP\x20=\x20hitInfo.targetPrt;\x0d\x0a\x20\x20\x20\x20\x20\x20\x20\x20while(level\x20!=\x200){\x0d\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20level--;\x0d\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20tempP\x20=\x20lightBodiesSpace[tempP\x20+\x208];\x0d\x0a\x20\x20\x20\x20\x20\x20\x20\x20}\x0d\x0a\x20\x20\x20\x20\x20\x20\x20\x20return\x20tempP;\x0d\x0a\x20\x20\x20\x20}\x0d\x0a}\x0d\x0a\x0d\x0aconst\x20PI:\x20f32\x20=\x203.141592653589793;\x0d\x0afn\x20compute_sh_basis(direction:\x20vec3<f32>)\x20->\x20array<f32,\x209>\x20{\x0d\x0a\x20\x20\x20\x20var\x20basis:\x20array<f32,\x209>;\x0d\x0a\x0d\x0a//\x20\x20\x20\x20//\x20l=0\x0d\x0a//\x20\x20\x20\x20basis[0]\x20=\x200.5\x20*\x20sqrt(1.0\x20/\x20PI);\x0d\x0a//\x0d\x0a//\x20\x20\x20\x20//\x20l=1\x0d\x0a//\x20\x20\x20\x20basis[1]\x20=\x20sqrt(3.0\x20/\x20(4.0\x20*\x20PI))\x20*\x20direction.y;\x0d\x0a//\x20\x20\x20\x20basis[2]\x20=\x20sqrt(3.0\x20/\x20(4.0\x20*\x20PI))\x20*\x20direction.z;\x0d\x0a//\x20\x20\x20\x20basis[3]\x20=\x20sqrt(3.0\x20/\x20(4.0\x20*\x20PI))\x20*\x20direction.x;\x0d\x0a//\x0d\x0a//\x20\x20\x20\x20//\x20l=2\x0d\x0a//\x20\x20\x20\x20basis[4]\x20=\x200.5\x20*\x20sqrt(15.0\x20/\x20PI)\x20*\x20direction.x\x20*\x20direction.y;\x0d\x0a//\x20\x20\x20\x20basis[5]\x20=\x200.5\x20*\x20sqrt(15.0\x20/\x20PI)\x20*\x20direction.y\x20*\x20direction.z;\x0d\x0a//\x20\x20\x20\x20basis[6]\x20=\x200.25\x20*\x20sqrt(5.0\x20/\x20PI)\x20*\x20(3.0\x20*\x20direction.z\x20*\x20direction.z\x20-\x201.0);\x0d\x0a//\x20\x20\x20\x20basis[7]\x20=\x200.5\x20*\x20sqrt(15.0\x20/\x20PI)\x20*\x20direction.x\x20*\x20direction.z;\x0d\x0a//\x20\x20\x20\x20basis[8]\x20=\x200.25\x20*\x20sqrt(15.0\x20/\x20PI)\x20*\x20(direction.x\x20*\x20direction.x\x20-\x20direction.y\x20*\x20direction.y);\x0d\x0a\x0d\x0a\x20\x20\x20\x20//\x20l=0\x0d\x0a\x20\x20\x20\x20basis[0]\x20=\x200.28209479177387814;\x0d\x0a\x0d\x0a\x20\x20\x20\x20//\x20l=1\x0d\x0a\x20\x20\x20\x20basis[1]\x20=\x200.4886025119029199\x20*\x20direction.y;\x0d\x0a\x20\x20\x20\x20basis[2]\x20=\x200.4886025119029199\x20*\x20direction.z;\x0d\x0a\x20\x20\x20\x20basis[3]\x20=\x200.4886025119029199\x20*\x20direction.x;\x0d\x0a\x0d\x0a\x20\x20\x20\x20//\x20l=2\x0d\x0a\x20\x20\x20\x20basis[4]\x20=\x201.0925484305920792\x20*\x20direction.x\x20*\x20direction.y;\x0d\x0a\x20\x20\x20\x20basis[5]\x20=\x201.0925484305920792\x20*\x20direction.y\x20*\x20direction.z;\x0d\x0a\x20\x20\x20\x20basis[6]\x20=\x200.31539156525252005\x20*\x20(3.0\x20*\x20direction.z\x20*\x20direction.z\x20-\x201.0);\x0d\x0a\x20\x20\x20\x20basis[7]\x20=\x201.0925484305920792\x20*\x20direction.x\x20*\x20direction.z;\x0d\x0a\x20\x20\x20\x20basis[8]\x20=\x200.5462742152960396\x20*\x20(direction.x\x20*\x20direction.x\x20-\x20direction.y\x20*\x20direction.y);\x0d\x0a\x0d\x0a\x20\x20\x20\x20return\x20basis;\x0d\x0a}\x0d\x0a\x0d\x0a//const\x20FOUR_PI:\x20f32\x20=\x204.0\x20*\x20PI;\x0d\x0a//fn\x20main(){\x0d\x0a////\x20寰幆鍋囪浼氬緱鍒癗娆¢噰鏍风殑缁撴灉\x0d\x0a//\x20\x20\x20\x20loop{\x0d\x0a//\x20\x20\x20\x20\x20\x20\x20\x20//\x20鍋囪杩欓噷涓�鏍烽噰鏍穌ir鏂瑰悜寰楀埌浜嗗搴旂殑棰滆壊\x0d\x0a//\x20\x20\x20\x20\x20\x20\x20\x20var\x20color\x20=\x20vec3<f32>(0);\x0d\x0a//\x20\x20\x20\x20\x20\x20\x20\x20//\x20鍋囪杩欓噷鏄疦娆¢噰鏍风殑鍏朵腑涓�娆℃柟鍚慭x0d\x0a//\x20\x20\x20\x20\x20\x20\x20\x20var\x20dir\x20=\x20vec3<f32>(0);\x0d\x0a//\x20\x20\x20\x20\x20\x20\x20\x20\x20//\x202.\x20璁$畻绔嬩綋瑙掓潈閲嶏紙鍋囪鍧囧寑閲囨牱锛屾潈閲嶄负\x204蟺/N锛塡x0d\x0a//\x20\x20\x20\x20\x20\x20\x20\x20\x20//鐞冭皭绉垎缁撴灉闇�瑕侀櫎浠ユ�荤珛浣撹锛�4蟺锛夛紝鎴栨牴鎹噰鏍风瓥鐣ヨ皟鏁达紙濡傝挋鐗瑰崱娲涚Н鍒嗛渶涔樹互\x204蟺/N锛塡x0d\x0a//\x20\x20\x20\x20\x20\x20\x20\x20let\x20weight\x20=\x20FOUR_PI\x20/\x20f32(N);\x20//\x20闇�瑕佹彁鍓嶇煡閬撻噰鏍锋�绘暟N\x0d\x0a//\x20\x20\x20\x20\x20\x20\x20\x20//\x20璁$畻鐞冭皭鍩哄嚱鏁癨x0d\x0a//\x20\x20\x20\x20\x20\x20\x20\x20let\x20basis\x20=\x20compute_sh_l2_basis(direction);\x0d\x0a//\x20\x20\x20\x20\x20\x20\x20\x20for\x20(var\x20i:\x20u32\x20=\x200;\x20i\x20<\x209;\x20i++)\x20{\x0d\x0a//\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20let\x20contribution\x20=\x20color\x20*\x20basis[i]\x20*\x20weight;\x0d\x0a//\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20sh_coefficients.coefficients[i]\x20+=\x20contribution;\x0d\x0a//\x20\x20\x20\x20\x20\x20\x20\x20}\x0d\x0a//\x20\x20\x20\x20}\x0d\x0a//}\x0d\x0a//\x0d\x0a//fn\x20reconstruct_diffuse_light(normal:\x20vec3<f32>,\x20sh_coefficients:\x20array<vec3<f32>,\x205>)\x20->\x20vec3<f32>\x20{\x0d\x0a//\x20\x20\x20\x20let\x20x\x20=\x20normal.x;\x0d\x0a//\x20\x20\x20\x20let\x20y\x20=\x20normal.y;\x0d\x0a//\x20\x20\x20\x20let\x20z\x20=\x20normal.z;\x0d\x0a//\x0d\x0a//\x20\x20\x20\x20//\x20璁$畻\x20l=2\x20鐨勫熀鍑芥暟\x0d\x0a//\x20\x20\x20\x20let\x20basis\x20=\x20compute_sh_l2_basis(normal);\x0d\x0a//\x0d\x0a//\x20\x20\x20\x20//\x20閲嶅缓鍏夌収\x0d\x0a//\x20\x20\x20\x20var\x20light:\x20vec3<f32>\x20=\x20vec3(0.0);\x0d\x0a//\x20\x20\x20\x20for\x20(var\x20i:\x20u32\x20=\x200;\x20i\x20<\x205;\x20i++)\x20{\x0d\x0a//\x20\x20\x20\x20\x20\x20\x20\x20light\x20+=\x20sh_coefficients[i]\x20*\x20basis[i];\x0d\x0a//\x20\x20\x20\x20}\x0d\x0a//\x0d\x0a//\x20\x20\x20\x20return\x20light;\x0d\x0a//}','OnInitialized','ArrowLeft','blur_batch','origin','\x0d\x0astruct\x20SelfUniform\x20{\x0d\x0a\x20\x20\x20\x20show_bn:u32,\x0d\x0a\x20\x20\x20\x20show_gi:u32\x0d\x0a};\x0d\x0a\x0d\x0a@group(0)\x20@binding(0)\x20var<uniform>\x20selfUniform:\x20SelfUniform;\x0d\x0a@group(0)\x20@binding(1)\x20var<uniform>\x20scene:\x20SceneInfoStruct;\x0d\x0a@group(0)\x20@binding(2)\x20var<storage,read>\x20lightBodiesSpace:\x20array<u32>;\x0d\x0a\x0d\x0a\x0d\x0afn\x20getGradientColor(value:\x20f32)\x20->\x20vec3<f32>\x20{\x0d\x0a\x20\x20\x20\x20var\x20color:\x20vec3<f32>;\x0d\x0a\x0d\x0a\x20\x20\x20\x20if\x20(value\x20<\x200.5)\x20{\x0d\x0a\x20\x20\x20\x20\x20\x20\x20\x20//\x20浠庣孩鍒扮豢鐨勬笎鍙榎x0d\x0a\x20\x20\x20\x20\x20\x20\x20\x20let\x20t\x20=\x20value\x20*\x202.0;\x20//\x20鑼冨洿鏄犲皠鍒癨x200\x20鍒癨x201\x0d\x0a\x20\x20\x20\x20\x20\x20\x20\x20color\x20=\x20mix(vec3<f32>(1.0,\x200.0,\x200.0),\x20vec3<f32>(0.0,\x201.0,\x200.0),\x20t);\x0d\x0a\x20\x20\x20\x20}\x20else\x20{\x0d\x0a\x20\x20\x20\x20\x20\x20\x20\x20//\x20浠庣豢鍒拌摑鐨勬笎鍙榎x0d\x0a\x20\x20\x20\x20\x20\x20\x20\x20let\x20t\x20=\x20(value\x20-\x200.5)\x20*\x202.0;\x20//\x20鑼冨洿鏄犲皠鍒癨x200\x20鍒癨x201\x0d\x0a\x20\x20\x20\x20\x20\x20\x20\x20color\x20=\x20mix(vec3<f32>(0.0,\x201.0,\x200.0),\x20vec3<f32>(0.0,\x200.0,\x201.0),\x20t);\x0d\x0a\x20\x20\x20\x20}\x0d\x0a\x0d\x0a\x20\x20\x20\x20return\x20color;\x0d\x0a}\x0d\x0a\x0d\x0afn\x20getContrastingGradientColor(value:\x20f32)\x20->\x20vec3<f32>\x20{\x0d\x0a\x20\x20\x20\x20var\x20color:\x20vec3<f32>;\x0d\x0a\x0d\x0a\x20\x20\x20\x20if\x20(value\x20<\x200.2)\x20{\x0d\x0a\x20\x20\x20\x20\x20\x20\x20\x20//\x20绾㈠埌闈抃x0d\x0a\x20\x20\x20\x20\x20\x20\x20\x20let\x20t\x20=\x20value\x20/\x200.2;\x0d\x0a\x20\x20\x20\x20\x20\x20\x20\x20color\x20=\x20mix(vec3<f32>(1.0,\x200.0,\x200.0),\x20vec3<f32>(0.0,\x201.0,\x201.0),\x20t);\x0d\x0a\x20\x20\x20\x20}\x20else\x20if\x20(value\x20<\x200.4)\x20{\x0d\x0a\x20\x20\x20\x20\x20\x20\x20\x20//\x20闈掑埌缁縗x0d\x0a\x20\x20\x20\x20\x20\x20\x20\x20let\x20t\x20=\x20(value\x20-\x200.2)\x20/\x200.2;\x0d\x0a\x20\x20\x20\x20\x20\x20\x20\x20color\x20=\x20mix(vec3<f32>(0.0,\x201.0,\x201.0),\x20vec3<f32>(0.0,\x201.0,\x200.0),\x20t);\x0d\x0a\x20\x20\x20\x20}\x20else\x20if\x20(value\x20<\x200.6)\x20{\x0d\x0a\x20\x20\x20\x20\x20\x20\x20\x20//\x20缁垮埌绱玕x0d\x0a\x20\x20\x20\x20\x20\x20\x20\x20let\x20t\x20=\x20(value\x20-\x200.4)\x20/\x200.2;\x0d\x0a\x20\x20\x20\x20\x20\x20\x20\x20color\x20=\x20mix(vec3<f32>(0.0,\x201.0,\x200.0),\x20vec3<f32>(1.0,\x200.0,\x201.0),\x20t);\x0d\x0a\x20\x20\x20\x20}\x20else\x20if\x20(value\x20<\x200.8)\x20{\x0d\x0a\x20\x20\x20\x20\x20\x20\x20\x20//\x20绱埌钃漒x0d\x0a\x20\x20\x20\x20\x20\x20\x20\x20let\x20t\x20=\x20(value\x20-\x200.6)\x20/\x200.2;\x0d\x0a\x20\x20\x20\x20\x20\x20\x20\x20color\x20=\x20mix(vec3<f32>(1.0,\x200.0,\x201.0),\x20vec3<f32>(0.0,\x200.0,\x201.0),\x20t);\x0d\x0a\x20\x20\x20\x20}\x20else\x20{\x0d\x0a\x20\x20\x20\x20\x20\x20\x20\x20//\x20钃濆埌榛刓x0d\x0a\x20\x20\x20\x20\x20\x20\x20\x20let\x20t\x20=\x20(value\x20-\x200.8)\x20/\x200.2;\x0d\x0a\x20\x20\x20\x20\x20\x20\x20\x20color\x20=\x20mix(vec3<f32>(0.0,\x200.0,\x201.0),\x20vec3<f32>(1.0,\x201.0,\x200.0),\x20t);\x0d\x0a\x20\x20\x20\x20}\x0d\x0a\x0d\x0a\x20\x20\x20\x20return\x20color;\x0d\x0a}\x0d\x0a\x0d\x0afn\x20getDynamicGradientColor(value:\x20f32)\x20->\x20vec3<f32>\x20{\x0d\x0a\x20\x20\x20\x20//\x20棰滆壊鏁扮粍锛岄珮瀵规瘮搴﹂『搴廫x0d\x0a\x20\x20\x20\x20let\x20colors\x20=\x20array<vec3<f32>,\x206>(\x0d\x0a\x20\x20\x20\x20\x20\x20\x20\x20vec3<f32>(1.0,\x200.0,\x200.0),\x20//\x20绾㈣壊\x0d\x0a\x20\x20\x20\x20\x20\x20\x20\x20vec3<f32>(0.0,\x201.0,\x201.0),\x20//\x20闈掕壊\x0d\x0a\x20\x20\x20\x20\x20\x20\x20\x20vec3<f32>(0.0,\x201.0,\x200.0),\x20//\x20缁胯壊\x0d\x0a\x20\x20\x20\x20\x20\x20\x20\x20vec3<f32>(1.0,\x200.0,\x201.0),\x20//\x20绱壊\x0d\x0a\x20\x20\x20\x20\x20\x20\x20\x20vec3<f32>(0.0,\x200.0,\x201.0),\x20//\x20钃濊壊\x0d\x0a\x20\x20\x20\x20\x20\x20\x20\x20vec3<f32>(1.0,\x201.0,\x200.0)\x20\x20//\x20榛勮壊\x0d\x0a\x20\x20\x20\x20);\x0d\x0a\x0d\x0a\x20\x20\x20\x20//\x20灏哱x20value\x20鏄犲皠鍒癨x200\x20鍒癨x20colors.length\x20-\x201\x20(5)\x20涔嬮棿鐨勭储寮昞x0d\x0a\x20\x20\x20\x20let\x20scaled_value\x20=\x20value\x20*\x205.0;\x0d\x0a\x20\x20\x20\x20let\x20index\x20=\x20u32(scaled_value);\x0d\x0a\x20\x20\x20\x20let\x20t\x20=\x20fract(scaled_value);\x20//\x20鎻愬彇灏忔暟閮ㄥ垎鐢ㄤ簬绾挎�ф彃鍊糪x0d\x0a\x0d\x0a\x20\x20\x20\x20//\x20绾挎�ф彃鍊艰幏鍙栫浉閭婚鑹茬殑娓愬彉\x0d\x0a//\x20\x20\x20\x20return\x20mix(colors[index],\x20colors[(index\x20+\x201u)\x20%\x206],\x20t);\x0d\x0a\x0d\x0a\x20\x20\x20\x20return\x20colors[index];\x0d\x0a}\x0d\x0a\x0d\x0a\x0d\x0afn\x20prtToPos(targetPrt\x20:\x20u32)\x20->\x20vec4<f32>\x20{\x0d\x0a\x20\x20\x20\x20var\x20temp_p\x20=\x20targetPrt;\x0d\x0a\x20\x20\x20\x20var\x20newPos\x20=\x20vec3<u32>(0u);\x0d\x0a\x20\x20\x20\x20var\x20newPosF32\x20=\x20vec3<f32>(0);\x0d\x0a\x20\x20\x20\x20var\x20b0\x20=\x200u;\x0d\x0a\x20\x20\x20\x20var\x20b1\x20=\x20lightBodiesSpace[temp_p\x20+\x209]\x20>>\x2029;\x0d\x0a\x20\x20\x20\x20loop\x20{\x0d\x0a\x20\x20\x20\x20\x20\x20\x20\x20let\x20p1\x20=\x20lightBodiesSpace[temp_p\x20+\x208];\x0d\x0a\x20\x20\x20\x20\x20\x20\x20\x20if\x20p1\x20<\x2010u\x20{\x0d\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20let\x20p1_1\x20=\x20(p1\x20-\x201);\x0d\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20newPosF32\x20=\x20vec3<f32>(newPos)\x20*\x20select(vec3<f32>(-1.0),vec3<f32>(1.0),vec3<u32>((p1_1)\x20&\x201u,(p1_1\x20>>\x201u)\x20&\x201u,(p1_1\x20>>\x202u)\x20&\x201u)\x20==\x20vec3<u32>(1u));\x0d\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20break;\x0d\x0a\x20\x20\x20\x20\x20\x20\x20\x20}\x0d\x0a\x20\x20\x20\x20\x20\x20\x20\x20newPos.x\x20|=\x20(((b1)\x20&\x201u)\x20<<\x20b0);\x0d\x0a\x20\x20\x20\x20\x20\x20\x20\x20newPos.y\x20|=\x20(((b1\x20>>\x201u)\x20&\x201u)\x20<<\x20b0);\x0d\x0a\x20\x20\x20\x20\x20\x20\x20\x20newPos.z\x20|=\x20(((b1\x20>>\x202u)\x20&\x201u)\x20<<\x20b0);\x0d\x0a\x0d\x0a\x20\x20\x20\x20\x20\x20\x20\x20b0++;\x0d\x0a\x20\x20\x20\x20\x20\x20\x20\x20temp_p\x20=\x20p1;\x0d\x0a\x20\x20\x20\x20\x20\x20\x20\x20b1\x20=\x20lightBodiesSpace[temp_p\x20+\x209]\x20>>\x2029;\x0d\x0a\x20\x20\x20\x20}\x0d\x0a\x20\x20\x20\x20return\x20vec4<f32>((newPosF32\x20/\x20spaceUnit\x20*\x20pow(2.0,f32(27\x20-\x20b0))).xyz,f32(b0));\x0d\x0a//\x20\x20\x20\x20return\x20vec4<f32>((newPosF32\x20/\x20spaceUnit).xyz,f32(b0));\x0d\x0a}\x0d\x0a\x0d\x0astruct\x20VertexOutput\x20{\x0d\x0a\x20\x20@builtin(position)\x20position\x20:\x20vec4<f32>,\x0d\x0a\x20\x20@location(0)\x20fragColor\x20:\x20vec4<f32>,\x0d\x0a}\x0d\x0a\x0d\x0aoverride\x20spaceUnit\x20:\x20f32;\x0d\x0aoverride\x20lightBodiesSize\x20:\x20u32;\x0d\x0a@vertex\x0d\x0afn\x20vert_main(\x0d\x0a\x20\x20@builtin(vertex_index)\x20VertexIndex\x20:\x20u32\x0d\x0a)\x20->\x20VertexOutput\x20{\x0d\x0a\x0d\x0a\x20\x20\x20\x20let\x20targetPrt\x20=\x20VertexIndex\x20*\x20lightBodiesSize;\x0d\x0a\x20\x20\x20\x20let\x20pos\x20=\x20prtToPos(targetPrt);\x0d\x0a\x0d\x0a\x20\x20\x20\x20var\x20output\x20:\x20VertexOutput;\x0d\x0a\x20\x20\x20\x20if(u32(pos.w)\x20!=\x20selfUniform.show_bn){\x0d\x0a\x20\x20\x20\x20\x20\x20\x20\x20return\x20output;\x0d\x0a\x20\x20\x20\x20}\x0d\x0a\x20\x20\x20\x20let\x20worldPos\x20=\x20scene.projectionViewMatrix\x20*\x20vec4(pos.xyz,1);\x0d\x0a\x20\x20\x20\x20output.position\x20=\x20worldPos;\x0d\x0a\x20\x20\x20\x20output.fragColor\x20=\x20vec4<f32>(getDynamicGradientColor((pos.w\x20%\x205)\x20/\x205),1);\x0d\x0a\x0d\x0aif(selfUniform.show_gi\x20==\x200){\x0d\x0a\x20\x20\x20\x20output.fragColor\x20=\x20vec4<f32>(bitcast<f32>(lightBodiesSpace[targetPrt\x20+\x2010]),bitcast<f32>(lightBodiesSpace[targetPrt\x20+\x2011]),bitcast<f32>(lightBodiesSpace[targetPrt\x20+\x2012]),1);\x0d\x0a}else{\x0d\x0a\x20\x20\x20\x20if(pos.w\x20==\x2027){\x0d\x0a\x20\x20\x20\x20\x20\x20\x20\x20var\x20p_targetPrt\x20=\x20targetPrt;\x0d\x0a\x20\x20\x20\x20\x20\x20\x20\x20var\x20gi_level\x20=\x20selfUniform.show_gi;\x0d\x0a\x20\x20\x20\x20\x20\x20\x20\x20while(gi_level\x20!=0\x20){\x0d\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20gi_level--;\x0d\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20p_targetPrt\x20=\x20lightBodiesSpace[p_targetPrt\x20+\x208];\x0d\x0a\x20\x20\x20\x20\x20\x20\x20\x20}\x0d\x0a\x0d\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20let\x20sh_v0_u32\x20=\x20lightBodiesSpace[p_targetPrt\x20+\x2010];\x0d\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20let\x20sh_v1_u32\x20=\x20lightBodiesSpace[p_targetPrt\x20+\x2011];\x0d\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20let\x20sh_v2_u32\x20=\x20lightBodiesSpace[p_targetPrt\x20+\x2012];\x0d\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20let\x20sh_v3_u32\x20=\x20lightBodiesSpace[p_targetPrt\x20+\x2013];\x0d\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20let\x20sh_v4_u32\x20=\x20lightBodiesSpace[p_targetPrt\x20+\x2014];\x0d\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20let\x20sh_v5_u32\x20=\x20lightBodiesSpace[p_targetPrt\x20+\x2015];\x0d\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20let\x20sh_v6_u32\x20=\x20lightBodiesSpace[p_targetPrt\x20+\x2016];\x0d\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20let\x20sh_v7_u32\x20=\x20lightBodiesSpace[p_targetPrt\x20+\x2017];\x0d\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20let\x20sh_v8_u32\x20=\x20lightBodiesSpace[p_targetPrt\x20+\x2018];\x0d\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20var\x20sh_coefficients\x20=\x20array<vec3<f32>,\x209>(\x0d\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20vec3<f32>(f32((sh_v0_u32>>22u))\x20,\x20f32((sh_v0_u32>>11u)&2047u)\x20,\x20f32((sh_v0_u32)&2047u)\x20),\x0d\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20vec3<f32>(f32((sh_v1_u32>>22u))\x20,\x20f32((sh_v1_u32>>11u)&2047u)\x20,\x20f32((sh_v1_u32)&2047u)\x20),\x0d\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20vec3<f32>(f32((sh_v2_u32>>22u))\x20,\x20f32((sh_v2_u32>>11u)&2047u)\x20,\x20f32((sh_v2_u32)&2047u)\x20),\x0d\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20vec3<f32>(f32((sh_v3_u32>>22u))\x20,\x20f32((sh_v3_u32>>11u)&2047u)\x20,\x20f32((sh_v3_u32)&2047u)\x20),\x0d\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20vec3<f32>(f32((sh_v4_u32>>22u))\x20,\x20f32((sh_v4_u32>>11u)&2047u)\x20,\x20f32((sh_v4_u32)&2047u)\x20),\x0d\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20vec3<f32>(f32((sh_v5_u32>>22u))\x20,\x20f32((sh_v5_u32>>11u)&2047u)\x20,\x20f32((sh_v5_u32)&2047u)\x20),\x0d\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20vec3<f32>(f32((sh_v6_u32>>22u))\x20,\x20f32((sh_v6_u32>>11u)&2047u)\x20,\x20f32((sh_v6_u32)&2047u)\x20),\x0d\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20vec3<f32>(f32((sh_v7_u32>>22u))\x20,\x20f32((sh_v7_u32>>11u)&2047u)\x20,\x20f32((sh_v7_u32)&2047u)\x20),\x0d\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20vec3<f32>(f32((sh_v8_u32>>22u))\x20,\x20f32((sh_v8_u32>>11u)&2047u)\x20,\x20f32((sh_v8_u32)&2047u)\x20),\x0d\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20);\x0d\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20sh_coefficients[0]\x20=\x20vec3<f32>(sh_coefficients[0].r\x20/\x201023,sh_coefficients[0].g\x20/\x202047,sh_coefficients[0].b\x20/\x202047);\x0d\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20sh_coefficients[1]\x20=\x20vec3<f32>(sh_coefficients[1].r\x20/\x201023,sh_coefficients[1].g\x20/\x202047,sh_coefficients[1].b\x20/\x202047);\x0d\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20sh_coefficients[2]\x20=\x20vec3<f32>(sh_coefficients[2].r\x20/\x201023,sh_coefficients[2].g\x20/\x202047,sh_coefficients[2].b\x20/\x202047);\x0d\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20sh_coefficients[3]\x20=\x20vec3<f32>(sh_coefficients[3].r\x20/\x201023,sh_coefficients[3].g\x20/\x202047,sh_coefficients[3].b\x20/\x202047);\x0d\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20sh_coefficients[4]\x20=\x20vec3<f32>(sh_coefficients[4].r\x20/\x201023,sh_coefficients[4].g\x20/\x202047,sh_coefficients[4].b\x20/\x202047);\x0d\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20sh_coefficients[5]\x20=\x20vec3<f32>(sh_coefficients[5].r\x20/\x201023,sh_coefficients[5].g\x20/\x202047,sh_coefficients[5].b\x20/\x202047);\x0d\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20sh_coefficients[6]\x20=\x20vec3<f32>(sh_coefficients[6].r\x20/\x201023,sh_coefficients[6].g\x20/\x202047,sh_coefficients[6].b\x20/\x202047);\x0d\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20sh_coefficients[7]\x20=\x20vec3<f32>(sh_coefficients[7].r\x20/\x201023,sh_coefficients[7].g\x20/\x202047,sh_coefficients[7].b\x20/\x202047);\x0d\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20sh_coefficients[8]\x20=\x20vec3<f32>(sh_coefficients[8].r\x20/\x201023,sh_coefficients[8].g\x20/\x202047,sh_coefficients[8].b\x20/\x202047);\x0d\x0a\x0d\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20sh_coefficients[0]\x20=\x20sh_coefficients[0];\x0d\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20sh_coefficients[1]\x20=\x20sh_coefficients[1]\x20*\x202\x20-\x201;\x0d\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20sh_coefficients[2]\x20=\x20sh_coefficients[2]\x20*\x202\x20-\x201;\x0d\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20sh_coefficients[3]\x20=\x20sh_coefficients[3]\x20*\x202\x20-\x201;\x0d\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20sh_coefficients[4]\x20=\x20sh_coefficients[4]\x20*\x202\x20-\x201;\x0d\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20sh_coefficients[5]\x20=\x20sh_coefficients[5]\x20*\x202\x20-\x201;\x0d\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20sh_coefficients[6]\x20=\x20sh_coefficients[6]\x20*\x202\x20-\x201;\x0d\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20sh_coefficients[7]\x20=\x20sh_coefficients[7]\x20*\x202\x20-\x201;\x0d\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20sh_coefficients[8]\x20=\x20sh_coefficients[8]\x20*\x202\x20-\x201;\x0d\x0a\x0d\x0a\x0d\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20let\x20org_normal\x20=\x20normalize(unpack4x8snorm(lightBodiesSpace[targetPrt\x20+\x2013]).xyz);\x0d\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20let\x20basis\x20=\x20compute_sh_basis(-org_normal);\x0d\x0a\x0d\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20//\x20閲嶅缓鍏夌収\x0d\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20var\x20light:\x20vec3<f32>\x20=\x20vec3(0.0);\x0d\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20for\x20(var\x20i:\x20u32\x20=\x200;\x20i\x20<\x209;\x20i++)\x20{\x0d\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20light\x20+=\x20sh_coefficients[i]\x20*\x20basis[i];\x0d\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20}\x0d\x0a\x0d\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20output.fragColor\x20=\x20vec4(light.rgb,1.0);\x0d\x0a\x20\x20\x20\x20}\x0d\x0a\x0d\x0a}\x0d\x0a\x0d\x0a//\x20\x20\x20\x20output.fragColor\x20=\x20vec4((normalize(unpack4x8snorm(lightBodiesSpace[targetPrt\x20+\x2013]).xyz).rgb\x20+\x201)\x20*\x200.5,1);\x0d\x0a\x20\x20return\x20output;\x0d\x0a}\x0d\x0a\x0d\x0afn\x20compute_sh_basis(direction:\x20vec3<f32>)\x20->\x20array<f32,\x209>\x20{\x0d\x0a\x20\x20\x20\x20var\x20basis:\x20array<f32,\x209>;\x0d\x0a\x20\x20\x20\x20//\x20l=0\x0d\x0a\x20\x20\x20\x20basis[0]\x20=\x200.28209479177387814;\x0d\x0a\x0d\x0a\x20\x20\x20\x20//\x20l=1\x0d\x0a\x20\x20\x20\x20basis[1]\x20=\x200.4886025119029199\x20*\x20direction.y;\x0d\x0a\x20\x20\x20\x20basis[2]\x20=\x200.4886025119029199\x20*\x20direction.z;\x0d\x0a\x20\x20\x20\x20basis[3]\x20=\x200.4886025119029199\x20*\x20direction.x;\x0d\x0a\x0d\x0a\x20\x20\x20\x20//\x20l=2\x0d\x0a\x20\x20\x20\x20basis[4]\x20=\x201.0925484305920792\x20*\x20direction.x\x20*\x20direction.y;\x0d\x0a\x20\x20\x20\x20basis[5]\x20=\x201.0925484305920792\x20*\x20direction.y\x20*\x20direction.z;\x0d\x0a\x20\x20\x20\x20basis[6]\x20=\x200.31539156525252005\x20*\x20(3.0\x20*\x20direction.z\x20*\x20direction.z\x20-\x201.0);\x0d\x0a\x20\x20\x20\x20basis[7]\x20=\x201.0925484305920792\x20*\x20direction.x\x20*\x20direction.z;\x0d\x0a\x20\x20\x20\x20basis[8]\x20=\x200.5462742152960396\x20*\x20(direction.x\x20*\x20direction.x\x20-\x20direction.y\x20*\x20direction.y);\x0d\x0a\x0d\x0a\x20\x20\x20\x20return\x20basis;\x0d\x0a}\x0d\x0a\x0d\x0a@fragment\x0d\x0afn\x20frag_main(@builtin(position)\x20position:\x20vec4<f32>,\x0d\x0a\x20\x20@location(0)\x20fragColor:\x20vec4<f32>)\x20->\x20@location(0)\x20vec4<f32>\x20{\x0d\x0a\x20\x20return\x20fragColor;\x0d\x0a}','pinch-zoom','RenderShadow','dispatchWorkgroupsIndirect','VERTEX','renderShadowSize','edgeStrength_Uniform_DataView','cross','volumeRender_Uniform_DataView','MakeCommandComputeBingGroup','Loop','EdgeMergeIntend','lightInfo_dataBuffer','xzy','\x0d\x0astruct\x20SelfUniform\x20{\x0d\x0a\x20\x20\x20\x20addCount:u32,\x0d\x0a};\x0d\x0a\x0d\x0a@group(0)\x20@binding(0)\x20var<uniform>\x20selfUniform:\x20SelfUniform;\x0d\x0a@group(0)\x20@binding(1)\x20var<storage,read_write>\x20lightBodiesSpace:\x20array<u32>;\x0d\x0a\x0d\x0a\x0d\x0a//let\x20mat50\x20=\x20mat4.rotationX(3.1415926\x20/\x20180\x20*\x2050)\x0d\x0a//let\x20mat7\x20=\x20mat4.rotationZ(3.1415926\x20/\x20180\x20*\x20(360\x20/\x207))\x0d\x0a//let\x20n1\x20=\x20vec3.create(0,\x200,\x201)\x0d\x0a//let\x20res\x20=\x20[]\x0d\x0a//n1\x20=\x20vec3.normalize(vec3.transformMat4(n1,\x20mat50))\x0d\x0a//res.push(Array.from(n1))\x0d\x0a//n1\x20=\x20vec3.normalize(vec3.transformMat4(n1,\x20mat7))\x0d\x0a//res.push(Array.from(n1))\x0d\x0a//n1\x20=\x20vec3.normalize(vec3.transformMat4(n1,\x20mat7))\x0d\x0a//res.push(Array.from(n1))\x0d\x0a//n1\x20=\x20vec3.normalize(vec3.transformMat4(n1,\x20mat7))\x0d\x0a//res.push(Array.from(n1))\x0d\x0a//n1\x20=\x20vec3.normalize(vec3.transformMat4(n1,\x20mat7))\x0d\x0a//res.push(Array.from(n1))\x0d\x0a//n1\x20=\x20vec3.normalize(vec3.transformMat4(n1,\x20mat7))\x0d\x0a//res.push(Array.from(n1))\x0d\x0a//n1\x20=\x20vec3.normalize(vec3.transformMat4(n1,\x20mat7))\x0d\x0a//res.push(Array.from(n1))\x0d\x0a//\x2060搴﹀紑瑙掑渾閿�,z杞村亸绉�50搴x0d\x0aconst\x20coneDirections\x20=\x20array<vec3<f32>,\x207>(\x0d\x0a\x20\x20\x20\x20vec3<f32>(0,\x20-0.7660444378852844,\x200.6427876353263855),\x0d\x0a\x20\x20\x20\x20vec3<f32>(0.5989176034927368,\x20-0.4776208996772766,\x200.6427876353263855),\x0d\x0a\x20\x20\x20\x20vec3<f32>(0.7468380928039551,\x200.17046086490154266,\x200.6427876949310303),\x0d\x0a\x20\x20\x20\x20vec3<f32>(0.3323742747306824,\x200.690182089805603,\x200.6427876949310303),\x0d\x0a\x20\x20\x20\x20vec3<f32>(-0.33237409591674805,\x200.6901821494102478,\x200.6427876949310303),\x0d\x0a\x20\x20\x20\x20vec3<f32>(-0.7468379735946655,\x200.1704610139131546,\x200.6427876949310303),\x0d\x0a\x20\x20\x20\x20vec3<f32>(-0.5989176630973816,\x20-0.4776207208633423,\x200.642787694931030),\x0d\x0a);\x0d\x0a\x0d\x0a\x0d\x0astruct\x20InputData\x20{\x0d\x0a\x20\x20\x20@builtin(local_invocation_id)\x20local_id:\x20vec3<u32>,\x0d\x0a\x20\x20\x20@builtin(local_invocation_index)\x20local_index:\x20u32,\x0d\x0a\x20\x20\x20@builtin(global_invocation_id)\x20global_id:\x20vec3<u32>,\x0d\x0a}\x0d\x0a\x0d\x0aoverride\x20spaceTotalCount\x20:\x20u32;\x0d\x0aoverride\x20lightBodiesSize\x20:\x20u32;\x0d\x0a\x0d\x0a@compute\x20@workgroup_size(1024)\x0d\x0afn\x20main(input:\x20InputData)\x20{\x0d\x0a\x20\x20\x20\x20let\x20targetPrt\x20=\x20(input.global_id.x\x20+\x20selfUniform.addCount)\x20*\x20lightBodiesSize;\x0d\x0a\x20\x20\x20\x20if(targetPrt\x20>\x20spaceTotalCount\x20||\x20((lightBodiesSpace[targetPrt+9]>>2)&1)\x20==\x200){\x0d\x0a\x20\x20\x20\x20\x20\x20\x20\x20return\x20;\x0d\x0a\x20\x20\x20\x20}\x0d\x0a\x0d\x0a\x20\x20\x20\x20let\x20posOrigin\x20=\x20prtToPos(targetPrt);\x0d\x0a\x20\x20\x20\x20let\x20normal_lightBodies\x20=\x20normalize(unpack4x8snorm(lightBodiesSpace[targetPrt\x20+\x2013]).xyz);\x0d\x0a\x0d\x0a\x20\x20\x20\x20//\x20鏋勫缓浠庨粯璁ゅ崐鐞冨埌瀹為檯娉曠嚎鏂瑰悜鐨勮浆鎹㈢煩闃礬x0d\x0a\x20\x20\x20\x20let\x20transform\x20=\x20construct_coordinate_system(normal_lightBodies.xyz);\x0d\x0a\x20\x20\x20\x20lightBodiesSpace[targetPrt\x20+\x200]\x20=\x20(tracing(posOrigin,normal_lightBodies.xyz)\x20<<\x201u);\x0d\x0a\x20\x20\x20\x20lightBodiesSpace[targetPrt\x20+\x201]\x20=\x20(tracing(posOrigin,normalize(transform\x20*\x20coneDirections[0]))\x20<<\x201u);\x0d\x0a\x20\x20\x20\x20lightBodiesSpace[targetPrt\x20+\x202]\x20=\x20(tracing(posOrigin,normalize(transform\x20*\x20coneDirections[1]))\x20<<\x201u);\x0d\x0a\x20\x20\x20\x20lightBodiesSpace[targetPrt\x20+\x203]\x20=\x20(tracing(posOrigin,normalize(transform\x20*\x20coneDirections[2]))\x20<<\x201u);\x0d\x0a\x20\x20\x20\x20lightBodiesSpace[targetPrt\x20+\x204]\x20=\x20(tracing(posOrigin,normalize(transform\x20*\x20coneDirections[3]))\x20<<\x201u);\x0d\x0a\x20\x20\x20\x20lightBodiesSpace[targetPrt\x20+\x205]\x20=\x20(tracing(posOrigin,normalize(transform\x20*\x20coneDirections[4]))\x20<<\x201u);\x0d\x0a\x20\x20\x20\x20lightBodiesSpace[targetPrt\x20+\x206]\x20=\x20(tracing(posOrigin,normalize(transform\x20*\x20coneDirections[5]))\x20<<\x201u);\x0d\x0a\x20\x20\x20\x20lightBodiesSpace[targetPrt\x20+\x207]\x20=\x20(tracing(posOrigin,normalize(transform\x20*\x20coneDirections[6]))\x20<<\x201u);\x0d\x0a\x0d\x0a}\x0d\x0a\x0d\x0afn\x20tracing(posOrigin:vec3<f32>,dir:vec3<f32>)\x20->\x20u32\x20{\x0d\x0a\x20\x20\x20\x20let\x20hitInfo\x20=\x20lightFire(posOrigin.xyz,dir.xyz,20);\x0d\x0a\x20\x20\x20\x20if(hitInfo.targetPrt\x20==\x200){\x0d\x0a\x20\x20\x20\x20\x20\x20\x20\x20return\x201u;\x0d\x0a\x20\x20\x20\x20}\x0d\x0a\x20\x20\x20\x20else\x20{\x0d\x0a\x20\x20\x20\x20\x20\x20\x20\x20let\x20stepDis=\x20distance(posOrigin\x20,\x20hitInfo.targetPonstion);\x0d\x0a\x20\x20\x20\x20\x20\x20\x20\x20if(stepDis\x20<\x2010){\x0d\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20return\x200u;\x0d\x0a\x20\x20\x20\x20\x20\x20\x20\x20}\x0d\x0a\x20\x20\x20\x20\x20\x20\x20\x20//Math.tan(3.14159265359\x20/\x20180.0\x20*\x2050.0\x20/\x202)\x20=\x200.4663076581550335\x0d\x0a\x20\x20\x20\x20\x20\x20\x20\x20//Math.tan(3.14159265359\x20/\x20180.0\x20*\x2060.0\x20/\x202)\x20=\x200.5773502691896717\x0d\x0a\x20\x20\x20\x20\x20\x20\x20\x20//Math.tan(3.14159265359\x20/\x20180.0\x20*\x2030.0\x20/\x202)\x20=\x200.2679491924311412\x0d\x0a\x20\x20\x20\x20\x20\x20\x20\x20var\x20level\x20=\x20min(u32(log2(2\x20*\x20stepDis\x20*\x200.5773502691896717)),5u);\x0d\x0a\x20\x20\x20\x20\x20\x20\x20\x20var\x20tempP\x20=\x20hitInfo.targetPrt;\x0d\x0a\x20\x20\x20\x20\x20\x20\x20\x20while(level\x20!=\x200){\x0d\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20level--;\x0d\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20tempP\x20=\x20lightBodiesSpace[tempP\x20+\x208];\x0d\x0a\x20\x20\x20\x20\x20\x20\x20\x20}\x0d\x0a\x20\x20\x20\x20\x20\x20\x20\x20return\x20tempP;\x0d\x0a\x20\x20\x20\x20}\x0d\x0a}\x0d\x0a\x0d\x0a//\x20鏋勫缓浠嶼杞村埌鐩爣娉曠嚎鐨勫潗鏍囩郴杞崲鐭╅樀\x0d\x0afn\x20construct_coordinate_system(n:\x20vec3<f32>)\x20->\x20mat3x3<f32>\x20{\x0d\x0a\x20\x20\x20\x20var\x20N\x20=\x20n;\x0d\x0a\x20\x20\x20\x20//\x20鎵惧埌涓嶯鏈�涓嶇浉鍏崇殑鍚戦噺\x0d\x0a\x20\x20\x20\x20var\x20helperVec\x20=\x20vec3<f32>(1,\x200,\x200);\x0d\x0a\x20\x20\x20\x20if\x20(abs(N.x)\x20>\x20abs(N.z))\x20{\x0d\x0a\x20\x20\x20\x20\x20\x20\x20\x20helperVec\x20=\x20vec3<f32>(0,\x200,\x201);\x0d\x0a\x20\x20\x20\x20}\x0d\x0a\x20\x20\x20\x20//\x20浣跨敤鍙変箻鏋勫缓姝d氦鍩篭x0d\x0a\x20\x20\x20\x20var\x20T\x20=\x20normalize(cross(helperVec,\x20N));\x0d\x0a\x20\x20\x20\x20var\x20B\x20=\x20cross(N,\x20T);\x0d\x0a\x20\x20\x20\x20return\x20mat3x3<f32>(T,\x20B,\x20N);\x0d\x0a}','3864936ZVNiUm','lightBodiesBounce_Indirect_VmBuffer','ceil','moveMu','min','ser','pendingRequest_mesh_read_VmBuffer','match','position:\x20absolute;top:\x200;left:\x200;z-index:\x201;border:\x201px\x20solid\x20white;pointer-events:\x20none;','renderShadowDepthTexture','UpVmData','vm_target_texture','_target','buf','postMessage','MakeCommandComputePipeline2','colorAttachments','amd','computeMatrix','meshRender_transparentColorData_VmBuffer','streamRenderComputePipeline','ssr_color_accumulated_Texture','\x0d\x0astruct\x20AtomicData\x20{\x0d\x0a\x20\x20\x20\x20count:atomic<u32>,\x0d\x0a\x20\x20\x20\x20temp:atomic<u32>,\x0d\x0a\x20\x20\x20\x20temp2:atomic<u32>,\x0d\x0a\x20\x20\x20\x20temp3:atomic<u32>,\x0d\x0a}\x0d\x0a\x0d\x0a@group(0)\x20@binding(0)\x20var<uniform>\x20scene:\x20SceneInfoStruct;\x0d\x0a@group(0)\x20@binding(1)\x20var<storage,read_write>\x20atomicData:\x20AtomicData;\x0d\x0a@group(0)\x20@binding(2)\x20var<storage,read_write>\x20instancesAreaData:\x20array<u32>;\x0d\x0a@group(0)\x20@binding(3)\x20var<storage,read_write>\x20instanceData:\x20array<u32>;\x0d\x0a@group(0)\x20@binding(4)\x20var<storage,read_write>\x20meshData:\x20array<u32>;\x0d\x0a@group(0)\x20@binding(5)\x20var<storage,read_write>\x20modelData:\x20array<u32>;\x0d\x0a@group(0)\x20@binding(6)\x20var<storage,read_write>\x20meshLodData:\x20array<u32>;\x0d\x0a\x0d\x0a\x0d\x0astruct\x20Model\x20{\x0d\x0a\x20\x20\x20\x20transform:\x20mat4x4<f32>,\x0d\x0a};\x0d\x0a\x0d\x0afn\x20getModel(offset:u32)\x20->\x20Model\x20{\x0d\x0a\x20\x20\x20\x20var\x20model\x20:\x20Model;\x0d\x0a\x20\x20\x20\x20model.transform\x20=\x20mat4x4<f32>(\x0d\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20bitcast<f32>(modelData[offset]),bitcast<f32>(modelData[offset\x20+\x201]),bitcast<f32>(modelData[offset\x20+\x202]),bitcast<f32>(modelData[offset\x20+\x203]),\x0d\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20bitcast<f32>(modelData[offset\x20+\x204]),bitcast<f32>(modelData[offset\x20+\x205]),bitcast<f32>(modelData[offset\x20+\x206]),bitcast<f32>(modelData[offset\x20+\x207]),\x0d\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20bitcast<f32>(modelData[offset\x20+\x208]),bitcast<f32>(modelData[offset\x20+\x209]),bitcast<f32>(modelData[offset\x20+\x2010]),bitcast<f32>(modelData[offset\x20+\x2011]),\x0d\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20bitcast<f32>(modelData[offset\x20+\x2012]),bitcast<f32>(modelData[offset\x20+\x2013]),bitcast<f32>(modelData[offset\x20+\x2014]),bitcast<f32>(modelData[offset\x20+\x2015]));\x0d\x0a\x20\x20\x20\x20return\x20model;\x0d\x0a}\x0d\x0a\x0d\x0a\x0d\x0astruct\x20Instance\x20{\x0d\x0a\x20\x20\x20\x20id:\x20u32,\x0d\x0a\x20\x20\x20\x20transform:\x20mat4x4<f32>,\x0d\x0a\x20\x20\x20\x20modelPtr:\x20u32,\x0d\x0a\x20\x20\x20\x20meshLodPtr:\x20u32,\x0d\x0a\x20\x20\x20\x20status:\x20u32,\x0d\x0a\x20\x20\x20\x20materialPtr:\x20u32,\x0d\x0a\x20\x20\x20\x20//\x20鍖呭洿鐩抃x0d\x0a\x20\x20\x20\x20boxMin:\x20vec3<f32>,\x0d\x0a\x20\x20\x20\x20boxMax:\x20vec3<f32>,\x0d\x0a\x20\x20\x20\x20tree_vmOffset\x20:\x20u32,\x0d\x0a\x20\x20\x20\x20meshParentPtr\x20:\x20u32,\x0d\x0a};\x0d\x0a\x0d\x0a\x0d\x0afn\x20getInstance(offset:u32)\x20->\x20Instance\x20{\x0d\x0a\x20\x20\x20\x20var\x20ins\x20:\x20Instance;\x0d\x0a\x0d\x0a\x20\x20\x20\x20ins.modelPtr\x20=\x20instanceData[offset];\x0d\x0a\x20\x20\x20\x20ins.id\x20=\x20instanceData[offset\x20+\x201];\x0d\x0a\x0d\x0a\x20\x20\x20\x20ins.transform\x20=\x20mat4x4<f32>(\x0d\x0a\x20\x20\x20\x20bitcast<f32>(instanceData[offset\x20+\x203]),\x20bitcast<f32>(instanceData[offset\x20+\x204]),\x20bitcast<f32>(instanceData[offset\x20+\x205]),0,\x0d\x0a\x20\x20\x20\x20bitcast<f32>(instanceData[offset\x20+\x206]),\x20bitcast<f32>(instanceData[offset\x20+\x207]),\x20bitcast<f32>(instanceData[offset\x20+\x208]),0,\x0d\x0a\x20\x20\x20\x20bitcast<f32>(instanceData[offset\x20+\x209]),\x20bitcast<f32>(instanceData[offset\x20+\x2010]),bitcast<f32>(instanceData[offset\x20+\x2011]),0,\x0d\x0a\x20\x20\x20\x20bitcast<f32>(instanceData[offset\x20+\x2012]),bitcast<f32>(instanceData[offset\x20+\x2013]),bitcast<f32>(instanceData[offset\x20+\x2014]),1);\x0d\x0a\x0d\x0a\x20\x20\x20\x20ins.boxMin\x20=\x20vec3<f32>(bitcast<f32>(instanceData[offset\x20+\x2015]),bitcast<f32>(instanceData[offset\x20+\x2016]),bitcast<f32>(instanceData[offset\x20+\x2017]));\x0d\x0a\x20\x20\x20\x20ins.boxMax\x20=\x20vec3<f32>(bitcast<f32>(instanceData[offset\x20+\x2018]),bitcast<f32>(instanceData[offset\x20+\x2019]),bitcast<f32>(instanceData[offset\x20+\x2020]));\x0d\x0a\x0d\x0a\x20\x20\x20\x20ins.meshLodPtr\x20=\x20instanceData[offset\x20+\x2025];\x0d\x0a\x20\x20\x20\x20ins.status\x20=\x20instanceData[offset\x20+\x2022];\x0d\x0a\x20\x20\x20\x20ins.materialPtr\x20=\x20instanceData[offset\x20+\x2023];\x0d\x0a\x20\x20\x20\x20ins.tree_vmOffset\x20=\x20instanceData[offset\x20+\x202];\x0d\x0a\x20\x20\x20\x20ins.meshParentPtr\x20=\x20instanceData[offset\x20+\x2024];\x0d\x0a\x0d\x0a\x20\x20\x20\x20return\x20ins;\x0d\x0a}\x0d\x0a\x0d\x0a\x0d\x0a//\x20璁$畻鍖呭洿鐩掔殑8涓《鐐筡x0d\x0afn\x20computeAABBVertices(boxMin:\x20vec3<f32>,boxMax:\x20vec3<f32>)\x20->\x20array<vec4f,\x208>\x20{\x0d\x0a\x20\x20return\x20array<vec4f,8>(\x0d\x0a\x20\x20\x20\x20vec4f(boxMin[0],\x20boxMin[1],\x20boxMin[2],\x201.0),\x0d\x0a\x20\x20\x20\x20vec4f(boxMax[0],\x20boxMin[1],\x20boxMin[2],\x201.0),\x0d\x0a\x20\x20\x20\x20vec4f(boxMax[0],\x20boxMax[1],\x20boxMin[2],\x201.0),\x0d\x0a\x20\x20\x20\x20vec4f(boxMin[0],\x20boxMax[1],\x20boxMin[2],\x201.0),\x0d\x0a\x20\x20\x20\x20vec4f(boxMin[0],\x20boxMin[1],\x20boxMax[2],\x201.0),\x0d\x0a\x20\x20\x20\x20vec4f(boxMax[0],\x20boxMin[1],\x20boxMax[2],\x201.0),\x0d\x0a\x20\x20\x20\x20vec4f(boxMax[0],\x20boxMax[1],\x20boxMax[2],\x201.0),\x0d\x0a\x20\x20\x20\x20vec4f(boxMin[0],\x20boxMax[1],\x20boxMax[2],\x201.0)\x0d\x0a\x20\x20);\x0d\x0a}\x0d\x0a\x0d\x0a//\x20璁$畻椤剁偣鐨勫嚫鍖匼x0d\x0afn\x20computeConvexHull(origVertices:\x20array<vec2<f32>,\x208>)\x20->\x20array<vec2<f32>,\x208>\x20{\x0d\x0a\x0d\x0a\x20\x20\x20\x20//\x20origVertices\x20椤剁偣鑼冨洿鏄�-1鑷�1\x0d\x0a\x0d\x0a\x09var\x20vertices:\x20array<vec2<f32>,\x208>\x20=\x20origVertices;\x20//\x20鍒涘缓鏂版暟缁勪互淇敼椤剁偣\x0d\x0a\x0d\x0a\x20\x20\x20\x20//\x20瀵绘壘y鍧愭爣鏈�灏忥紙鏈�浣庯級锛屽鏋測鐩稿悓鍒檟鏈�灏忥紙鏈�宸︼級鐨勯《鐐筡x0d\x0a\x20\x20\x20\x20var\x20lowestIndex:\x20u32\x20=\x200u;\x0d\x0a\x20\x20\x20\x20for\x20(var\x20i:\x20u32\x20=\x201u;\x20i\x20<\x208u;\x20i\x20=\x20i\x20+\x201u)\x20{\x0d\x0a\x20\x20\x20\x20\x20\x20\x20\x20if\x20(vertices[i].y\x20<\x20vertices[lowestIndex].y\x20||\x0d\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20(vertices[i].y\x20==\x20vertices[lowestIndex].y\x20&&\x0d\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20vertices[i].x\x20<\x20vertices[lowestIndex].x))\x20{\x0d\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20lowestIndex\x20=\x20i;\x0d\x0a\x20\x20\x20\x20\x20\x20\x20\x20}\x0d\x0a\x20\x20\x20\x20}\x0d\x0a\x0d\x0a\x20\x20\x20\x20//\x20灏嗘壘鍒扮殑鏈�浣庢渶宸︾偣涓庣涓�涓偣浜ゆ崲\x0d\x0a\x20\x20\x20\x20let\x20tempVertex\x20=\x20vertices[0];\x0d\x0a\x20\x20\x20\x20vertices[0]\x20=\x20vertices[lowestIndex];\x0d\x0a\x20\x20\x20\x20vertices[lowestIndex]\x20=\x20tempVertex;\x0d\x0a\x0d\x0a\x20\x20\x20\x20//\x20瀵归《鐐规寜鐓т笌鍩虹偣鐨勬瀬瑙掑ぇ灏忚繘琛屾帓搴忥紙浣跨敤鎻掑叆鎺掑簭绠楁硶锛塡x0d\x0a\x20\x20\x20\x20for\x20(var\x20i:\x20u32\x20=\x201u;\x20i\x20<\x208u;\x20i\x20=\x20i\x20+\x201u)\x20{\x0d\x0a\x20\x20\x20\x20\x20\x20\x20\x20let\x20temp\x20=\x20vertices[i];\x0d\x0a\x20\x20\x20\x20\x20\x20\x20\x20let\x20base\x20=\x20vertices[0];\x0d\x0a\x20\x20\x20\x20\x20\x20\x20\x20let\x20angleTemp\x20=\x20atan2(temp.y\x20-\x20base.y,\x20temp.x\x20-\x20base.x);\x0d\x0a\x20\x20\x20\x20\x20\x20\x20\x20var\x20j:\x20u32\x20=\x20i;\x0d\x0a\x0d\x0a\x20\x20\x20\x20\x20\x20\x20\x20while\x20(j\x20>\x200u)\x20{\x0d\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20let\x20anglePrev\x20=\x20atan2(vertices[j\x20-\x201u].y\x20-\x20base.y,\x20vertices[j\x20-\x201u].x\x20-\x20base.x);\x0d\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20if\x20(anglePrev\x20<=\x20angleTemp)\x20{\x0d\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20break;\x0d\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20}\x0d\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20vertices[j]\x20=\x20vertices[j\x20-\x201u];\x0d\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20j\x20=\x20j\x20-\x201u;\x0d\x0a\x20\x20\x20\x20\x20\x20\x20\x20}\x0d\x0a\x20\x20\x20\x20\x20\x20\x20\x20vertices[j]\x20=\x20temp;\x0d\x0a\x20\x20\x20\x20}\x0d\x0a\x0d\x0a\x20\x20\x20\x20//\x20鍒濆鍖栧嚫鍖呯储寮曟暟缁勶紝鍏ㄩ儴璁剧疆涓�-1\x0d\x0a\x20\x20\x20\x20var\x20hullIndices:\x20array<i32,\x208>\x20=\x20array<i32,\x208>(-1,\x20-1,\x20-1,\x20-1,\x20-1,\x20-1,\x20-1,\x20-1);\x0d\x0a\x0d\x0a\x20\x20\x20\x20//\x20鏋勯�犲嚫鍖咃紙浣跨敤Graham鎵弿绠楁硶锛塡x0d\x0a\x20\x20\x20\x20var\x20k:\x20i32\x20=\x200;\x0d\x0a\x20\x20\x20\x20hullIndices[k]\x20=\x200;\x20//\x20鏈�浣庢渶宸︾偣鏄嚫鍖呯殑璧风偣\x0d\x0a\x20\x20\x20\x20k\x20=\x20k\x20+\x201;\x0d\x0a\x20\x20\x20\x20for\x20(var\x20i:\x20u32\x20=\x201u;\x20i\x20<\x208u;\x20i\x20=\x20i\x20+\x201u)\x20{\x0d\x0a\x20\x20\x20\x20\x20\x20\x20\x20while\x20(k\x20>=\x202)\x20{\x0d\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20let\x20cp\x20=\x20(vertices[u32(hullIndices[k\x20-\x201])].x\x20-\x20vertices[u32(hullIndices[k\x20-\x202])].x)\x20*\x20(vertices[i].y\x20-\x20vertices[u32(hullIndices[k\x20-\x202])].y)\x20-\x20(vertices[u32(hullIndices[k\x20-\x201])].y\x20-\x20vertices[u32(hullIndices[k\x20-\x202])].y)\x20*\x20(vertices[i].x\x20-\x20vertices[u32(hullIndices[k\x20-\x202])].x);\x0d\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20if\x20(cp\x20<=\x200.0)\x20{\x0d\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20k\x20=\x20k\x20-\x201;\x0d\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20}\x20else\x20{\x0d\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20break;\x0d\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20}\x0d\x0a\x20\x20\x20\x20\x20\x20\x20\x20}\x0d\x0a\x20\x20\x20\x20\x20\x20\x20\x20hullIndices[k]\x20=\x20i32(i);\x0d\x0a\x20\x20\x20\x20\x20\x20\x20\x20k\x20=\x20k\x20+\x201;\x0d\x0a\x20\x20\x20\x20}\x0d\x0a\x20\x20\x20\x20//\x20鍑稿寘鏋勯�犲畬鎴愶紝鏈夋晥鐨勫嚫鍖呯偣瀛樺偍鍦╤ull鏁扮粍鐨勫墠k涓厓绱犱腑\x0d\x0a\x09var\x20hullVertices:\x20array<vec2<f32>,\x208>;\x0d\x0a\x09//\x20鍥犱负椤剁偣鑼冨洿鏄�-1鑷�1,杩欓噷鍒濆鍖栦负2鐢ㄤ簬鍚庣画浠g爜鍒ゆ柇\x0d\x0a\x20\x20\x20\x20for\x20(var\x20i:\x20i32\x20=\x200;\x20i\x20<\x208;\x20i\x20=\x20i\x20+\x201)\x20{\x0d\x0a\x20\x20\x20\x20\x20\x20\x20\x20hullVertices[i]\x20=\x20vec2<f32>(2,2);\x0d\x0a\x20\x20\x20\x20}\x0d\x0a\x20\x20\x20\x20//\x20鍦ㄧ敓鎴愬嚫鍖呴《鐐规椂锛屾鏌x20hullIndices\x20涓殑绱㈠紩鏄惁鏈夋晥\x0d\x0a\x20\x20\x20\x20for\x20(var\x20i:\x20i32\x20=\x200;\x20i\x20<\x20k;\x20i\x20=\x20i\x20+\x201)\x20{\x0d\x0a\x20\x20\x20\x20\x20\x20\x20\x20if\x20(hullIndices[i]\x20!=\x20-1)\x20{\x0d\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20hullVertices[i]\x20=\x20vertices[u32(hullIndices[i])];\x0d\x0a\x20\x20\x20\x20\x20\x20\x20\x20}\x0d\x0a\x20\x20\x20\x20}\x0d\x0a\x0d\x0a\x20\x20\x20\x20return\x20hullVertices;\x0d\x0a}\x0d\x0a\x0d\x0a//\x20璁$畻鍖呭洿鐩掔殑鎶曞奖闈㈢Н锛岃緭鍏ユ槸aabb鍖呭洿鐩掔殑鏈�灏忓�煎拰鏈�澶у�兼暟缁勪互鍙婅鍥炬姇褰辩煩闃礬x0d\x0afn\x20computeScreenSpaceArea(boxMin:\x20vec3<f32>,boxMax:\x20vec3<f32>,\x20projectionViewMatrix:\x20mat4x4<f32>)\x20->\x20f32\x20{\x0d\x0a\x20\x20\x20\x20//\x20璁$畻鍖呭洿鐩掔殑8涓《鐐筡x0d\x0a\x20\x20\x20\x20let\x20vertices\x20=\x20computeAABBVertices(boxMin,boxMax);\x0d\x0a\x20\x20\x20\x20//\x20鍒濆鍖栨暟缁勬潵瀛樺偍鎶曞奖鍚庣殑x鍜寉鍧愭爣\x0d\x0a\x20\x20\x20\x20var\x20ndcVertices:\x20array<vec2f,\x208>;\x0d\x0a\x20\x20\x20\x20//\x20寰幆閬嶅巻椤剁偣鏁扮粍\x0d\x0a\x20\x20\x20\x20for\x20(var\x20i\x20=\x200;\x20i\x20<\x208;\x20i++)\x20{\x0d\x0a\x20\x20\x20\x20\x20\x20\x20\x20let\x20clipSpace\x20=\x20projectionViewMatrix\x20*\x20vertices[i];\x20//\x20搴旂敤瑙嗗浘鎶曞奖鐭╅樀鍙樻崲鍒拌鍓┖闂碶x0d\x0a\x20\x20\x20\x20\x20\x20\x20\x20//\x20璁$畻NDC绌洪棿鍧愭爣\x0d\x0a\x20\x20\x20\x20\x20\x20\x20\x20ndcVertices[i]\x20=\x20clipSpace.xy\x20/\x20clipSpace.w;\x0d\x0a\x20\x20\x20\x20\x20\x20\x20\x20//\x20闄愬埗鍦ㄥ睆骞曞尯鍩熷唴\x0d\x0a\x20\x20\x20\x20\x20\x20\x20\x20ndcVertices[i]\x20=\x20clamp(ndcVertices[i],vec2<f32>(-1.0,-1.0),vec2<f32>(1.0,1.0));\x0d\x0a\x20\x20\x20\x20}\x0d\x0a\x20\x20\x20\x20//\x20璁$畻鍑哄嚫鍖呴『搴忛《鐐筡x0d\x0a\x20\x20\x20\x20let\x20verticesHull\x20=\x20computeConvexHull(ndcVertices);\x0d\x0a\x0d\x0a\x20\x20\x20\x20var\x20area:\x20f32\x20=\x200.0;\x0d\x0a\x20\x20\x20\x20//\x20浣跨敤姊舰娉曡绠楀杈瑰舰闈㈢Н\x0d\x0a\x20\x20\x20\x20for\x20(var\x20i:\x20i32\x20=\x200;\x20i\x20<\x208;\x20i++)\x20{\x0d\x0a\x20\x20\x20\x20\x20\x20\x20\x20let\x20nextIndex\x20=\x20(i\x20+\x201)\x20%\x208;\x0d\x0a\x20\x20\x20\x20\x20\x20\x20\x20if\x20(verticesHull[i].x\x20!=\x202.0\x20&&\x20verticesHull[nextIndex].x\x20!=\x202.0)\x20{\x0d\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20area\x20+=\x20(verticesHull[nextIndex].y\x20+\x20verticesHull[i].y)\x20*\x20(verticesHull[nextIndex].x\x20-\x20verticesHull[i].x);\x0d\x0a\x20\x20\x20\x20\x20\x20\x20\x20}\x0d\x0a\x20\x20\x20\x20}\x0d\x0a\x0d\x0a\x20\x20\x20\x20area\x20=\x200.5\x20*\x20abs(area);\x20//\x20鏍规嵁姊舰娉曡绠楁渶缁堥潰绉痋x0d\x0a\x0d\x0a\x20\x20\x20\x20return\x20area;\x0d\x0a}\x0d\x0a\x0d\x0a\x0d\x0a\x0d\x0astruct\x20InputData\x20{\x0d\x0a\x20\x20\x20@builtin(local_invocation_id)\x20local_id:\x20vec3<u32>,\x0d\x0a\x20\x20\x20@builtin(local_invocation_index)\x20local_index:\x20u32,\x0d\x0a\x20\x20\x20@builtin(global_invocation_id)\x20global_id:\x20vec3<u32>,\x0d\x0a}\x0d\x0a\x0d\x0a\x0d\x0aoverride\x20perWorkgroup\x20:\x20u32;\x0d\x0aoverride\x20instanceItemVmSize\x20:\x20u32;\x0d\x0a\x0d\x0a@compute\x20@workgroup_size(perWorkgroup)\x0d\x0afn\x20main(input:\x20InputData)\x20{\x0d\x0a\x0d\x0a\x20\x20\x20\x20//\x20瀹炰緥鏁版嵁涓嶄粠0寮�濮�,鍥犱负浼氬拰娓叉煋缁撴灉鐨勯粯璁ゅ��0鍐茬獊\x0d\x0a\x20\x20\x20\x20if(input.global_id.x\x20==\x200){\x0d\x0a\x20\x20\x20\x20\x20\x20\x20\x20return\x20;\x0d\x0a\x20\x20\x20\x20}\x0d\x0a\x20\x20\x20\x20//鑾峰彇瀹炰緥鎸囬拡\x0d\x0a\x20\x20\x20\x20let\x20instancePtr\x20=\x20input.global_id.x\x20*\x20instanceItemVmSize;\x0d\x0a\x0d\x0a\x20\x20\x20\x20if(instanceData[instancePtr\x20+\x201]\x20==\x200){\x0d\x0a\x20\x20\x20\x20\x20\x20\x20\x20return\x20;\x0d\x0a\x20\x20\x20\x20}\x0d\x0a\x0d\x0a\x20\x20\x20\x20//\x20鍒ゆ柇瀹炰緥鐘舵�乗x0d\x0a\x20\x20\x20\x20if(instanceData[instancePtr\x20+\x2022]\x20==\x200){\x0d\x0a\x20\x20\x20\x20\x20\x20\x20\x20return\x20;\x0d\x0a\x20\x20\x20\x20}\x0d\x0a\x0d\x0a\x20\x20\x20\x20//\x20鍒ゆ柇妯″瀷鐘舵�乗x0d\x0a\x20\x20\x20\x20if(modelData[instanceData[instancePtr]\x20+\x2017]\x20==\x200){\x0d\x0a\x20\x20\x20\x20\x20\x20\x20\x20return\x20;\x0d\x0a\x20\x20\x20\x20}\x0d\x0a\x0d\x0a\x20\x20\x20\x20//\x20鑾峰彇瀹炰緥淇℃伅\x0d\x0a\x20\x20\x20\x20let\x20ins\x20=\x20getInstance(instancePtr);\x0d\x0a\x0d\x0a\x20\x20\x20\x20let\x20model\x20=\x20getModel(ins.modelPtr);\x0d\x0a\x0d\x0a\x0d\x0a\x20\x20\x20\x20let\x20tree_visible\x20=\x20bitcast<u32>(modelData[ins.tree_vmOffset]);\x0d\x0a\x20\x20\x20\x20if(tree_visible\x20==\x200){\x0d\x0a\x20\x20\x20\x20\x20\x20\x20\x20return\x20;\x0d\x0a\x20\x20\x20\x20}\x0d\x0a\x0d\x0a//\x20\x20\x20\x20atomicAdd(&atomicData.temp,1);\x0d\x0a\x0d\x0a\x20\x20\x20\x20let\x20worldBoxMin\x20=\x20\x20model.transform\x20*\x20vec4(ins.boxMin,1);\x0d\x0a\x20\x20\x20\x20let\x20worldBoxMax\x20=\x20\x20model.transform\x20*\x20vec4(ins.boxMax,1);\x0d\x0a\x0d\x0a\x20\x20\x20\x20let\x20area\x20=\x20computeScreenSpaceArea(worldBoxMin.xyz,worldBoxMax.xyz,scene.projectionViewMatrix);\x0d\x0a\x20\x20\x20\x20if(area\x20<=\x200.00001){\x0d\x0a\x20\x20\x20\x20\x20\x20\x20\x20return\x20;\x0d\x0a\x20\x20\x20\x20}\x0d\x0a\x0d\x0a\x20\x20\x20\x20//\x20鍒ゆ柇闇�瑕佸姞杞絤esh鐨勯偅涓猯od\x0d\x0a\x20\x20\x20\x20//\x20todo:杩欓噷闇�瑕佹牴鎹姇褰遍潰绉绠楀簲璇ユ樉绀虹殑mesh\x0d\x0a\x20\x20\x20\x20//\x20todo:濡傛灉涓夎褰㈡暟閲忓お澶ц闄嶇骇鍒版洿灏戠殑涓夎褰od\x0d\x0a\x20\x20\x20\x20//\x20ue5鐨凬anite鐨勬�濊矾鏄灏戝澶х殑鎶曞奖闈㈢Н鍥哄畾娓叉煋澶氬ぇ鐨勪笁瑙掗潰\x0d\x0a\x20\x20\x20\x20//\x20鎶曞奖闈㈢Н鍜屽瘑搴�,搴旇鏈変釜浠�涔堝叧绯�.鐢ㄦ姇褰遍潰绉喅瀹氫娇鐢ㄩ偅涓瘑搴︾殑mesh\x0d\x0a\x20\x20\x20\x20//\x20璺濈,鎶曞奖闈㈢Н,涓夎褰㈡暟閲�,瀵嗗害\x0d\x0a\x20\x20\x20\x20//\x20let\x20meshLodCount\x20=\x20meshLodData[ins.meshParentPtr];\x0d\x0a\x20\x20\x20\x20//\x20var\x20i\x20=\x20meshLodCount;\x0d\x0a\x20\x20\x20\x20//\x20while(i\x20!=\x200u){\x0d\x0a\x20\x20\x20\x20//\x20\x20\x20\x20\x20i--;\x0d\x0a\x20\x20\x20\x20//\x20}\x0d\x0a\x20\x20\x20\x20//\x20todo:娌℃湁璁$畻鍑哄悎閫傜殑lod,鏆傛椂鍏堢敤绗竴涓猏x0d\x0a\x20\x20\x20\x20let\x20meshLodPtr\x20=\x20ins.meshParentPtr\x20+\x202;\x0d\x0a\x0d\x0a\x20\x20\x20\x20//璁剧疆褰撳墠閫夋嫨mesh\x0d\x0a\x20\x20\x20\x20instanceData[instancePtr\x20+\x2025]\x20=\x20meshLodPtr;\x0d\x0a\x20\x20\x20\x20let\x20meshId\x20=\x20meshLodData[meshLodPtr];\x0d\x0a\x20\x20\x20\x20let\x20order_Index\x20=\x20atomicAdd(&atomicData.count,3);\x0d\x0a\x0d\x0a\x20\x20\x20\x20let\x20modelId\x20=\x20meshLodData[ins.meshParentPtr\x20+\x201];\x0d\x0a\x20\x20\x20\x20instancesAreaData[order_Index]\x20=\x20modelId;\x0d\x0a\x20\x20\x20\x20instancesAreaData[order_Index\x20+\x201]\x20=\x20meshId;\x0d\x0a\x20\x20\x20\x20instancesAreaData[order_Index\x20+\x202]\x20=\x20u32((4.00001\x20-\x20area)\x20*\x201e6f);;\x0d\x0a}\x0d\x0a\x0d\x0a\x0d\x0a\x0d\x0a\x0d\x0a','OnInitModel','projectionViewMatrix','keyup','scroll','PickWorldPosition','pathname','DrawCommand','meshLodVmBuffer','DirectData_Heartbeat','volumeRenderComputeBingGroup','dot','inverse','SelectEdgeMerge','ShowModel','inverse_viewMatrix','voxelRenderPipeline','__ser_isDev__','back','blur_alternately0_ComputeBingGroup','lastIndexOf','reject','ArrowDown','touchAction','dynamicSpaceIndirect_VmBuffer','SetInstanceMaterialByExtendedPropertiesId','spaceUnit','Unknown\x20rotation\x20order:\x20','store','subtract','createElement','copyTextureToTexture','lightBodiesBounceOne_VmBuffer','size','directData_Heartbeat','struct\x20SelfUniform\x20{\x0d\x0a\x20\x20\x20\x20useLogDepth:\x20f32,\x0d\x0a\x20\x20\x20\x20near:f32,\x0d\x0a\x20\x20\x20\x20oneOverLog2FarDepthFromNearPlusOne:f32,\x0d\x0a};\x0d\x0a\x0d\x0a@group(0)\x20@binding(0)\x20var\x20samplerLinear\x20:\x20sampler;\x0d\x0a@group(0)\x20@binding(1)\x20var\x20samplerNearest\x20:\x20sampler;\x0d\x0a@group(0)\x20@binding(2)\x20var\x20colorData\x20:\x20texture_2d<f32>;\x0d\x0a@group(0)\x20@binding(3)\x20var\x20positionData\x20:\x20texture_2d<f32>;\x0d\x0a@group(0)\x20@binding(4)\x20var<uniform>\x20selfUniform\x20:\x20SelfUniform;\x0d\x0a@group(0)\x20@binding(5)\x20var<uniform>\x20scene:\x20SceneInfoStruct;\x0d\x0a\x0d\x0astruct\x20VertexInput\x20{\x0d\x0a\x20\x20@builtin(instance_index)\x20instanceIndex\x20:\x20u32,\x0d\x0a\x20\x20@builtin(vertex_index)\x20vertexIndex\x20:\x20u32\x0d\x0a}\x0d\x0astruct\x20VertexOutput\x20{\x0d\x0a\x20\x20@builtin(position)\x20position:\x20vec4<f32>,\x0d\x0a\x20\x20@location(0)\x20fragUV\x20:\x20vec2f,\x0d\x0a};\x0d\x0a\x0d\x0aoverride\x20canvasSizeWidth:\x20f32;\x0d\x0aoverride\x20canvasSizeHeight:\x20f32;\x0d\x0a\x0d\x0a@vertex\x0d\x0afn\x20vert_main(input\x20:VertexInput)\x20->\x20VertexOutput\x20{\x0d\x0a\x0d\x0a\x20\x20\x20\x20const\x20pos\x20=\x20array<vec2<f32>,6>(\x0d\x0a\x20\x20\x20\x20vec2<f32>(-1.0,\x20\x201.0),\x0d\x0a\x20\x20\x20\x20vec2<f32>(-1.0,\x20\x20-1.0),\x0d\x0a\x20\x20\x20\x20vec2<f32>(1.0,\x20\x201.0),\x0d\x0a\x0d\x0a\x20\x20\x20\x20vec2<f32>(1.0,\x20\x201.0),\x0d\x0a\x20\x20\x20\x20vec2<f32>(-1.0,\x20\x20-1.0),\x0d\x0a\x20\x20\x20\x20vec2<f32>(1.0,\x20\x20-1.0),\x0d\x0a\x20\x20\x20\x20);\x0d\x0a\x0d\x0a\x20\x20\x20\x20const\x20uv\x20=\x20array<vec2<f32>,6>(\x0d\x0a\x20\x20\x20\x20vec2<f32>(0,\x20\x200),\x0d\x0a\x20\x20\x20\x20vec2<f32>(0,\x20\x201),\x0d\x0a\x20\x20\x20\x20vec2<f32>(1,\x20\x200),\x0d\x0a\x0d\x0a\x20\x20\x20\x20vec2<f32>(1,\x20\x200),\x0d\x0a\x20\x20\x20\x20vec2<f32>(0,\x20\x201),\x0d\x0a\x20\x20\x20\x20vec2<f32>(1,\x20\x201),\x0d\x0a\x20\x20\x20\x20);\x0d\x0a\x0d\x0a\x20\x20\x20\x20var\x20output\x20:\x20VertexOutput;\x0d\x0a\x20\x20\x20\x20output.position\x20=\x20vec4(pos[input.vertexIndex],\x200.0,\x201.0);\x0d\x0a\x20\x20\x20\x20output.fragUV\x20=\x20uv[input.vertexIndex];\x0d\x0a\x20\x20\x20\x20return\x20output;\x0d\x0a}\x0d\x0a\x0d\x0astruct\x20FragmentOutput\x20{\x0d\x0a\x20\x20@location(0)\x20albedo\x20:\x20vec4<f32>,\x0d\x0a\x20\x20@location(1)\x20depth:\x20vec4<f32>,\x0d\x0a}\x0d\x0a\x0d\x0afn\x20packDepth(\x20depth:f32\x20)\x20->\x20vec4f\x20{\x0d\x0a\x20\x20\x20\x20var\x20enc\x20=\x20vec4(1.0,\x20255.0,\x2065025.0,\x2016581375.0)\x20*\x20depth;\x0d\x0a\x20\x20\x20\x20enc\x20=\x20fract(enc);\x0d\x0a\x20\x20\x20\x20enc\x20-=\x20enc.yzww\x20*\x20vec4(1.0\x20/\x20255.0,\x201.0\x20/\x20255.0,\x201.0\x20/\x20255.0,\x200.0);\x0d\x0a\x20\x20\x20\x20return\x20enc;\x0d\x0a}\x0d\x0a\x0d\x0afn\x20unpackDepth(\x20v:vec4f\x20)\x20->\x20f32\x20{\x0d\x0a\x20\x20\x20\x20return\x20dot(\x20v,\x20vec4f(1.0,\x201/255.0,\x201/65025.0,\x201/16581375.0));\x0d\x0a}\x0d\x0a\x0d\x0afn\x20packDepth2(\x20v:f32\x20)\x20->\x20vec4f\x20{\x0d\x0a\x20\x20let\x20u_v\x20=\x20bitcast<u32>(v);\x0d\x0a\x20\x20return\x20vec4f(f32((u_v\x20>>\x2024u)\x20&\x20255u),f32((u_v\x20>>\x2016u)\x20&\x20255u),f32((u_v\x20>>\x208u)\x20&\x20255u),f32((u_v)\x20&\x20255u))\x20/\x20255.0;\x0d\x0a}\x0d\x0a//float\x20unpackDepth2(vec4\x20packedDepth)\x0d\x0a//{\x0d\x0a//\x20\x20\x20\x20vec4\x20uu_rgba\x20=\x20round(packedDepth\x20*\x20255.0);\x0d\x0a//\x20\x20\x20\x20uint\x20uu_rgba_uu\x20=\x20(uint(uu_rgba.r)\x20<<\x2024u)\x20|\x20(uint(uu_rgba.g)\x20<<\x2016u)\x20|\x20(uint(uu_rgba.b)\x20<<\x208u)\x20|\x20(uint(uu_rgba.a));\x0d\x0a//\x20\x20\x20\x20return\x20uintBitsToFloat(uu_rgba_uu);\x0d\x0a//}\x0d\x0a\x0d\x0a@fragment\x0d\x0afn\x20frag_main(input\x20:\x20VertexOutput)\x20->\x20FragmentOutput\x20{\x0d\x0a\x0d\x0a\x20\x20\x20\x20var\x20output\x20:\x20FragmentOutput;\x0d\x0a\x20\x20\x20\x20let\x20albedo\x20=\x20textureSample(colorData,\x20samplerNearest,\x20input.fragUV);\x0d\x0a\x20\x20\x20\x20output.albedo\x20=\x20vec4f(linearTosRGB(albedo.rgb),albedo.a);\x0d\x0a\x0d\x0a\x20\x20\x20\x20let\x20posOrigin\x20=\x20textureSample(positionData,\x20samplerNearest,\x20input.fragUV);\x0d\x0a\x20\x20\x20\x20let\x20depth\x20=\x20scene.cesium_projectionViewMatrix\x20*\x20vec4f(posOrigin.xyz,1);\x0d\x0a\x20\x20\x20\x20if\x20(selfUniform.useLogDepth\x20==\x201.0)\x20{\x0d\x0a\x20\x20\x20\x20\x20\x20\x20\x20let\x20v_depthFromNearPlusOne\x20=\x20(depth.w\x20-\x20selfUniform.near)\x20+\x201.0;\x0d\x0a\x20\x20\x20\x20\x20\x20\x20\x20let\x20logDepth\x20=\x20log2(v_depthFromNearPlusOne)\x20*\x20selfUniform.oneOverLog2FarDepthFromNearPlusOne;\x0d\x0a//\x20\x20\x20\x20\x20\x20\x20\x20output.depth\x20=\x20packDepth(logDepth);\x0d\x0a\x20\x20\x20\x20\x20\x20\x20\x20output.depth\x20=\x20packDepth2(logDepth);\x0d\x0a\x20\x20\x20\x20}\x20else\x20{\x0d\x0a\x20\x20\x20\x20\x20\x20\x20\x20let\x20z_ndc\x20=\x20depth.z\x20/\x20depth.w;\x0d\x0a\x20\x20\x20\x20\x20\x20\x20\x20let\x20depth_Z\x20=\x20(z_ndc\x20+\x201.0)\x20/\x202.0;\x0d\x0a//\x20\x20\x20\x20\x20\x20\x20\x20output.depth\x20=\x20packDepth(depth_Z);\x0d\x0a\x20\x20\x20\x20\x20\x20\x20\x20output.depth\x20=\x20packDepth2(depth_Z);\x0d\x0a\x20\x20\x20\x20}\x0d\x0a\x0d\x0a\x20\x20\x20\x20return\x20output;\x0d\x0a\x0d\x0a}\x0d\x0a\x0d\x0a//\x20linear\x20<->\x20sRGB\x20conversions\x0d\x0afn\x20linearTosRGB(linea\x20:\x20vec3f)\x20->\x20vec3f\x20{\x0d\x0a\x20\x20\x20\x20if\x20(all(linea\x20<=\x20vec3f(0.0031308,\x200.0031308,\x200.0031308)))\x20{\x0d\x0a\x20\x20\x20\x20\x20\x20\x20\x20return\x20linea\x20*\x2012.92;\x0d\x0a\x20\x20\x20\x20}\x0d\x0a\x20\x20\x20\x20return\x20(pow(abs(linea),\x20vec3f(1.0/2.4,\x201.0/2.4,\x201.0/2.4))\x20*\x201.055)\x20-\x20vec3f(0.055,\x200.055,\x200.055);\x0d\x0a}\x0d\x0a\x0d\x0afn\x20sRGBToLinear(srgb\x20:\x20vec3f)\x20->\x20vec3f\x20{\x0d\x0a\x20\x20\x20\x20if\x20(all(srgb\x20<=\x20vec3f(0.04045,\x200.04045,\x200.04045)))\x20{\x0d\x0a\x20\x20\x20\x20\x20\x20\x20\x20return\x20srgb\x20/\x20vec3f(12.92,\x2012.92,\x2012.92);\x0d\x0a\x20\x20\x20\x20}\x0d\x0a\x20\x20\x20\x20return\x20pow((srgb\x20+\x20vec3f(0.055,\x200.055,\x200.055))\x20/\x20vec3f(1.055,\x201.055,\x201.055),\x20vec3f(2.4,\x202.4,\x202.4));\x0d\x0a}','limits','SetInstanceTransformByExtendedPropertiesId','floor','AddServer','UpdateMeshOffsetIntend','Sampler','max','volumeRenderComputePipeline','GetIdsByInstancePtr','OnAddModelServer','bc7-rgba-unorm','GlobalIlluminationIntend','ssrReflections_Uniform_VmBuffer','appendChild','message','OPAQUE','dispatchWorkgroups','FRAGMENT','identity','timestampQueryResultBuffer','vm_target_instance','read-only-storage','blur_iterations','meshRender_prev_SSP_Texture','meshRender_packData_Texture','read-only','CreateMaterial','submit','samplerLinear','rgba8unorm','Space','fromCache','inverse_projectionMatrix','renderDebugTest3Pipeline','kj2','defineProperty','\x0a\x20out\x20vec2\x20v_textureCoordinates;\x0a\x20const\x20vec2\x20pos[6]\x20=\x20vec2[6](\x0a\x20\x20\x20\x20vec2(-1.0,\x20\x201.0),\x0a\x20\x20\x20\x20vec2(-1.0,\x20\x20-1.0),\x0a\x20\x20\x20\x20vec2(1.0,\x201.0),\x0a\x20\x20\x20\x20\x0a\x20\x20\x20\x20vec2(1.0,\x201.0),\x0a\x20\x20\x20\x20vec2(-1.0,\x20-1.0),\x0a\x20\x20\x20\x20vec2(1.0,-1.0)\x0a\x20);\x20\x0a\x20//\x20纭紪鐮佺殑\x20UV\x20鍧愭爣鏁扮粍锛堝叏灞�甯搁噺锛塡x0a\x20const\x20vec2\x20uv[6]\x20=\x20vec2[6](\x0a\x20\x20\x20\x20\x20vec2(0.0,\x200.0),\x0a\x20\x20\x20\x20vec2(0.0,\x201.0),\x0a\x20\x20\x20\x20vec2(1.0,\x200.0),\x0a\x20\x20\x20\x20\x0a\x20\x20\x20\x20vec2(1.0,\x200.0),\x0a\x20\x20\x20\x20vec2(0.0,\x201.0),\x0a\x20\x20\x20\x20vec2(1.0,\x201.0)\x0a\x20);\x0a\x0avoid\x20main()\x20{\x0a\x20v_textureCoordinates\x20=\x20uv[gl_VertexID];\x20\x0a\x20gl_Position\x20=\x20vec4(pos[gl_VertexID],\x200,\x201.0);\x0a}\x0a','multiply','\x20\x20\x20\x20LightBodiesBounceOne','copyVmBuffer','createBindGroupLayout','depth','ControlLeft','speedDown','copyList','lightBodiesAssociate_Uniform_DataView','ksh','5982615eHniyc','createTexture','context4','search','renderToCanvas_Uniform_VmBuffer','renderToCanvasRenderPassDescriptor','WebGPUInitEd','SetInstanceStatusByExtendedPropertiesId','sqrt','struct\x20SelfUniform\x20{\x0d\x0a\x20\x20\x20\x20overlayColor:\x20vec4<f32>,\x0d\x0a\x20\x20\x20\x20outlineColor:\x20vec4<f32>,\x0d\x0a};\x0d\x0a\x0d\x0a@group(0)\x20@binding(0)\x20var<uniform>\x20scene:\x20SceneInfoStruct;\x0d\x0a@group(0)\x20@binding(1)\x20var<storage,read>\x20modelData:\x20array<f32>;\x0d\x0a@group(0)\x20@binding(2)\x20var<storage,read>\x20instanceData:\x20array<f32>;\x0d\x0a@group(0)\x20@binding(3)\x20var<storage,read>\x20meshData:\x20array<f32>;\x0d\x0a@group(0)\x20@binding(4)\x20var<storage,read>\x20meshLodData:\x20array<f32>;\x0d\x0a@group(0)\x20@binding(5)\x20var<uniform>\x20selfUniform\x20:\x20SelfUniform;\x0d\x0a\x0d\x0astruct\x20Model\x20{\x0d\x0a\x20\x20\x20\x20id:\x20u32,\x0d\x0a\x20\x20\x20\x20transform:\x20mat4x4<f32>,\x0d\x0a\x20\x20\x20\x20status:\x20u32,\x0d\x0a};\x0d\x0a\x0d\x0afn\x20getModel(offset:u32)\x20->\x20Model\x20{\x0d\x0a\x20\x20\x20\x20var\x20model\x20:\x20Model;\x0d\x0a\x20\x20\x20\x20model.id\x20=\x20bitcast<u32>(modelData[offset\x20+\x2016]);\x0d\x0a\x0d\x0a\x20\x20\x20\x20model.transform\x20=\x20mat4x4<f32>(\x0d\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20modelData[offset],modelData[offset\x20+\x201],modelData[offset\x20+\x202],modelData[offset\x20+\x203],\x0d\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20modelData[offset\x20+\x204],modelData[offset\x20+\x205],modelData[offset\x20+\x206],modelData[offset\x20+\x207],\x0d\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20modelData[offset\x20+\x208],modelData[offset\x20+\x209],modelData[offset\x20+\x2010],modelData[offset\x20+\x2011],\x0d\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20modelData[offset\x20+\x2012],modelData[offset\x20+\x2013],modelData[offset\x20+\x2014],modelData[offset\x20+\x2015]);\x0d\x0a\x0d\x0a\x20\x20\x20\x20model.status\x20=\x20bitcast<u32>(modelData[offset\x20+\x2017]);\x0d\x0a\x0d\x0a\x20\x20\x20\x20return\x20model;\x0d\x0a}\x0d\x0a\x0d\x0a\x0d\x0astruct\x20Instance\x20{\x0d\x0a\x20\x20\x20\x20id:\x20u32,\x0d\x0a\x20\x20\x20\x20transform:\x20mat4x4<f32>,\x0d\x0a\x20\x20\x20\x20modelPtr:\x20u32,\x0d\x0a\x20\x20\x20\x20meshLodPtr:\x20u32,\x0d\x0a\x20\x20\x20\x20status:\x20u32,\x0d\x0a\x20\x20\x20\x20materialPtr:\x20u32,\x0d\x0a\x20\x20\x20\x20//\x20鍖呭洿鐩抃x0d\x0a\x20\x20\x20\x20boxMin:\x20vec3<f32>,\x0d\x0a\x20\x20\x20\x20boxMax:\x20vec3<f32>,\x0d\x0a};\x0d\x0a\x0d\x0a\x0d\x0afn\x20getInstance(offset:u32)\x20->\x20Instance\x20{\x0d\x0a\x20\x20\x20\x20var\x20ins\x20:\x20Instance;\x0d\x0a\x0d\x0a\x20\x20\x20\x20ins.modelPtr\x20=\x20bitcast<u32>(instanceData[offset]);\x0d\x0a\x20\x20\x20\x20ins.id\x20=\x20bitcast<u32>(instanceData[offset\x20+\x201]);\x0d\x0a\x0d\x0a\x20\x20\x20\x20ins.transform\x20=\x20mat4x4<f32>(\x0d\x0a\x20\x20\x20\x20instanceData[offset\x20+\x203],instanceData[offset\x20+\x204],instanceData[offset\x20+\x205],0,\x0d\x0a\x20\x20\x20\x20instanceData[offset\x20+\x206],instanceData[offset\x20+\x207],instanceData[offset\x20+\x208],0,\x0d\x0a\x20\x20\x20\x20instanceData[offset\x20+\x209],instanceData[offset\x20+\x2010],instanceData[offset\x20+\x2011],0,\x0d\x0a\x20\x20\x20\x20instanceData[offset\x20+\x2012],instanceData[offset\x20+\x2013],instanceData[offset\x20+\x2014],1);\x0d\x0a\x0d\x0a\x20\x20\x20\x20ins.boxMin\x20=\x20vec3<f32>(bitcast<f32>(instanceData[offset\x20+\x2015]),bitcast<f32>(instanceData[offset\x20+\x2016]),bitcast<f32>(instanceData[offset\x20+\x2017]));\x0d\x0a\x20\x20\x20\x20ins.boxMax\x20=\x20vec3<f32>(bitcast<f32>(instanceData[offset\x20+\x2018]),bitcast<f32>(instanceData[offset\x20+\x2019]),bitcast<f32>(instanceData[offset\x20+\x2020]));\x0d\x0a\x0d\x0a\x20\x20\x20\x20ins.meshLodPtr\x20=\x20bitcast<u32>(instanceData[offset\x20+\x2025]);\x0d\x0a\x20\x20\x20\x20ins.status\x20=\x20bitcast<u32>(instanceData[offset\x20+\x2022]);\x0d\x0a\x20\x20\x20\x20ins.materialPtr\x20=\x20bitcast<u32>(instanceData[offset\x20+\x2023]);\x0d\x0a\x0d\x0a\x20\x20\x20\x20return\x20ins;\x0d\x0a}\x0d\x0a\x0d\x0astruct\x20MeshLodInfo\x20{\x0d\x0a\x20\x20\x20\x20meshId:\x20u32,\x0d\x0a\x20\x20\x20\x20density:\x20f32,\x0d\x0a\x20\x20\x20\x20materialPtr:\x20u32,\x0d\x0a\x20\x20\x20\x20verticesCount:\x20u32,\x0d\x0a\x20\x20\x20\x20meshPtr:\x20u32,\x0d\x0a};\x0d\x0a\x0d\x0afn\x20getMeshLodInfo(meshLodPtr:u32)\x20->\x20MeshLodInfo\x20{\x0d\x0a\x0d\x0a\x20\x20\x20\x20var\x20meshLodInfo\x20:\x20MeshLodInfo;\x0d\x0a\x0d\x0a//\x20\x20\x20\x20meshLodInfo.meshId\x20=\x20bitcast<u32>(meshLodData[meshLodPtr]);\x0d\x0a//\x20\x20\x20\x20meshLodInfo.density\x20=\x20meshLodData[meshLodPtr\x20+\x201];\x0d\x0a\x20\x20\x20\x20meshLodInfo.materialPtr\x20=\x20bitcast<u32>(meshLodData[meshLodPtr\x20+\x202]);\x0d\x0a//\x20\x20\x20\x20meshLodInfo.verticesCount\x20=\x20bitcast<u32>(meshLodData[meshLodPtr\x20+\x203]);\x0d\x0a\x20\x20\x20\x20meshLodInfo.meshPtr\x20=\x20bitcast<u32>(meshLodData[meshLodPtr\x20+\x204]);\x0d\x0a\x0d\x0a\x20\x20\x20\x20return\x20meshLodInfo;\x0d\x0a\x0d\x0a}\x0d\x0a\x0d\x0astruct\x20Position\x20{\x0d\x0a\x20\x20\x20\x20position:\x20vec3<f32>,\x0d\x0a\x20\x20\x20\x20normal:\x20vec3<f32>,\x0d\x0a\x20\x20\x20\x20uv:\x20vec2<f32>,\x0d\x0a};\x0d\x0a\x0d\x0afn\x20getPosition(offset:u32,vertexIndex:u32)\x20->\x20Position\x20{\x0d\x0a\x20\x20\x20\x20var\x20pos\x20:\x20Position;\x0d\x0a\x20\x20\x20\x20var\x20vertexIndexTemp\x20=\x20vertexIndex\x20*\x203;\x0d\x0a\x20\x20\x20\x20var\x20positionOffset\x20=\x20bitcast<u32>(meshData[offset\x20+\x20vertexIndexTemp]);\x0d\x0a\x20\x20\x20\x20var\x20normalOffset\x20=\x20bitcast<u32>(meshData[offset\x20+\x20vertexIndexTemp\x20+\x201]);\x0d\x0a\x20\x20\x20\x20var\x20uvOffset\x20=\x20bitcast<u32>(meshData[offset\x20+\x20vertexIndexTemp\x20+\x202]);\x0d\x0a\x0d\x0a\x20\x20\x20\x20pos.position\x20=\x20vec3(meshData[offset\x20+\x20positionOffset],meshData[offset\x20+\x20positionOffset\x20+\x201],meshData[offset\x20+\x20positionOffset\x20+\x202]);\x0d\x0a\x20\x20\x20\x20pos.normal\x20=\x20vec3(meshData[offset\x20+\x20normalOffset],meshData[offset\x20+\x20normalOffset\x20+\x201],meshData[offset\x20+\x20normalOffset\x20+\x202]);\x0d\x0a\x20\x20\x20\x20pos.uv\x20=\x20vec2(meshData[offset\x20+\x20uvOffset],meshData[offset\x20+\x20uvOffset\x20+\x201]);\x0d\x0a\x0d\x0a\x20\x20\x20\x20return\x20pos;\x0d\x0a}\x0d\x0a\x0d\x0a//\x20璁$畻鍖呭洿鐩掔殑8涓《鐐筡x0d\x0afn\x20computeAABBVertices(boxMin:\x20vec3<f32>,boxMax:\x20vec3<f32>)\x20->\x20array<vec4f,\x208>\x20{\x0d\x0a\x20\x20return\x20array<vec4f,8>(\x0d\x0a\x20\x20\x20\x20vec4f(boxMin[0],\x20boxMin[1],\x20boxMin[2],\x201.0),\x0d\x0a\x20\x20\x20\x20vec4f(boxMax[0],\x20boxMin[1],\x20boxMin[2],\x201.0),\x0d\x0a\x20\x20\x20\x20vec4f(boxMax[0],\x20boxMax[1],\x20boxMin[2],\x201.0),\x0d\x0a\x20\x20\x20\x20vec4f(boxMin[0],\x20boxMax[1],\x20boxMin[2],\x201.0),\x0d\x0a\x20\x20\x20\x20vec4f(boxMin[0],\x20boxMin[1],\x20boxMax[2],\x201.0),\x0d\x0a\x20\x20\x20\x20vec4f(boxMax[0],\x20boxMin[1],\x20boxMax[2],\x201.0),\x0d\x0a\x20\x20\x20\x20vec4f(boxMax[0],\x20boxMax[1],\x20boxMax[2],\x201.0),\x0d\x0a\x20\x20\x20\x20vec4f(boxMin[0],\x20boxMax[1],\x20boxMax[2],\x201.0)\x0d\x0a\x20\x20);\x0d\x0a}\x0d\x0a\x0d\x0astruct\x20VertexInput\x20{\x0d\x0a\x20\x20@builtin(vertex_index)\x20vertexIndex\x20:\x20u32,\x0d\x0a\x20\x20@builtin(instance_index)\x20instanceIndex\x20:\x20u32\x0d\x0a}\x0d\x0astruct\x20VertexOutput\x20{\x0d\x0a\x20\x20@builtin(position)\x20position:\x20vec4<f32>,\x0d\x0a};\x0d\x0a\x0d\x0a@vertex\x0d\x0afn\x20vert_main(input\x20:VertexInput)\x20->\x20VertexOutput\x20{\x0d\x0a\x0d\x0a\x20\x20\x20\x20//\x20instancePtr,vertexIndex\x0d\x0a\x20\x20\x20\x20let\x20ins\x20=\x20getInstance((input.vertexIndex\x20%\x208)\x20*\x2032);\x0d\x0a\x20\x20\x20\x20let\x20model\x20=\x20getModel(ins.modelPtr);\x0d\x0a\x0d\x0a\x20\x20\x20\x20var\x20output:\x20VertexOutput;\x0d\x0a\x0d\x0a\x20\x20\x20\x20//\x20璁$畻鍖呭洿鐩掔殑8涓《鐐筡x0d\x0a\x20\x20\x20\x20let\x20vertices\x20=\x20computeAABBVertices(ins.boxMin,ins.boxMax);\x0d\x0a\x0d\x0a\x20\x20\x20\x20output.position\x20=\x20scene.projectionViewMatrix\x20*\x20model.transform\x20*\x20vertices[input.vertexIndex\x20%\x208];\x0d\x0a\x20\x20\x20\x20return\x20output;\x0d\x0a}\x0d\x0a\x0d\x0astruct\x20FragmentOutput\x20{\x0d\x0a\x20\x20@location(0)\x20color\x20:\x20vec4<f32>,\x0d\x0a}\x0d\x0a\x0d\x0a@fragment\x0d\x0afn\x20frag_main(input\x20:\x20VertexOutput)\x20->\x20FragmentOutput\x20{\x0d\x0a\x20\x20\x20\x20var\x20output\x20:\x20FragmentOutput;\x0d\x0a\x20\x20\x20\x20output.color\x20=\x20vec4f(1,1,1,1);\x0d\x0a\x20\x20\x20\x20return\x20output;\x0d\x0a}\x0d\x0a','fromValues','instanceVmBuffer','streamRender_Uniform_DataView','MakeCommandComputePipeline','PickPosition','zoomSpeed','normal_buf','cesiumWidget','VertexArray','derivedCommands','beginRenderPass','lightBodiesBounceOneComputePipeline','cameraId','getContext','downLeftY','modelVmBuffer','voxelRender_Uniform_DataView','728560aLlBLZ','MAP_READ','voxelRenderBindGroup','_frustumPlanes','FinalDisplay','\x0d\x0a@group(0)\x20@binding(0)\x20var<uniform>\x20scene:\x20SceneInfoStruct;\x0d\x0a@group(0)\x20@binding(2)\x20var<storage,read_write>\x20instanceData:\x20array<u32>;\x0d\x0a@group(0)\x20@binding(3)\x20var<storage,read_write>\x20meshData:\x20array<u32>;\x0d\x0a@group(0)\x20@binding(4)\x20var<storage,read_write>\x20modelData:\x20array<u32>;\x0d\x0a@group(0)\x20@binding(5)\x20var<storage,read_write>\x20indirect_render:\x20array<atomic<u32>>;\x0d\x0a@group(0)\x20@binding(6)\x20var<storage,read_write>\x20renderIndex_opaque:\x20array<u32>;\x0d\x0a@group(0)\x20@binding(8)\x20var<storage,read_write>\x20renderMaterial:\x20array<u32>;\x0d\x0a@group(0)\x20@binding(9)\x20var<storage,read_write>\x20meshLodData:\x20array<u32>;\x0d\x0a\x0d\x0astruct\x20InputData\x20{\x0d\x0a\x20\x20\x20@builtin(local_invocation_id)\x20local_id:\x20vec3<u32>,\x0d\x0a\x20\x20\x20@builtin(local_invocation_index)\x20local_index:\x20u32,\x0d\x0a\x20\x20\x20@builtin(global_invocation_id)\x20global_id:\x20vec3<u32>,\x0d\x0a}\x0d\x0a\x0d\x0a\x0d\x0aoverride\x20perWorkgroup\x20:\x20u32;\x0d\x0aoverride\x20maxRenderInstance\x20:\x20u32;\x0d\x0aoverride\x20multiDrawIndirect\x20:\x20u32;\x0d\x0aoverride\x20instanceItemVmSize\x20:\x20u32;\x0d\x0a\x0d\x0a@compute\x20@workgroup_size(perWorkgroup)\x0d\x0afn\x20main(input:\x20InputData)\x20{\x0d\x0a\x20\x20\x20\x20//\x20瀹炰緥鏁版嵁涓嶄粠0寮�濮�,鍥犱负浼氬拰娓叉煋缁撴灉鐨勯粯璁ゅ��0鍐茬獊\x0d\x0a\x20\x20\x20\x20if(input.global_id.x\x20==\x200){\x0d\x0a\x20\x20\x20\x20\x20\x20\x20\x20return\x20;\x0d\x0a\x20\x20\x20\x20}\x0d\x0a\x0d\x0a\x20\x20\x20\x20//鑾峰彇瀹炰緥鎸囬拡\x0d\x0a\x20\x20\x20\x20let\x20instancePtr\x20=\x20input.global_id.x\x20*\x20instanceItemVmSize;\x0d\x0a\x0d\x0a\x20\x20\x20\x20if(instanceData[instancePtr\x20+\x201]\x20==\x200){\x0d\x0a\x20\x20\x20\x20\x20\x20\x20\x20return\x20;\x0d\x0a\x20\x20\x20\x20}\x0d\x0a\x0d\x0a\x20\x20\x20\x20//\x20鍒ゆ柇瀹炰緥鐘舵�乗x0d\x0a\x20\x20\x20\x20if(instanceData[instancePtr\x20+\x2022]\x20==\x200){\x0d\x0a\x20\x20\x20\x20\x20\x20\x20\x20return\x20;\x0d\x0a\x20\x20\x20\x20}\x0d\x0a\x0d\x0a\x20\x20\x20\x20//\x20鍒ゆ柇妯″瀷鐘舵�乗x0d\x0a\x20\x20\x20\x20if(modelData[instanceData[instancePtr]\x20+\x2017]\x20==\x200){\x0d\x0a\x20\x20\x20\x20\x20\x20\x20\x20return\x20;\x0d\x0a\x20\x20\x20\x20}\x0d\x0a\x0d\x0a\x20\x20\x20\x20//\x20閬尅鍓旈櫎\x20:\x2026绛変簬鐩告満缂栧彿浠h〃鍙備笌娓叉煋,26涓嶇瓑浜�27浠h〃娓叉煋涓嶅彲瑙乗x0d\x0a\x20\x20\x20\x20if(scene.cameraSerialNumber\x20==\x20instanceData[instancePtr\x20+\x2026]\x20&&\x20instanceData[instancePtr\x20+\x2026]\x20!=\x20instanceData[instancePtr\x20+\x2027]\x0d\x0a\x20\x20\x20\x20//\x20骞朵笖鐘舵�佹槸姝e父鏄剧ず,鑰岄潪閫変腑绛夊叾浠栫姸鎬乗x0d\x0a\x20\x20\x20\x20&&\x20instanceData[instancePtr\x20+\x2022]\x20==\x201){\x0d\x0a\x20\x20\x20\x20\x20\x20\x20\x20return\x20;\x0d\x0a\x20\x20\x20\x20}\x0d\x0a\x0d\x0a\x20\x20\x20\x20let\x20tree_vmOffset\x20=\x20instanceData[instancePtr\x20+\x202];\x0d\x0a\x20\x20\x20\x20let\x20tree_visible\x20=\x20modelData[tree_vmOffset];\x0d\x0a\x20\x20\x20\x20if(tree_visible\x20==\x200){\x0d\x0a\x20\x20\x20\x20\x20\x20\x20\x20return\x20;\x0d\x0a\x20\x20\x20\x20}\x0d\x0a\x0d\x0a\x0d\x0a\x20\x20\x20\x20let\x20meshLodPtr\x20=\x20instanceData[instancePtr\x20+\x2025];\x0d\x0a\x20\x20\x20\x20let\x20mesh_VmOffset\x20=\x20meshLodData[meshLodPtr\x20+\x204];\x0d\x0a\x0d\x0a\x20\x20\x20\x20if(mesh_VmOffset\x20==\x200u){\x0d\x0a\x20\x20\x20\x20\x20\x20\x20\x20return\x20;\x0d\x0a\x20\x20\x20\x20}\x0d\x0a\x0d\x0a\x20\x20\x20\x20var\x20materialPtr\x20=\x20instanceData[instancePtr\x20+\x2023];\x0d\x0a\x20\x20\x20\x20if(materialPtr\x20==\x200){\x0d\x0a\x20\x20\x20\x20\x20\x20\x20\x20materialPtr\x20=\x20meshLodData[meshLodPtr\x20+\x202];\x0d\x0a\x20\x20\x20\x20}\x0d\x0a\x0d\x0a\x20\x20\x20\x20if(atomicLoad(&indirect_render[3])\x20>\x20maxRenderInstance){\x0d\x0a\x20\x20\x20\x20\x20\x20\x20\x20return\x20;\x0d\x0a\x20\x20\x20\x20}\x0d\x0a\x0d\x0a//\x20\x20\x20\x20//褰撳墠鐩告満浣嶇疆\x0d\x0a//\x20\x20\x20\x20let\x20cameraPosition\x20=\x20vec3f(scene.cameraPositionX,scene.cameraPositionY,scene.cameraPositionZ);\x0d\x0a//\x0d\x0a//\x20\x20\x20\x20let\x20ins\x20=\x20getInstance(instancePtr);\x0d\x0a//\x20\x20\x20\x20let\x20model\x20=\x20getModel(ins.modelPtr);\x0d\x0a//\x0d\x0a//\x20\x20\x20\x20ins.boxMin\x20=\x20vec3<f32>(bitcast<f32>(instanceData[offset\x20+\x2015]),bitcast<f32>(instanceData[offset\x20+\x2016]),bitcast<f32>(instanceData[offset\x20+\x2017]));\x0d\x0a//\x20\x20\x20\x20ins.boxMax\x20=\x20vec3<f32>(bitcast<f32>(instanceData[offset\x20+\x2018]),bitcast<f32>(instanceData[offset\x20+\x2019]),bitcast<f32>(instanceData[offset\x20+\x2020]));\x0d\x0a//\x0d\x0a//\x20\x20\x20\x20let\x20wordPosition\x20=\x20model.transform\x20*\x20ins.transform\x20*\x20vec4(pos.position,1);\x0d\x0a\x0d\x0a\x20\x20\x20\x20let\x20material_Count\x20=\x20atomicAdd(&indirect_render[3]\x20,\x202u);\x0d\x0a\x0d\x0a\x20\x20\x20\x20renderMaterial[material_Count\x20+\x202]\x20=\x20materialPtr;\x0d\x0a\x20\x20\x20\x20//\x20鍙鍍忕礌鏁伴噺\x0d\x0a\x20\x20\x20\x20renderMaterial[material_Count\x20+\x203]\x20=\x20instanceData[instancePtr\x20+\x2028];\x0d\x0a\x0d\x0a\x20\x20\x20\x20//\x20鍐欏叆鏂扮殑娓叉煋鐩告満缂栧彿\x0d\x0a\x20\x20\x20\x20instanceData[instancePtr\x20+\x2026]\x20=\x20scene.cameraSerialNumber;\x0d\x0a\x0d\x0a\x20\x20\x20\x20//\x20閲嶇疆鍙鍍忕礌鏁伴噺\x0d\x0a\x20\x20\x20\x20instanceData[instancePtr\x20+\x2028]\x20=\x200;\x0d\x0a\x0d\x0a\x20\x20\x20\x20if(multiDrawIndirect\x20==\x201u){\x0d\x0a\x20\x20\x20\x20\x20\x20\x20\x20let\x20opaque_Count\x20=\x20atomicAdd(&indirect_render[0]\x20,\x204u);\x0d\x0a\x20\x20\x20\x20\x20\x20\x20\x20renderIndex_opaque[opaque_Count]\x20=\x20meshLodData[meshLodPtr\x20+\x203];\x0d\x0a\x20\x20\x20\x20\x20\x20\x20\x20renderIndex_opaque[opaque_Count\x20+\x201]\x20=\x201;\x0d\x0a\x20\x20\x20\x20\x20\x20\x20\x20renderIndex_opaque[opaque_Count\x20+\x202]\x20=\x200;\x0d\x0a\x20\x20\x20\x20\x20\x20\x20\x20renderIndex_opaque[opaque_Count\x20+\x203]\x20=\x20instancePtr;\x0d\x0a\x20\x20\x20\x20}else{\x0d\x0a\x20\x20\x20\x20\x20\x20\x20\x20let\x20opaque_Count\x20=\x20atomicAdd(&indirect_render[0]\x20,\x202u);\x0d\x0a\x20\x20\x20\x20\x20\x20\x20\x20renderIndex_opaque[opaque_Count]\x20=\x20meshLodData[meshLodPtr\x20+\x203];\x0d\x0a\x20\x20\x20\x20\x20\x20\x20\x20renderIndex_opaque[opaque_Count\x20+\x201]\x20=\x20instancePtr;\x0d\x0a\x20\x20\x20\x20}\x0d\x0a\x0d\x0a}\x0d\x0a\x0d\x0a\x0d\x0a\x0d\x0a\x0d\x0a','renderIndex_VmBuffer','setBindGroup','createBuffer','dynamicSpaceComputeBingGroup','timestampQueryResolveBuffer','rightRoll','LightBodiesRemoveDuplicates','readMesh_atomic_VmBuffer','getCurrentTexture','ssrReflections_Uniform_DataViewU32','object','InstancesCount','maxPixel','lightBodiesSpace_VmBuffer','renderEngine','view','queue','mapAsync','inverse_projectionViewMatrix','renderShadowDepthView1','scale','toStringTag','queryMap','updateMeshOffset_VmBuffer','slice'];a0_0x5202=function(){return _0x504974;};return a0_0x5202();}var a0_0x223d35=a0_0x40ed;(function(_0x5519c5,_0x47dd44){var _0x5144bc=a0_0x40ed,_0x1570e4=_0x5519c5();while(!![]){try{var _0x3cfbc3=parseInt(_0x5144bc(0x434))/0x1*(parseInt(_0x5144bc(0x3ac))/0x2)+parseInt(_0x5144bc(0x2ef))/0x3+-parseInt(_0x5144bc(0x3aa))/0x4+-parseInt(_0x5144bc(0x2aa))/0x5+-parseInt(_0x5144bc(0x226))/0x6+parseInt(_0x5144bc(0x1cf))/0x7*(parseInt(_0x5144bc(0x1b9))/0x8)+-parseInt(_0x5144bc(0x28f))/0x9;if(_0x3cfbc3===_0x47dd44)break;else _0x1570e4['push'](_0x1570e4['shift']());}catch(_0x50433c){_0x1570e4['push'](_0x1570e4['shift']());}}}(a0_0x5202,0x94fa4));var a0_0x1cadfe=self||this,a0_0x52194f=()=>{var _0xe79d2f=a0_0x40ed;{var _0x240d83={'m':{},'d':(_0x492e96,_0x2bbaed)=>{for(var _0x14e6e6 in _0x2bbaed)_0x240d83['o'](_0x2bbaed,_0x14e6e6)&&!_0x240d83['o'](_0x492e96,_0x14e6e6)&&Object['defineProperty'](_0x492e96,_0x14e6e6,{'enumerable':!0x0,'get':_0x2bbaed[_0x14e6e6]});},'u':_0x3f4a81=>_0xe79d2f(0x412),'o':(_0x269572,_0x56414d)=>Object[_0xe79d2f(0x334)]['hasOwnProperty'][_0xe79d2f(0x2d1)](_0x269572,_0x56414d),'r':_0x5ea260=>{var _0x2a0c34=_0xe79d2f;'undefined'!=typeof Symbol&&Symbol[_0x2a0c34(0x2c5)]&&Object[_0x2a0c34(0x283)](_0x5ea260,Symbol[_0x2a0c34(0x2c5)],{'value':_0x2a0c34(0x1c4)}),Object[_0x2a0c34(0x283)](_0x5ea260,'__esModule',{'value':!0x0});},'p':'/'},_0x5589b1=(_0x240d83['b']=document['baseURI']||self['location'][_0xe79d2f(0x402)],{});_0x240d83['r'](_0x5589b1),_0x240d83['d'](_0x5589b1,{'serMain':()=>_0x48fa1b});class _0x2e27fb{constructor(_0x4e640c){var _0x5d839f=_0xe79d2f;let _0x42a804=globalThis['baseUrl'];if(!_0x42a804)try{throw new Error();}catch(_0x80797c){var _0x9cac27=_0x80797c['stack'][_0x5d839f(0x22d)](/(https?:\/\/[^)]+\.js)/);_0x9cac27&&(_0x42a804=_0x9cac27[0x0]);}var _0x9cac27=_0x42a804[_0x5d839f(0x1fc)](0x0,_0x42a804[_0x5d839f(0x250)]('/'))+_0x4e640c[_0x5d839f(0x242)];globalThis[_0x5d839f(0x24d)]?this[_0x5d839f(0x2e4)]=new Worker(_0x9cac27):((_0x4e640c=new XMLHttpRequest())[_0x5d839f(0x352)]('GET',_0x9cac27,!0x1),_0x4e640c[_0x5d839f(0x2e2)](),0xc8===_0x4e640c[_0x5d839f(0x3b9)]?(_0x9cac27=URL[_0x5d839f(0x3c4)](new Blob([_0x4e640c[_0x5d839f(0x1e5)]+';'],{'type':_0x5d839f(0x1d2)})),this['worker']=new Worker(_0x9cac27),URL[_0x5d839f(0x2ec)](_0x9cac27)):console[_0x5d839f(0x33a)]('鍔犺浇鑴氭湰閿欒')),this[_0x5d839f(0x2e4)][_0x5d839f(0x234)]({'msgType':_0x5d839f(0x335),'baseUrl':_0x42a804,'isDev':globalThis[_0x5d839f(0x24d)]});}[_0xe79d2f(0x2f7)](){var _0x244e3c=_0xe79d2f;return this[_0x244e3c(0x2e4)];}}var _0x592230=Array,_0x59056e=_0x698e5a=>_0x698e5a[_0xe79d2f(0x3f3)](0x0),_0x592230=class extends _0x592230{constructor(..._0x4dd96e){super(..._0x4dd96e),_0x59056e(this);}};let _0x4e5402=0.000001,_0x42496f=new Map();function _0x4dd6bd(_0x4f9d4f){var _0x2314ee=_0xe79d2f;let _0x467580=_0x42496f[_0x2314ee(0x1d7)](_0x4f9d4f);return _0x467580||(_0x467580=(_0x37cb7b=_0x4f9d4f,{'create':_0x346015,'fromValues':_0x346015,'set':function(_0x2163af,_0x4b6ea5,_0x174d0e){return _0x174d0e=null!=_0x174d0e?_0x174d0e:new _0x37cb7b(0x2),(_0x174d0e[0x0]=_0x2163af,_0x174d0e[0x1]=_0x4b6ea5,_0x174d0e);},'ceil':function(_0x19613e,_0x32dd9e){var _0x5cff49=_0x2314ee;return _0x32dd9e=null!=_0x32dd9e?_0x32dd9e:new _0x37cb7b(0x2),(_0x32dd9e[0x0]=Math[_0x5cff49(0x228)](_0x19613e[0x0]),_0x32dd9e[0x1]=Math[_0x5cff49(0x228)](_0x19613e[0x1]),_0x32dd9e);},'floor':function(_0x5ebe2d,_0x474bba){var _0x17dd2a=_0x2314ee;return _0x474bba=null!=_0x474bba?_0x474bba:new _0x37cb7b(0x2),(_0x474bba[0x0]=Math[_0x17dd2a(0x262)](_0x5ebe2d[0x0]),_0x474bba[0x1]=Math[_0x17dd2a(0x262)](_0x5ebe2d[0x1]),_0x474bba);},'round':function(_0x4d2698,_0x1084aa){var _0x53deab=_0x2314ee;return _0x1084aa=null!=_0x1084aa?_0x1084aa:new _0x37cb7b(0x2),(_0x1084aa[0x0]=Math[_0x53deab(0x31f)](_0x4d2698[0x0]),_0x1084aa[0x1]=Math['round'](_0x4d2698[0x1]),_0x1084aa);},'clamp':function(_0x6b4aae,_0x5ab999=0x0,_0x54c35f=0x1,_0xf5cfe5){var _0x40a3a6=_0x2314ee;return _0xf5cfe5=null!=_0xf5cfe5?_0xf5cfe5:new _0x37cb7b(0x2),(_0xf5cfe5[0x0]=Math[_0x40a3a6(0x22a)](_0x54c35f,Math[_0x40a3a6(0x266)](_0x5ab999,_0x6b4aae[0x0])),_0xf5cfe5[0x1]=Math[_0x40a3a6(0x22a)](_0x54c35f,Math[_0x40a3a6(0x266)](_0x5ab999,_0x6b4aae[0x1])),_0xf5cfe5);},'add':function(_0x593488,_0x2ba012,_0x5548b6){return _0x5548b6=null!=_0x5548b6?_0x5548b6:new _0x37cb7b(0x2),(_0x5548b6[0x0]=_0x593488[0x0]+_0x2ba012[0x0],_0x5548b6[0x1]=_0x593488[0x1]+_0x2ba012[0x1],_0x5548b6);},'addScaled':function(_0x47bd0c,_0x1b54a5,_0x16da5d,_0x54206a){return _0x54206a=null!=_0x54206a?_0x54206a:new _0x37cb7b(0x2),(_0x54206a[0x0]=_0x47bd0c[0x0]+_0x1b54a5[0x0]*_0x16da5d,_0x54206a[0x1]=_0x47bd0c[0x1]+_0x1b54a5[0x1]*_0x16da5d,_0x54206a);},'angle':function(_0xca0e50,_0x4197a3){var _0x129958=_0x2314ee,_0x48ecbe=_0xca0e50[0x0],_0x712e14=_0xca0e50[0x1],_0x48a450=_0x4197a3[0x0],_0x2c5a6d=_0x4197a3[0x1],_0x48ecbe=Math['sqrt'](_0x48ecbe*_0x48ecbe+_0x712e14*_0x712e14)*Math['sqrt'](_0x48a450*_0x48a450+_0x2c5a6d*_0x2c5a6d),_0x712e14=_0x48ecbe&&_0x5939c7(_0xca0e50,_0x4197a3)/_0x48ecbe;return Math[_0x129958(0x311)](_0x712e14);},'subtract':_0x593c75,'sub':_0x593c75,'equalsApproximately':function(_0x1386ae,_0x38c7cc){var _0xfe3454=_0x2314ee;return Math[_0xfe3454(0x32b)](_0x1386ae[0x0]-_0x38c7cc[0x0])<_0x4e5402&&Math[_0xfe3454(0x32b)](_0x1386ae[0x1]-_0x38c7cc[0x1])<_0x4e5402;},'equals':function(_0x2d9ea7,_0xa317ea){return _0x2d9ea7[0x0]===_0xa317ea[0x0]&&_0x2d9ea7[0x1]===_0xa317ea[0x1];},'lerp':_0x2f08fa,'lerpV':function(_0x36cb04,_0x2cff42,_0x2f7256,_0x3ff733){return _0x3ff733=null!=_0x3ff733?_0x3ff733:new _0x37cb7b(0x2),(_0x3ff733[0x0]=_0x36cb04[0x0]+_0x2f7256[0x0]*(_0x2cff42[0x0]-_0x36cb04[0x0]),_0x3ff733[0x1]=_0x36cb04[0x1]+_0x2f7256[0x1]*(_0x2cff42[0x1]-_0x36cb04[0x1]),_0x3ff733);},'max':function(_0x16ecd9,_0x54b6af,_0x340ab7){return _0x340ab7=null!=_0x340ab7?_0x340ab7:new _0x37cb7b(0x2),(_0x340ab7[0x0]=Math['max'](_0x16ecd9[0x0],_0x54b6af[0x0]),_0x340ab7[0x1]=Math['max'](_0x16ecd9[0x1],_0x54b6af[0x1]),_0x340ab7);},'min':function(_0x392097,_0x50d8ea,_0x10164e){var _0x18605b=_0x2314ee;return _0x10164e=null!=_0x10164e?_0x10164e:new _0x37cb7b(0x2),(_0x10164e[0x0]=Math[_0x18605b(0x22a)](_0x392097[0x0],_0x50d8ea[0x0]),_0x10164e[0x1]=Math[_0x18605b(0x22a)](_0x392097[0x1],_0x50d8ea[0x1]),_0x10164e);},'mulScalar':_0x243835,'scale':_0x243835,'divScalar':function(_0x22eec2,_0x4dcef1,_0x2066ac){return _0x2066ac=null!=_0x2066ac?_0x2066ac:new _0x37cb7b(0x2),(_0x2066ac[0x0]=_0x22eec2[0x0]/_0x4dcef1,_0x2066ac[0x1]=_0x22eec2[0x1]/_0x4dcef1,_0x2066ac);},'inverse':_0x4946dd,'invert':_0x4946dd,'cross':function(_0x3024b9,_0x1304e0,_0x4f0b05){return _0x4f0b05=null!=_0x4f0b05?_0x4f0b05:new _0x37cb7b(0x3),_0x3024b9=_0x3024b9[0x0]*_0x1304e0[0x1]-_0x3024b9[0x1]*_0x1304e0[0x0],(_0x4f0b05[0x0]=0x0,_0x4f0b05[0x1]=0x0,_0x4f0b05[0x2]=_0x3024b9,_0x4f0b05);},'dot':_0x5939c7,'length':_0x17a129,'len':_0x17a129,'lengthSq':_0x21df24,'lenSq':_0x21df24,'distance':_0x88d443,'dist':_0x88d443,'distanceSq':_0x15eabb,'distSq':_0x15eabb,'normalize':_0x257039,'negate':function(_0x18a77c,_0x5f40d4){return _0x5f40d4=null!=_0x5f40d4?_0x5f40d4:new _0x37cb7b(0x2),(_0x5f40d4[0x0]=-_0x18a77c[0x0],_0x5f40d4[0x1]=-_0x18a77c[0x1],_0x5f40d4);},'copy':_0x48ef1e,'clone':_0x48ef1e,'multiply':_0x3c76fb,'mul':_0x3c76fb,'divide':_0x28acff,'div':_0x28acff,'random':function(_0x2a5ef4=0x1,_0x20cf4e){var _0x3f331d=_0x2314ee,_0x20cf4e=null!=_0x20cf4e?_0x20cf4e:new _0x37cb7b(0x2),_0x424145=0x2*Math[_0x3f331d(0x438)]()*Math['PI'];return _0x20cf4e[0x0]=Math[_0x3f331d(0x399)](_0x424145)*_0x2a5ef4,_0x20cf4e[0x1]=Math[_0x3f331d(0x413)](_0x424145)*_0x2a5ef4,_0x20cf4e;},'zero':function(_0x487e68){return _0x487e68=null!=_0x487e68?_0x487e68:new _0x37cb7b(0x2),(_0x487e68[0x0]=0x0,_0x487e68[0x1]=0x0,_0x487e68);},'transformMat4':function(_0x746c6,_0xf97e7b,_0x5098f6){var _0x5098f6=null!=_0x5098f6?_0x5098f6:new _0x37cb7b(0x2),_0xfd0e20=_0x746c6[0x0],_0x746c6=_0x746c6[0x1];return _0x5098f6[0x0]=_0xfd0e20*_0xf97e7b[0x0]+_0x746c6*_0xf97e7b[0x4]+_0xf97e7b[0xc],_0x5098f6[0x1]=_0xfd0e20*_0xf97e7b[0x1]+_0x746c6*_0xf97e7b[0x5]+_0xf97e7b[0xd],_0x5098f6;},'transformMat3':function(_0x2094b8,_0x3cdb34,_0x47a14b){var _0x47a14b=null!=_0x47a14b?_0x47a14b:new _0x37cb7b(0x2),_0x4e01b7=_0x2094b8[0x0],_0x2094b8=_0x2094b8[0x1];return _0x47a14b[0x0]=_0x3cdb34[0x0]*_0x4e01b7+_0x3cdb34[0x4]*_0x2094b8+_0x3cdb34[0x8],_0x47a14b[0x1]=_0x3cdb34[0x1]*_0x4e01b7+_0x3cdb34[0x5]*_0x2094b8+_0x3cdb34[0x9],_0x47a14b;},'rotate':function(_0x5edaaf,_0x1b268d,_0x15ac86,_0x489125){var _0x305810=_0x2314ee,_0x489125=null!=_0x489125?_0x489125:new _0x37cb7b(0x2),_0x232b61=_0x5edaaf[0x0]-_0x1b268d[0x0],_0x5edaaf=_0x5edaaf[0x1]-_0x1b268d[0x1],_0xf2154=Math['sin'](_0x15ac86),_0x15ac86=Math[_0x305810(0x399)](_0x15ac86);return _0x489125[0x0]=_0x232b61*_0x15ac86-_0x5edaaf*_0xf2154+_0x1b268d[0x0],_0x489125[0x1]=_0x232b61*_0xf2154+_0x5edaaf*_0x15ac86+_0x1b268d[0x1],_0x489125;},'setLength':_0xc26d6d,'truncate':function(_0x13f53e,_0x46551d,_0x52579b){return _0x52579b=null!=_0x52579b?_0x52579b:new _0x37cb7b(0x2),_0x17a129(_0x13f53e)>_0x46551d?_0xc26d6d(_0x13f53e,_0x46551d,_0x52579b):_0x48ef1e(_0x13f53e,_0x52579b);},'midpoint':function(_0x4f9eb3,_0x5d9cf8,_0xcc1a94){return _0x2f08fa(_0x4f9eb3,_0x5d9cf8,0.5,null!=_0xcc1a94?_0xcc1a94:new _0x37cb7b(0x2));}}),_0x42496f[_0x2314ee(0x37f)](_0x4f9d4f,_0x467580)),_0x467580;function _0x346015(_0x494340=0x0,_0x232e9a=0x0){var _0x4769aa=new _0x37cb7b(0x2);return void 0x0!==_0x494340&&(_0x4769aa[0x0]=_0x494340,void 0x0!==_0x232e9a)&&(_0x4769aa[0x1]=_0x232e9a),_0x4769aa;}function _0x593c75(_0xaafcd9,_0xc34720,_0x5496ed){return _0x5496ed=null!=_0x5496ed?_0x5496ed:new _0x37cb7b(0x2),(_0x5496ed[0x0]=_0xaafcd9[0x0]-_0xc34720[0x0],_0x5496ed[0x1]=_0xaafcd9[0x1]-_0xc34720[0x1],_0x5496ed);}function _0x2f08fa(_0x51ca12,_0x407fb1,_0x3ab826,_0x1ac5d1){return _0x1ac5d1=null!=_0x1ac5d1?_0x1ac5d1:new _0x37cb7b(0x2),(_0x1ac5d1[0x0]=_0x51ca12[0x0]+_0x3ab826*(_0x407fb1[0x0]-_0x51ca12[0x0]),_0x1ac5d1[0x1]=_0x51ca12[0x1]+_0x3ab826*(_0x407fb1[0x1]-_0x51ca12[0x1]),_0x1ac5d1);}function _0x243835(_0x42097a,_0x5bbc44,_0x4a22be){return _0x4a22be=null!=_0x4a22be?_0x4a22be:new _0x37cb7b(0x2),(_0x4a22be[0x0]=_0x42097a[0x0]*_0x5bbc44,_0x4a22be[0x1]=_0x42097a[0x1]*_0x5bbc44,_0x4a22be);}function _0x4946dd(_0xc53ee7,_0x1c7e7b){return _0x1c7e7b=null!=_0x1c7e7b?_0x1c7e7b:new _0x37cb7b(0x2),(_0x1c7e7b[0x0]=0x1/_0xc53ee7[0x0],_0x1c7e7b[0x1]=0x1/_0xc53ee7[0x1],_0x1c7e7b);}function _0x5939c7(_0x5bf8f8,_0x4d34ae){return _0x5bf8f8[0x0]*_0x4d34ae[0x0]+_0x5bf8f8[0x1]*_0x4d34ae[0x1];}function _0x17a129(_0x188bf7){var _0x5deb14=_0x188bf7[0x0],_0x188bf7=_0x188bf7[0x1];return Math['sqrt'](_0x5deb14*_0x5deb14+_0x188bf7*_0x188bf7);}function _0x21df24(_0x2ff21e){var _0x179587=_0x2ff21e[0x0],_0x2ff21e=_0x2ff21e[0x1];return _0x179587*_0x179587+_0x2ff21e*_0x2ff21e;}function _0x88d443(_0x5553c2,_0x12b84f){var _0xed2457=_0x2314ee,_0x28be8c=_0x5553c2[0x0]-_0x12b84f[0x0],_0x5553c2=_0x5553c2[0x1]-_0x12b84f[0x1];return Math[_0xed2457(0x297)](_0x28be8c*_0x28be8c+_0x5553c2*_0x5553c2);}function _0x15eabb(_0x2d0e59,_0x56e540){var _0x10e707=_0x2d0e59[0x0]-_0x56e540[0x0],_0x2d0e59=_0x2d0e59[0x1]-_0x56e540[0x1];return _0x10e707*_0x10e707+_0x2d0e59*_0x2d0e59;}function _0x257039(_0x1753d2,_0x5c0bbc){var _0x5c0bbc=null!=_0x5c0bbc?_0x5c0bbc:new _0x37cb7b(0x2),_0x341ea2=_0x1753d2[0x0],_0x1753d2=_0x1753d2[0x1],_0x1b8423=Math['sqrt'](_0x341ea2*_0x341ea2+_0x1753d2*_0x1753d2);return 0.00001<_0x1b8423?(_0x5c0bbc[0x0]=_0x341ea2/_0x1b8423,_0x5c0bbc[0x1]=_0x1753d2/_0x1b8423):(_0x5c0bbc[0x0]=0x0,_0x5c0bbc[0x1]=0x0),_0x5c0bbc;}function _0x48ef1e(_0x159e03,_0x258896){return _0x258896=null!=_0x258896?_0x258896:new _0x37cb7b(0x2),(_0x258896[0x0]=_0x159e03[0x0],_0x258896[0x1]=_0x159e03[0x1],_0x258896);}function _0x3c76fb(_0x5a69e8,_0x4798c6,_0x117dee){return _0x117dee=null!=_0x117dee?_0x117dee:new _0x37cb7b(0x2),(_0x117dee[0x0]=_0x5a69e8[0x0]*_0x4798c6[0x0],_0x117dee[0x1]=_0x5a69e8[0x1]*_0x4798c6[0x1],_0x117dee);}function _0x28acff(_0x3681c2,_0x2886a4,_0x46a970){return _0x46a970=null!=_0x46a970?_0x46a970:new _0x37cb7b(0x2),(_0x46a970[0x0]=_0x3681c2[0x0]/_0x2886a4[0x0],_0x46a970[0x1]=_0x3681c2[0x1]/_0x2886a4[0x1],_0x46a970);}function _0xc26d6d(_0x1f4858,_0x1d03aa,_0x3127fd){return _0x3127fd=null!=_0x3127fd?_0x3127fd:new _0x37cb7b(0x2),(_0x257039(_0x1f4858,_0x3127fd),_0x243835(_0x3127fd,_0x1d03aa,_0x3127fd));}var _0x37cb7b;}let _0x419460=new Map();function _0x112527(_0x3204fa){var _0x5c70e8=_0xe79d2f;let _0x4c2e5c=_0x419460[_0x5c70e8(0x1d7)](_0x3204fa);return _0x4c2e5c||(_0x4c2e5c=(_0x4f16e3=_0x3204fa,{'create':_0x52c3ed,'fromValues':_0x52c3ed,'set':function(_0x186912,_0x3529bd,_0x17f671,_0x10c779){return _0x10c779=null!=_0x10c779?_0x10c779:new _0x4f16e3(0x3),(_0x10c779[0x0]=_0x186912,_0x10c779[0x1]=_0x3529bd,_0x10c779[0x2]=_0x17f671,_0x10c779);},'ceil':function(_0x9ace27,_0x4bdc37){var _0x477278=_0x5c70e8;return _0x4bdc37=null!=_0x4bdc37?_0x4bdc37:new _0x4f16e3(0x3),(_0x4bdc37[0x0]=Math['ceil'](_0x9ace27[0x0]),_0x4bdc37[0x1]=Math[_0x477278(0x228)](_0x9ace27[0x1]),_0x4bdc37[0x2]=Math[_0x477278(0x228)](_0x9ace27[0x2]),_0x4bdc37);},'floor':function(_0x2b2a51,_0x43ef9e){var _0x45dfbb=_0x5c70e8;return _0x43ef9e=null!=_0x43ef9e?_0x43ef9e:new _0x4f16e3(0x3),(_0x43ef9e[0x0]=Math[_0x45dfbb(0x262)](_0x2b2a51[0x0]),_0x43ef9e[0x1]=Math[_0x45dfbb(0x262)](_0x2b2a51[0x1]),_0x43ef9e[0x2]=Math[_0x45dfbb(0x262)](_0x2b2a51[0x2]),_0x43ef9e);},'round':function(_0x475251,_0x303952){var _0x3f5d53=_0x5c70e8;return _0x303952=null!=_0x303952?_0x303952:new _0x4f16e3(0x3),(_0x303952[0x0]=Math[_0x3f5d53(0x31f)](_0x475251[0x0]),_0x303952[0x1]=Math[_0x3f5d53(0x31f)](_0x475251[0x1]),_0x303952[0x2]=Math[_0x3f5d53(0x31f)](_0x475251[0x2]),_0x303952);},'clamp':function(_0x397bfe,_0xe102a1=0x0,_0x48fc96=0x1,_0x25c403){var _0x2a64ef=_0x5c70e8;return _0x25c403=null!=_0x25c403?_0x25c403:new _0x4f16e3(0x3),(_0x25c403[0x0]=Math[_0x2a64ef(0x22a)](_0x48fc96,Math[_0x2a64ef(0x266)](_0xe102a1,_0x397bfe[0x0])),_0x25c403[0x1]=Math[_0x2a64ef(0x22a)](_0x48fc96,Math['max'](_0xe102a1,_0x397bfe[0x1])),_0x25c403[0x2]=Math[_0x2a64ef(0x22a)](_0x48fc96,Math[_0x2a64ef(0x266)](_0xe102a1,_0x397bfe[0x2])),_0x25c403);},'add':function(_0x584e74,_0x15ecc5,_0x3d20dc){return _0x3d20dc=null!=_0x3d20dc?_0x3d20dc:new _0x4f16e3(0x3),(_0x3d20dc[0x0]=_0x584e74[0x0]+_0x15ecc5[0x0],_0x3d20dc[0x1]=_0x584e74[0x1]+_0x15ecc5[0x1],_0x3d20dc[0x2]=_0x584e74[0x2]+_0x15ecc5[0x2],_0x3d20dc);},'addScaled':function(_0x3f07ef,_0x5d34ef,_0xe6ee0c,_0x50f0a5){return _0x50f0a5=null!=_0x50f0a5?_0x50f0a5:new _0x4f16e3(0x3),(_0x50f0a5[0x0]=_0x3f07ef[0x0]+_0x5d34ef[0x0]*_0xe6ee0c,_0x50f0a5[0x1]=_0x3f07ef[0x1]+_0x5d34ef[0x1]*_0xe6ee0c,_0x50f0a5[0x2]=_0x3f07ef[0x2]+_0x5d34ef[0x2]*_0xe6ee0c,_0x50f0a5);},'angle':function(_0x4235e2,_0x31365c){var _0x1138c7=_0x5c70e8,_0x32aae2=_0x4235e2[0x0],_0x24d431=_0x4235e2[0x1],_0x15d7c3=_0x4235e2[0x2],_0x39a0c7=_0x31365c[0x0],_0x532bb6=_0x31365c[0x1],_0x505a9e=_0x31365c[0x2],_0x32aae2=Math['sqrt'](_0x32aae2*_0x32aae2+_0x24d431*_0x24d431+_0x15d7c3*_0x15d7c3)*Math[_0x1138c7(0x297)](_0x39a0c7*_0x39a0c7+_0x532bb6*_0x532bb6+_0x505a9e*_0x505a9e),_0x24d431=_0x32aae2&&_0x405c69(_0x4235e2,_0x31365c)/_0x32aae2;return Math['acos'](_0x24d431);},'subtract':_0x37adab,'sub':_0x37adab,'equalsApproximately':function(_0xa01e29,_0x4d40a7){var _0x278a0a=_0x5c70e8;return Math[_0x278a0a(0x32b)](_0xa01e29[0x0]-_0x4d40a7[0x0])<_0x4e5402&&Math[_0x278a0a(0x32b)](_0xa01e29[0x1]-_0x4d40a7[0x1])<_0x4e5402&&Math[_0x278a0a(0x32b)](_0xa01e29[0x2]-_0x4d40a7[0x2])<_0x4e5402;},'equals':function(_0x4b99b7,_0xc081c){return _0x4b99b7[0x0]===_0xc081c[0x0]&&_0x4b99b7[0x1]===_0xc081c[0x1]&&_0x4b99b7[0x2]===_0xc081c[0x2];},'lerp':_0x116c93,'lerpV':function(_0x27c0e1,_0x4937a3,_0x2808ec,_0x5eca2b){return _0x5eca2b=null!=_0x5eca2b?_0x5eca2b:new _0x4f16e3(0x3),(_0x5eca2b[0x0]=_0x27c0e1[0x0]+_0x2808ec[0x0]*(_0x4937a3[0x0]-_0x27c0e1[0x0]),_0x5eca2b[0x1]=_0x27c0e1[0x1]+_0x2808ec[0x1]*(_0x4937a3[0x1]-_0x27c0e1[0x1]),_0x5eca2b[0x2]=_0x27c0e1[0x2]+_0x2808ec[0x2]*(_0x4937a3[0x2]-_0x27c0e1[0x2]),_0x5eca2b);},'max':function(_0x1fb796,_0x2c6d65,_0x427a17){var _0x40d226=_0x5c70e8;return _0x427a17=null!=_0x427a17?_0x427a17:new _0x4f16e3(0x3),(_0x427a17[0x0]=Math[_0x40d226(0x266)](_0x1fb796[0x0],_0x2c6d65[0x0]),_0x427a17[0x1]=Math[_0x40d226(0x266)](_0x1fb796[0x1],_0x2c6d65[0x1]),_0x427a17[0x2]=Math[_0x40d226(0x266)](_0x1fb796[0x2],_0x2c6d65[0x2]),_0x427a17);},'min':function(_0x3d321d,_0x48da9c,_0x7653f4){var _0x491572=_0x5c70e8;return _0x7653f4=null!=_0x7653f4?_0x7653f4:new _0x4f16e3(0x3),(_0x7653f4[0x0]=Math[_0x491572(0x22a)](_0x3d321d[0x0],_0x48da9c[0x0]),_0x7653f4[0x1]=Math[_0x491572(0x22a)](_0x3d321d[0x1],_0x48da9c[0x1]),_0x7653f4[0x2]=Math[_0x491572(0x22a)](_0x3d321d[0x2],_0x48da9c[0x2]),_0x7653f4);},'mulScalar':_0x35c084,'scale':_0x35c084,'divScalar':function(_0x4098ed,_0x32bc80,_0x4ed247){return _0x4ed247=null!=_0x4ed247?_0x4ed247:new _0x4f16e3(0x3),(_0x4ed247[0x0]=_0x4098ed[0x0]/_0x32bc80,_0x4ed247[0x1]=_0x4098ed[0x1]/_0x32bc80,_0x4ed247[0x2]=_0x4098ed[0x2]/_0x32bc80,_0x4ed247);},'inverse':_0x38e4cf,'invert':_0x38e4cf,'cross':function(_0x43bf5b,_0x5c2959,_0x426d8a){var _0x426d8a=null!=_0x426d8a?_0x426d8a:new _0x4f16e3(0x3),_0x41b092=_0x43bf5b[0x2]*_0x5c2959[0x0]-_0x43bf5b[0x0]*_0x5c2959[0x2],_0x79bd42=_0x43bf5b[0x0]*_0x5c2959[0x1]-_0x43bf5b[0x1]*_0x5c2959[0x0];return _0x426d8a[0x0]=_0x43bf5b[0x1]*_0x5c2959[0x2]-_0x43bf5b[0x2]*_0x5c2959[0x1],_0x426d8a[0x1]=_0x41b092,_0x426d8a[0x2]=_0x79bd42,_0x426d8a;},'dot':_0x405c69,'length':_0x1aab66,'len':_0x1aab66,'lengthSq':_0x34f0a2,'lenSq':_0x34f0a2,'distance':_0x326001,'dist':_0x326001,'distanceSq':_0x19f99d,'distSq':_0x19f99d,'normalize':_0x4cca18,'negate':function(_0x22dd2f,_0x25abbc){return _0x25abbc=null!=_0x25abbc?_0x25abbc:new _0x4f16e3(0x3),(_0x25abbc[0x0]=-_0x22dd2f[0x0],_0x25abbc[0x1]=-_0x22dd2f[0x1],_0x25abbc[0x2]=-_0x22dd2f[0x2],_0x25abbc);},'copy':_0x4cbf9c,'clone':_0x4cbf9c,'multiply':_0x863b7c,'mul':_0x863b7c,'divide':_0x472580,'div':_0x472580,'random':function(_0x2bcd6d=0x1,_0x37c26b){var _0x24d3d8=_0x5c70e8,_0x37c26b=null!=_0x37c26b?_0x37c26b:new _0x4f16e3(0x3),_0x2be2db=0x2*Math[_0x24d3d8(0x438)]()*Math['PI'],_0xe3c6e0=0x2*Math[_0x24d3d8(0x438)]()-0x1,_0x511846=Math[_0x24d3d8(0x297)](0x1-_0xe3c6e0*_0xe3c6e0)*_0x2bcd6d;return _0x37c26b[0x0]=Math['cos'](_0x2be2db)*_0x511846,_0x37c26b[0x1]=Math[_0x24d3d8(0x413)](_0x2be2db)*_0x511846,_0x37c26b[0x2]=_0xe3c6e0*_0x2bcd6d,_0x37c26b;},'zero':function(_0x4d6a0b){return _0x4d6a0b=null!=_0x4d6a0b?_0x4d6a0b:new _0x4f16e3(0x3),(_0x4d6a0b[0x0]=0x0,_0x4d6a0b[0x1]=0x0,_0x4d6a0b[0x2]=0x0,_0x4d6a0b);},'transformMat4':function(_0x575735,_0x38f1b1,_0x53fd88){var _0x53fd88=null!=_0x53fd88?_0x53fd88:new _0x4f16e3(0x3),_0x32e6ab=_0x575735[0x0],_0x1ea8dd=_0x575735[0x1],_0x575735=_0x575735[0x2],_0x592dd9=_0x38f1b1[0x3]*_0x32e6ab+_0x38f1b1[0x7]*_0x1ea8dd+_0x38f1b1[0xb]*_0x575735+_0x38f1b1[0xf]||0x1;return _0x53fd88[0x0]=(_0x38f1b1[0x0]*_0x32e6ab+_0x38f1b1[0x4]*_0x1ea8dd+_0x38f1b1[0x8]*_0x575735+_0x38f1b1[0xc])/_0x592dd9,_0x53fd88[0x1]=(_0x38f1b1[0x1]*_0x32e6ab+_0x38f1b1[0x5]*_0x1ea8dd+_0x38f1b1[0x9]*_0x575735+_0x38f1b1[0xd])/_0x592dd9,_0x53fd88[0x2]=(_0x38f1b1[0x2]*_0x32e6ab+_0x38f1b1[0x6]*_0x1ea8dd+_0x38f1b1[0xa]*_0x575735+_0x38f1b1[0xe])/_0x592dd9,_0x53fd88;},'transformMat4Upper3x3':function(_0x4a167b,_0x34ea6f,_0x177598){var _0x177598=null!=_0x177598?_0x177598:new _0x4f16e3(0x3),_0x2af58b=_0x4a167b[0x0],_0x52807d=_0x4a167b[0x1],_0x4a167b=_0x4a167b[0x2];return _0x177598[0x0]=_0x2af58b*_0x34ea6f[0x0]+_0x52807d*_0x34ea6f[0x4]+_0x4a167b*_0x34ea6f[0x8],_0x177598[0x1]=_0x2af58b*_0x34ea6f[0x1]+_0x52807d*_0x34ea6f[0x5]+_0x4a167b*_0x34ea6f[0x9],_0x177598[0x2]=_0x2af58b*_0x34ea6f[0x2]+_0x52807d*_0x34ea6f[0x6]+_0x4a167b*_0x34ea6f[0xa],_0x177598;},'transformMat3':function(_0x95c9a0,_0x27629f,_0x1af683){var _0x1af683=null!=_0x1af683?_0x1af683:new _0x4f16e3(0x3),_0x21130a=_0x95c9a0[0x0],_0x3cc673=_0x95c9a0[0x1],_0x95c9a0=_0x95c9a0[0x2];return _0x1af683[0x0]=_0x21130a*_0x27629f[0x0]+_0x3cc673*_0x27629f[0x4]+_0x95c9a0*_0x27629f[0x8],_0x1af683[0x1]=_0x21130a*_0x27629f[0x1]+_0x3cc673*_0x27629f[0x5]+_0x95c9a0*_0x27629f[0x9],_0x1af683[0x2]=_0x21130a*_0x27629f[0x2]+_0x3cc673*_0x27629f[0x6]+_0x95c9a0*_0x27629f[0xa],_0x1af683;},'transformQuat':function(_0x2ba83c,_0x1b0f35,_0x4dd610){var _0x4dd610=null!=_0x4dd610?_0x4dd610:new _0x4f16e3(0x3),_0x272438=_0x1b0f35[0x0],_0x18e0d5=_0x1b0f35[0x1],_0x5c4af8=_0x1b0f35[0x2],_0x1b0f35=0x2*_0x1b0f35[0x3],_0x229a71=_0x2ba83c[0x0],_0x4bc974=_0x2ba83c[0x1],_0x2ba83c=_0x2ba83c[0x2],_0x110489=_0x18e0d5*_0x2ba83c-_0x5c4af8*_0x4bc974,_0x87af62=_0x5c4af8*_0x229a71-_0x272438*_0x2ba83c,_0x2652d7=_0x272438*_0x4bc974-_0x18e0d5*_0x229a71;return _0x4dd610[0x0]=_0x229a71+_0x110489*_0x1b0f35+0x2*(_0x18e0d5*_0x2652d7-_0x5c4af8*_0x87af62),_0x4dd610[0x1]=_0x4bc974+_0x87af62*_0x1b0f35+0x2*(_0x5c4af8*_0x110489-_0x272438*_0x2652d7),_0x4dd610[0x2]=_0x2ba83c+_0x2652d7*_0x1b0f35+0x2*(_0x272438*_0x87af62-_0x18e0d5*_0x110489),_0x4dd610;},'getTranslation':function(_0xff2692,_0x42eb4d){return _0x42eb4d=null!=_0x42eb4d?_0x42eb4d:new _0x4f16e3(0x3),(_0x42eb4d[0x0]=_0xff2692[0xc],_0x42eb4d[0x1]=_0xff2692[0xd],_0x42eb4d[0x2]=_0xff2692[0xe],_0x42eb4d);},'getAxis':function(_0x170aed,_0x33947f,_0x1e0118){return _0x1e0118=null!=_0x1e0118?_0x1e0118:new _0x4f16e3(0x3),_0x33947f*=0x4,(_0x1e0118[0x0]=_0x170aed[0x0+_0x33947f],_0x1e0118[0x1]=_0x170aed[0x1+_0x33947f],_0x1e0118[0x2]=_0x170aed[0x2+_0x33947f],_0x1e0118);},'getScaling':function(_0x24086b,_0x5f4489){var _0x47fb74=_0x5c70e8,_0x5f4489=null!=_0x5f4489?_0x5f4489:new _0x4f16e3(0x3),_0x43a8c9=_0x24086b[0x0],_0x224e7c=_0x24086b[0x1],_0x44a06a=_0x24086b[0x2],_0x2b60b0=_0x24086b[0x4],_0x20c733=_0x24086b[0x5],_0x395e93=_0x24086b[0x6],_0x337dc1=_0x24086b[0x8],_0x2dae58=_0x24086b[0x9],_0x24086b=_0x24086b[0xa];return _0x5f4489[0x0]=Math[_0x47fb74(0x297)](_0x43a8c9*_0x43a8c9+_0x224e7c*_0x224e7c+_0x44a06a*_0x44a06a),_0x5f4489[0x1]=Math[_0x47fb74(0x297)](_0x2b60b0*_0x2b60b0+_0x20c733*_0x20c733+_0x395e93*_0x395e93),_0x5f4489[0x2]=Math['sqrt'](_0x337dc1*_0x337dc1+_0x2dae58*_0x2dae58+_0x24086b*_0x24086b),_0x5f4489;},'rotateX':function(_0x20e477,_0x962bd5,_0x3fd6b8,_0x5138d9){var _0x27811a=_0x5c70e8,_0x5138d9=null!=_0x5138d9?_0x5138d9:new _0x4f16e3(0x3),_0x1b9139=[],_0x275be0=[];return _0x1b9139[0x0]=_0x20e477[0x0]-_0x962bd5[0x0],_0x1b9139[0x1]=_0x20e477[0x1]-_0x962bd5[0x1],_0x1b9139[0x2]=_0x20e477[0x2]-_0x962bd5[0x2],_0x275be0[0x0]=_0x1b9139[0x0],_0x275be0[0x1]=_0x1b9139[0x1]*Math[_0x27811a(0x399)](_0x3fd6b8)-_0x1b9139[0x2]*Math[_0x27811a(0x413)](_0x3fd6b8),_0x275be0[0x2]=_0x1b9139[0x1]*Math[_0x27811a(0x413)](_0x3fd6b8)+_0x1b9139[0x2]*Math[_0x27811a(0x399)](_0x3fd6b8),_0x5138d9[0x0]=_0x275be0[0x0]+_0x962bd5[0x0],_0x5138d9[0x1]=_0x275be0[0x1]+_0x962bd5[0x1],_0x5138d9[0x2]=_0x275be0[0x2]+_0x962bd5[0x2],_0x5138d9;},'rotateY':function(_0x529c2,_0xe28aa8,_0x41aa2e,_0xa9ab55){var _0x2632fa=_0x5c70e8,_0xa9ab55=null!=_0xa9ab55?_0xa9ab55:new _0x4f16e3(0x3),_0x5cb720=[],_0x35e441=[];return _0x5cb720[0x0]=_0x529c2[0x0]-_0xe28aa8[0x0],_0x5cb720[0x1]=_0x529c2[0x1]-_0xe28aa8[0x1],_0x5cb720[0x2]=_0x529c2[0x2]-_0xe28aa8[0x2],_0x35e441[0x0]=_0x5cb720[0x2]*Math[_0x2632fa(0x413)](_0x41aa2e)+_0x5cb720[0x0]*Math[_0x2632fa(0x399)](_0x41aa2e),_0x35e441[0x1]=_0x5cb720[0x1],_0x35e441[0x2]=_0x5cb720[0x2]*Math['cos'](_0x41aa2e)-_0x5cb720[0x0]*Math[_0x2632fa(0x413)](_0x41aa2e),_0xa9ab55[0x0]=_0x35e441[0x0]+_0xe28aa8[0x0],_0xa9ab55[0x1]=_0x35e441[0x1]+_0xe28aa8[0x1],_0xa9ab55[0x2]=_0x35e441[0x2]+_0xe28aa8[0x2],_0xa9ab55;},'rotateZ':function(_0x493092,_0x51ba3d,_0x3ad76b,_0xf91814){var _0x2ec67a=_0x5c70e8,_0xf91814=null!=_0xf91814?_0xf91814:new _0x4f16e3(0x3),_0x5556c6=[],_0x2c1992=[];return _0x5556c6[0x0]=_0x493092[0x0]-_0x51ba3d[0x0],_0x5556c6[0x1]=_0x493092[0x1]-_0x51ba3d[0x1],_0x5556c6[0x2]=_0x493092[0x2]-_0x51ba3d[0x2],_0x2c1992[0x0]=_0x5556c6[0x0]*Math['cos'](_0x3ad76b)-_0x5556c6[0x1]*Math[_0x2ec67a(0x413)](_0x3ad76b),_0x2c1992[0x1]=_0x5556c6[0x0]*Math[_0x2ec67a(0x413)](_0x3ad76b)+_0x5556c6[0x1]*Math['cos'](_0x3ad76b),_0x2c1992[0x2]=_0x5556c6[0x2],_0xf91814[0x0]=_0x2c1992[0x0]+_0x51ba3d[0x0],_0xf91814[0x1]=_0x2c1992[0x1]+_0x51ba3d[0x1],_0xf91814[0x2]=_0x2c1992[0x2]+_0x51ba3d[0x2],_0xf91814;},'setLength':_0xfd232c,'truncate':function(_0x208e68,_0x57a93e,_0x54b7d7){return _0x54b7d7=null!=_0x54b7d7?_0x54b7d7:new _0x4f16e3(0x3),_0x1aab66(_0x208e68)>_0x57a93e?_0xfd232c(_0x208e68,_0x57a93e,_0x54b7d7):_0x4cbf9c(_0x208e68,_0x54b7d7);},'midpoint':function(_0x4bed85,_0x3a49a3,_0x45e159){return _0x116c93(_0x4bed85,_0x3a49a3,0.5,null!=_0x45e159?_0x45e159:new _0x4f16e3(0x3));}}),_0x419460[_0x5c70e8(0x37f)](_0x3204fa,_0x4c2e5c)),_0x4c2e5c;function _0x52c3ed(_0x2fc245,_0xbf5b59,_0x180f75){var _0x2edea3=new _0x4f16e3(0x3);return void 0x0!==_0x2fc245&&(_0x2edea3[0x0]=_0x2fc245,void 0x0!==_0xbf5b59)&&(_0x2edea3[0x1]=_0xbf5b59,void 0x0!==_0x180f75)&&(_0x2edea3[0x2]=_0x180f75),_0x2edea3;}function _0x37adab(_0x3b03e8,_0x4d68e8,_0x13ecd7){return _0x13ecd7=null!=_0x13ecd7?_0x13ecd7:new _0x4f16e3(0x3),(_0x13ecd7[0x0]=_0x3b03e8[0x0]-_0x4d68e8[0x0],_0x13ecd7[0x1]=_0x3b03e8[0x1]-_0x4d68e8[0x1],_0x13ecd7[0x2]=_0x3b03e8[0x2]-_0x4d68e8[0x2],_0x13ecd7);}function _0x116c93(_0x31298d,_0x1b6bca,_0x42f91,_0x3691a4){return _0x3691a4=null!=_0x3691a4?_0x3691a4:new _0x4f16e3(0x3),(_0x3691a4[0x0]=_0x31298d[0x0]+_0x42f91*(_0x1b6bca[0x0]-_0x31298d[0x0]),_0x3691a4[0x1]=_0x31298d[0x1]+_0x42f91*(_0x1b6bca[0x1]-_0x31298d[0x1]),_0x3691a4[0x2]=_0x31298d[0x2]+_0x42f91*(_0x1b6bca[0x2]-_0x31298d[0x2]),_0x3691a4);}function _0x35c084(_0x4fbf0a,_0x4b7790,_0x181414){return _0x181414=null!=_0x181414?_0x181414:new _0x4f16e3(0x3),(_0x181414[0x0]=_0x4fbf0a[0x0]*_0x4b7790,_0x181414[0x1]=_0x4fbf0a[0x1]*_0x4b7790,_0x181414[0x2]=_0x4fbf0a[0x2]*_0x4b7790,_0x181414);}function _0x38e4cf(_0x259791,_0x3b7b2d){return _0x3b7b2d=null!=_0x3b7b2d?_0x3b7b2d:new _0x4f16e3(0x3),(_0x3b7b2d[0x0]=0x1/_0x259791[0x0],_0x3b7b2d[0x1]=0x1/_0x259791[0x1],_0x3b7b2d[0x2]=0x1/_0x259791[0x2],_0x3b7b2d);}function _0x405c69(_0x448a0e,_0x13bcc8){return _0x448a0e[0x0]*_0x13bcc8[0x0]+_0x448a0e[0x1]*_0x13bcc8[0x1]+_0x448a0e[0x2]*_0x13bcc8[0x2];}function _0x1aab66(_0x2060a3){var _0x25b6e6=_0x2060a3[0x0],_0x3d028d=_0x2060a3[0x1],_0x2060a3=_0x2060a3[0x2];return Math['sqrt'](_0x25b6e6*_0x25b6e6+_0x3d028d*_0x3d028d+_0x2060a3*_0x2060a3);}function _0x34f0a2(_0x2a10d8){var _0x2e2424=_0x2a10d8[0x0],_0x186382=_0x2a10d8[0x1],_0x2a10d8=_0x2a10d8[0x2];return _0x2e2424*_0x2e2424+_0x186382*_0x186382+_0x2a10d8*_0x2a10d8;}function _0x326001(_0x3c0480,_0x1dcb83){var _0x39da0e=_0x5c70e8,_0x23bcc8=_0x3c0480[0x0]-_0x1dcb83[0x0],_0x79455e=_0x3c0480[0x1]-_0x1dcb83[0x1],_0x3c0480=_0x3c0480[0x2]-_0x1dcb83[0x2];return Math[_0x39da0e(0x297)](_0x23bcc8*_0x23bcc8+_0x79455e*_0x79455e+_0x3c0480*_0x3c0480);}function _0x19f99d(_0x4b0ef4,_0x16aa01){var _0x381cd7=_0x4b0ef4[0x0]-_0x16aa01[0x0],_0x22f10b=_0x4b0ef4[0x1]-_0x16aa01[0x1],_0x4b0ef4=_0x4b0ef4[0x2]-_0x16aa01[0x2];return _0x381cd7*_0x381cd7+_0x22f10b*_0x22f10b+_0x4b0ef4*_0x4b0ef4;}function _0x4cca18(_0x51ef4d,_0x394080){var _0x52197c=_0x5c70e8,_0x394080=null!=_0x394080?_0x394080:new _0x4f16e3(0x3),_0x2fdf30=_0x51ef4d[0x0],_0x34e8e6=_0x51ef4d[0x1],_0x51ef4d=_0x51ef4d[0x2],_0x4e66c8=Math[_0x52197c(0x297)](_0x2fdf30*_0x2fdf30+_0x34e8e6*_0x34e8e6+_0x51ef4d*_0x51ef4d);return 0.00001<_0x4e66c8?(_0x394080[0x0]=_0x2fdf30/_0x4e66c8,_0x394080[0x1]=_0x34e8e6/_0x4e66c8,_0x394080[0x2]=_0x51ef4d/_0x4e66c8):(_0x394080[0x0]=0x0,_0x394080[0x1]=0x0,_0x394080[0x2]=0x0),_0x394080;}function _0x4cbf9c(_0x59fcc5,_0x4c40a1){return _0x4c40a1=null!=_0x4c40a1?_0x4c40a1:new _0x4f16e3(0x3),(_0x4c40a1[0x0]=_0x59fcc5[0x0],_0x4c40a1[0x1]=_0x59fcc5[0x1],_0x4c40a1[0x2]=_0x59fcc5[0x2],_0x4c40a1);}function _0x863b7c(_0x3bfe90,_0x3db5fa,_0x5852ec){return _0x5852ec=null!=_0x5852ec?_0x5852ec:new _0x4f16e3(0x3),(_0x5852ec[0x0]=_0x3bfe90[0x0]*_0x3db5fa[0x0],_0x5852ec[0x1]=_0x3bfe90[0x1]*_0x3db5fa[0x1],_0x5852ec[0x2]=_0x3bfe90[0x2]*_0x3db5fa[0x2],_0x5852ec);}function _0x472580(_0x1321b3,_0x54da29,_0x468431){return _0x468431=null!=_0x468431?_0x468431:new _0x4f16e3(0x3),(_0x468431[0x0]=_0x1321b3[0x0]/_0x54da29[0x0],_0x468431[0x1]=_0x1321b3[0x1]/_0x54da29[0x1],_0x468431[0x2]=_0x1321b3[0x2]/_0x54da29[0x2],_0x468431);}function _0xfd232c(_0x405a9b,_0x5d7b22,_0x1ca94f){return _0x1ca94f=null!=_0x1ca94f?_0x1ca94f:new _0x4f16e3(0x3),(_0x4cca18(_0x405a9b,_0x1ca94f),_0x35c084(_0x1ca94f,_0x5d7b22,_0x1ca94f));}var _0x4f16e3;}let _0x1e163c=new Map(),_0x45d3ca=new Map(),_0x4e2fea=new Map(),_0xe2b28f=new Map();function _0x22476c(_0x172f32,_0x4525fa,_0x23ba51,_0x4e07e1,_0x4d4530,_0x24a32e){return{'mat3':(_0x505361=>{var _0x46ccdc=a0_0x40ed;let _0x35ef2d=_0x1e163c[_0x46ccdc(0x1d7)](_0x505361);return _0x35ef2d||(_0x35ef2d=(_0x1a5361=>{let _0x5a940f=_0x4dd6bd(_0x1a5361),_0x269c03=_0x112527(_0x1a5361);function _0x5830e8(_0x500469,_0x331eac,_0x363b17){return _0x363b17=null!=_0x363b17?_0x363b17:new _0x1a5361(0xc),(_0x363b17[0x0]=_0x500469[0x0]*_0x331eac,_0x363b17[0x1]=_0x500469[0x1]*_0x331eac,_0x363b17[0x2]=_0x500469[0x2]*_0x331eac,_0x363b17[0x4]=_0x500469[0x4]*_0x331eac,_0x363b17[0x5]=_0x500469[0x5]*_0x331eac,_0x363b17[0x6]=_0x500469[0x6]*_0x331eac,_0x363b17[0x8]=_0x500469[0x8]*_0x331eac,_0x363b17[0x9]=_0x500469[0x9]*_0x331eac,_0x363b17[0xa]=_0x500469[0xa]*_0x331eac,_0x363b17);}function _0x2fb4b3(_0x248c16,_0x3b6b59){return _0x3b6b59=null!=_0x3b6b59?_0x3b6b59:new _0x1a5361(0xc),(_0x3b6b59[0x0]=_0x248c16[0x0],_0x3b6b59[0x1]=_0x248c16[0x1],_0x3b6b59[0x2]=_0x248c16[0x2],_0x3b6b59[0x4]=_0x248c16[0x4],_0x3b6b59[0x5]=_0x248c16[0x5],_0x3b6b59[0x6]=_0x248c16[0x6],_0x3b6b59[0x8]=_0x248c16[0x8],_0x3b6b59[0x9]=_0x248c16[0x9],_0x3b6b59[0xa]=_0x248c16[0xa],_0x3b6b59);}function _0x18296f(_0x5703d8){return _0x5703d8=null!=_0x5703d8?_0x5703d8:new _0x1a5361(0xc),(_0x5703d8[0x0]=0x1,_0x5703d8[0x1]=0x0,_0x5703d8[0x2]=0x0,_0x5703d8[0x4]=0x0,_0x5703d8[0x5]=0x1,_0x5703d8[0x6]=0x0,_0x5703d8[0x8]=0x0,_0x5703d8[0x9]=0x0,_0x5703d8[0xa]=0x1,_0x5703d8);}function _0x4d4d7e(_0x3c7566,_0x11d442){var _0x5f0760=(function(){var _0x356d14=!![];return function(_0x5fe70b,_0x254f06){var _0x3d8d5e=_0x356d14?function(){var _0x1d6b6d=a0_0x40ed;if(_0x254f06){var _0x261547=_0x254f06[_0x1d6b6d(0x3af)](_0x5fe70b,arguments);return _0x254f06=null,_0x261547;}}:function(){};return _0x356d14=![],_0x3d8d5e;};}()),_0x2b2d46=_0x5f0760(this,function(){var _0x5bbbbe=a0_0x40ed;return _0x2b2d46[_0x5bbbbe(0x302)]()[_0x5bbbbe(0x292)](_0x5bbbbe(0x427))['toString']()[_0x5bbbbe(0x20b)](_0x2b2d46)[_0x5bbbbe(0x292)](_0x5bbbbe(0x427));});_0x2b2d46();var _0x11d442=null!=_0x11d442?_0x11d442:new _0x1a5361(0xc),_0x4f6e7a=_0x3c7566[0x0],_0x141535=_0x3c7566[0x1],_0x4599f4=_0x3c7566[0x2],_0x26ae49=_0x3c7566[0x4],_0x1bebbe=_0x3c7566[0x5],_0x7a72f5=_0x3c7566[0x6],_0x5a70b8=_0x3c7566[0x8],_0x3ff444=_0x3c7566[0x9],_0x3c7566=_0x3c7566[0xa],_0x174d1f=_0x3c7566*_0x1bebbe-_0x7a72f5*_0x3ff444,_0xa29a54=-_0x3c7566*_0x26ae49+_0x7a72f5*_0x5a70b8,_0xa8db3b=_0x3ff444*_0x26ae49-_0x1bebbe*_0x5a70b8,_0xdf6ccc=0x1/(_0x4f6e7a*_0x174d1f+_0x141535*_0xa29a54+_0x4599f4*_0xa8db3b);return _0x11d442[0x0]=_0x174d1f*_0xdf6ccc,_0x11d442[0x1]=(-_0x3c7566*_0x141535+_0x4599f4*_0x3ff444)*_0xdf6ccc,_0x11d442[0x2]=(_0x7a72f5*_0x141535-_0x4599f4*_0x1bebbe)*_0xdf6ccc,_0x11d442[0x4]=_0xa29a54*_0xdf6ccc,_0x11d442[0x5]=(_0x3c7566*_0x4f6e7a-_0x4599f4*_0x5a70b8)*_0xdf6ccc,_0x11d442[0x6]=(-_0x7a72f5*_0x4f6e7a+_0x4599f4*_0x26ae49)*_0xdf6ccc,_0x11d442[0x8]=_0xa8db3b*_0xdf6ccc,_0x11d442[0x9]=(-_0x3ff444*_0x4f6e7a+_0x141535*_0x5a70b8)*_0xdf6ccc,_0x11d442[0xa]=(_0x1bebbe*_0x4f6e7a-_0x141535*_0x26ae49)*_0xdf6ccc,_0x11d442;}function _0xdb4794(_0x25fbbe,_0x196481,_0x536162){var _0x536162=null!=_0x536162?_0x536162:new _0x1a5361(0xc),_0x425dcf=_0x25fbbe[0x0],_0x418ae7=_0x25fbbe[0x1],_0x5c1efc=_0x25fbbe[0x2],_0x5984b9=_0x25fbbe[0x4],_0x49bb21=_0x25fbbe[0x5],_0x4a3fe=_0x25fbbe[0x6],_0x5e9ef9=_0x25fbbe[0x8],_0x3a150a=_0x25fbbe[0x9],_0x25fbbe=_0x25fbbe[0xa],_0x3d9a1b=_0x196481[0x0],_0x2e5383=_0x196481[0x1],_0x3d654c=_0x196481[0x2],_0x1841cd=_0x196481[0x4],_0x4c09cb=_0x196481[0x5],_0x4af02a=_0x196481[0x6],_0x34d369=_0x196481[0x8],_0x29c7f3=_0x196481[0x9],_0x196481=_0x196481[0xa];return _0x536162[0x0]=_0x425dcf*_0x3d9a1b+_0x5984b9*_0x2e5383+_0x5e9ef9*_0x3d654c,_0x536162[0x1]=_0x418ae7*_0x3d9a1b+_0x49bb21*_0x2e5383+_0x3a150a*_0x3d654c,_0x536162[0x2]=_0x5c1efc*_0x3d9a1b+_0x4a3fe*_0x2e5383+_0x25fbbe*_0x3d654c,_0x536162[0x4]=_0x425dcf*_0x1841cd+_0x5984b9*_0x4c09cb+_0x5e9ef9*_0x4af02a,_0x536162[0x5]=_0x418ae7*_0x1841cd+_0x49bb21*_0x4c09cb+_0x3a150a*_0x4af02a,_0x536162[0x6]=_0x5c1efc*_0x1841cd+_0x4a3fe*_0x4c09cb+_0x25fbbe*_0x4af02a,_0x536162[0x8]=_0x425dcf*_0x34d369+_0x5984b9*_0x29c7f3+_0x5e9ef9*_0x196481,_0x536162[0x9]=_0x418ae7*_0x34d369+_0x49bb21*_0x29c7f3+_0x3a150a*_0x196481,_0x536162[0xa]=_0x5c1efc*_0x34d369+_0x4a3fe*_0x29c7f3+_0x25fbbe*_0x196481,_0x536162;}function _0x523972(_0x1990d8,_0x394806){var _0x2c7303=a0_0x40ed,_0x394806=null!=_0x394806?_0x394806:new _0x1a5361(0xc),_0x177830=Math[_0x2c7303(0x399)](_0x1990d8),_0x1990d8=Math['sin'](_0x1990d8);return _0x394806[0x0]=_0x177830,_0x394806[0x1]=_0x1990d8,_0x394806[0x2]=0x0,_0x394806[0x4]=-_0x1990d8,_0x394806[0x5]=_0x177830,_0x394806[0x6]=0x0,_0x394806[0x8]=0x0,_0x394806[0x9]=0x0,_0x394806[0xa]=0x1,_0x394806;}function _0x33cfb1(_0x579ee0,_0x1e83ac,_0x175acd){var _0x1e1b9d=a0_0x40ed,_0x175acd=null!=_0x175acd?_0x175acd:new _0x1a5361(0xc),_0x2f6799=_0x579ee0[0x0],_0x1e8b83=_0x579ee0[0x1],_0x16a855=_0x579ee0[0x2],_0x1bde99=_0x579ee0[0x4],_0x6338c0=_0x579ee0[0x5],_0x31f58e=_0x579ee0[0x6],_0x3c5fd2=Math[_0x1e1b9d(0x399)](_0x1e83ac),_0x1e83ac=Math[_0x1e1b9d(0x413)](_0x1e83ac);return _0x175acd[0x0]=_0x3c5fd2*_0x2f6799+_0x1e83ac*_0x1bde99,_0x175acd[0x1]=_0x3c5fd2*_0x1e8b83+_0x1e83ac*_0x6338c0,_0x175acd[0x2]=_0x3c5fd2*_0x16a855+_0x1e83ac*_0x31f58e,_0x175acd[0x4]=_0x3c5fd2*_0x1bde99-_0x1e83ac*_0x2f6799,_0x175acd[0x5]=_0x3c5fd2*_0x6338c0-_0x1e83ac*_0x1e8b83,_0x175acd[0x6]=_0x3c5fd2*_0x31f58e-_0x1e83ac*_0x16a855,_0x579ee0!==_0x175acd&&(_0x175acd[0x8]=_0x579ee0[0x8],_0x175acd[0x9]=_0x579ee0[0x9],_0x175acd[0xa]=_0x579ee0[0xa]),_0x175acd;}return{'add':function(_0x148101,_0x16d89,_0x3c2c6a){return _0x3c2c6a=null!=_0x3c2c6a?_0x3c2c6a:new _0x1a5361(0xc),(_0x3c2c6a[0x0]=_0x148101[0x0]+_0x16d89[0x0],_0x3c2c6a[0x1]=_0x148101[0x1]+_0x16d89[0x1],_0x3c2c6a[0x2]=_0x148101[0x2]+_0x16d89[0x2],_0x3c2c6a[0x4]=_0x148101[0x4]+_0x16d89[0x4],_0x3c2c6a[0x5]=_0x148101[0x5]+_0x16d89[0x5],_0x3c2c6a[0x6]=_0x148101[0x6]+_0x16d89[0x6],_0x3c2c6a[0x8]=_0x148101[0x8]+_0x16d89[0x8],_0x3c2c6a[0x9]=_0x148101[0x9]+_0x16d89[0x9],_0x3c2c6a[0xa]=_0x148101[0xa]+_0x16d89[0xa],_0x3c2c6a);},'clone':_0x2fb4b3,'copy':_0x2fb4b3,'create':function(_0x353b94,_0x590772,_0x556c49,_0x2f4380,_0x322f5c,_0x49086e,_0x15eaac,_0x3fdf12,_0x481380){var _0x51449a=new _0x1a5361(0xc);return _0x51449a[0x3]=0x0,_0x51449a[0x7]=0x0,void(_0x51449a[0xb]=0x0)!==_0x353b94&&(_0x51449a[0x0]=_0x353b94,void 0x0!==_0x590772)&&(_0x51449a[0x1]=_0x590772,void 0x0!==_0x556c49)&&(_0x51449a[0x2]=_0x556c49,void 0x0!==_0x2f4380)&&(_0x51449a[0x4]=_0x2f4380,void 0x0!==_0x322f5c)&&(_0x51449a[0x5]=_0x322f5c,void 0x0!==_0x49086e)&&(_0x51449a[0x6]=_0x49086e,void 0x0!==_0x15eaac)&&(_0x51449a[0x8]=_0x15eaac,void 0x0!==_0x3fdf12)&&(_0x51449a[0x9]=_0x3fdf12,void 0x0!==_0x481380)&&(_0x51449a[0xa]=_0x481380),_0x51449a;},'determinant':function(_0x374726){var _0x246f23=_0x374726[0x0],_0x50dd75=_0x374726[0x1],_0x228482=_0x374726[0x2],_0x5797c8=_0x374726[0x5],_0x5c7fa7=_0x374726[0x6],_0x4871da=_0x374726[0x9],_0x119ed7=_0x374726[0xa];return _0x246f23*(_0x5797c8*_0x119ed7-_0x4871da*_0x5c7fa7)-_0x374726[0x4]*(_0x50dd75*_0x119ed7-_0x4871da*_0x228482)+_0x374726[0x8]*(_0x50dd75*_0x5c7fa7-_0x5797c8*_0x228482);},'equals':function(_0x2e8867,_0x42266d){return _0x2e8867[0x0]===_0x42266d[0x0]&&_0x2e8867[0x1]===_0x42266d[0x1]&&_0x2e8867[0x2]===_0x42266d[0x2]&&_0x2e8867[0x4]===_0x42266d[0x4]&&_0x2e8867[0x5]===_0x42266d[0x5]&&_0x2e8867[0x6]===_0x42266d[0x6]&&_0x2e8867[0x8]===_0x42266d[0x8]&&_0x2e8867[0x9]===_0x42266d[0x9]&&_0x2e8867[0xa]===_0x42266d[0xa];},'equalsApproximately':function(_0x251891,_0x29761e){var _0x5ac9fb=a0_0x40ed;return Math[_0x5ac9fb(0x32b)](_0x251891[0x0]-_0x29761e[0x0])<_0x4e5402&&Math[_0x5ac9fb(0x32b)](_0x251891[0x1]-_0x29761e[0x1])<_0x4e5402&&Math[_0x5ac9fb(0x32b)](_0x251891[0x2]-_0x29761e[0x2])<_0x4e5402&&Math['abs'](_0x251891[0x4]-_0x29761e[0x4])<_0x4e5402&&Math[_0x5ac9fb(0x32b)](_0x251891[0x5]-_0x29761e[0x5])<_0x4e5402&&Math[_0x5ac9fb(0x32b)](_0x251891[0x6]-_0x29761e[0x6])<_0x4e5402&&Math[_0x5ac9fb(0x32b)](_0x251891[0x8]-_0x29761e[0x8])<_0x4e5402&&Math[_0x5ac9fb(0x32b)](_0x251891[0x9]-_0x29761e[0x9])<_0x4e5402&&Math['abs'](_0x251891[0xa]-_0x29761e[0xa])<_0x4e5402;},'fromMat4':function(_0x14c3a9,_0x41b016){return _0x41b016=null!=_0x41b016?_0x41b016:new _0x1a5361(0xc),(_0x41b016[0x0]=_0x14c3a9[0x0],_0x41b016[0x1]=_0x14c3a9[0x1],_0x41b016[0x2]=_0x14c3a9[0x2],_0x41b016[0x3]=0x0,_0x41b016[0x4]=_0x14c3a9[0x4],_0x41b016[0x5]=_0x14c3a9[0x5],_0x41b016[0x6]=_0x14c3a9[0x6],_0x41b016[0x7]=0x0,_0x41b016[0x8]=_0x14c3a9[0x8],_0x41b016[0x9]=_0x14c3a9[0x9],_0x41b016[0xa]=_0x14c3a9[0xa],_0x41b016[0xb]=0x0,_0x41b016);},'fromQuat':function(_0x589934,_0x413bfa){var _0x413bfa=null!=_0x413bfa?_0x413bfa:new _0x1a5361(0xc),_0x2207b2=_0x589934[0x0],_0x26107d=_0x589934[0x1],_0x4880cc=_0x589934[0x2],_0x589934=_0x589934[0x3],_0x378735=_0x2207b2+_0x2207b2,_0x40b8a6=_0x26107d+_0x26107d,_0x166b0c=_0x4880cc+_0x4880cc,_0x2207b2=_0x2207b2*_0x378735,_0x5e60e9=_0x26107d*_0x378735,_0x26107d=_0x26107d*_0x40b8a6,_0x10f9ab=_0x4880cc*_0x378735,_0x1c0be4=_0x4880cc*_0x40b8a6,_0x4880cc=_0x4880cc*_0x166b0c,_0x378735=_0x589934*_0x378735,_0x40b8a6=_0x589934*_0x40b8a6,_0x589934=_0x589934*_0x166b0c;return _0x413bfa[0x0]=0x1-_0x26107d-_0x4880cc,_0x413bfa[0x1]=_0x5e60e9+_0x589934,_0x413bfa[0x2]=_0x10f9ab-_0x40b8a6,_0x413bfa[0x3]=0x0,_0x413bfa[0x4]=_0x5e60e9-_0x589934,_0x413bfa[0x5]=0x1-_0x2207b2-_0x4880cc,_0x413bfa[0x6]=_0x1c0be4+_0x378735,_0x413bfa[0x7]=0x0,_0x413bfa[0x8]=_0x10f9ab+_0x40b8a6,_0x413bfa[0x9]=_0x1c0be4-_0x378735,_0x413bfa[0xa]=0x1-_0x2207b2-_0x26107d,_0x413bfa[0xb]=0x0,_0x413bfa;},'get3DScaling':function(_0x36b50b,_0x52aef1){var _0x885d0=a0_0x40ed,_0x52aef1=null!=_0x52aef1?_0x52aef1:_0x269c03[_0x885d0(0x327)](),_0x3ef70e=_0x36b50b[0x0],_0xd74850=_0x36b50b[0x1],_0x44f0ef=_0x36b50b[0x2],_0x10fb02=_0x36b50b[0x4],_0x43d325=_0x36b50b[0x5],_0x27cfe6=_0x36b50b[0x6],_0x473ff9=_0x36b50b[0x8],_0x12d1ac=_0x36b50b[0x9],_0x36b50b=_0x36b50b[0xa];return _0x52aef1[0x0]=Math['sqrt'](_0x3ef70e*_0x3ef70e+_0xd74850*_0xd74850+_0x44f0ef*_0x44f0ef),_0x52aef1[0x1]=Math[_0x885d0(0x297)](_0x10fb02*_0x10fb02+_0x43d325*_0x43d325+_0x27cfe6*_0x27cfe6),_0x52aef1[0x2]=Math['sqrt'](_0x473ff9*_0x473ff9+_0x12d1ac*_0x12d1ac+_0x36b50b*_0x36b50b),_0x52aef1;},'getAxis':function(_0x1736b7,_0x2b7dfb,_0x75e13e){var _0x284e0e=a0_0x40ed;return _0x75e13e=null!=_0x75e13e?_0x75e13e:_0x5a940f[_0x284e0e(0x327)](),_0x2b7dfb*=0x4,(_0x75e13e[0x0]=_0x1736b7[0x0+_0x2b7dfb],_0x75e13e[0x1]=_0x1736b7[0x1+_0x2b7dfb],_0x75e13e);},'getScaling':function(_0x4eafe3,_0x2c245f){var _0x1824fd=a0_0x40ed,_0x2c245f=null!=_0x2c245f?_0x2c245f:_0x5a940f[_0x1824fd(0x327)](),_0x336578=_0x4eafe3[0x0],_0x32846f=_0x4eafe3[0x1],_0x30cabc=_0x4eafe3[0x4],_0x4eafe3=_0x4eafe3[0x5];return _0x2c245f[0x0]=Math[_0x1824fd(0x297)](_0x336578*_0x336578+_0x32846f*_0x32846f),_0x2c245f[0x1]=Math['sqrt'](_0x30cabc*_0x30cabc+_0x4eafe3*_0x4eafe3),_0x2c245f;},'getTranslation':function(_0x3b966f,_0x3974fa){var _0x49a603=a0_0x40ed;return _0x3974fa=null!=_0x3974fa?_0x3974fa:_0x5a940f[_0x49a603(0x327)](),(_0x3974fa[0x0]=_0x3b966f[0x8],_0x3974fa[0x1]=_0x3b966f[0x9],_0x3974fa);},'identity':_0x18296f,'inverse':_0x4d4d7e,'invert':_0x4d4d7e,'mul':_0xdb4794,'mulScalar':_0x5830e8,'multiply':_0xdb4794,'multiplyScalar':_0x5830e8,'negate':function(_0x4c33da,_0x1616fe){return _0x1616fe=null!=_0x1616fe?_0x1616fe:new _0x1a5361(0xc),(_0x1616fe[0x0]=-_0x4c33da[0x0],_0x1616fe[0x1]=-_0x4c33da[0x1],_0x1616fe[0x2]=-_0x4c33da[0x2],_0x1616fe[0x4]=-_0x4c33da[0x4],_0x1616fe[0x5]=-_0x4c33da[0x5],_0x1616fe[0x6]=-_0x4c33da[0x6],_0x1616fe[0x8]=-_0x4c33da[0x8],_0x1616fe[0x9]=-_0x4c33da[0x9],_0x1616fe[0xa]=-_0x4c33da[0xa],_0x1616fe);},'rotate':_0x33cfb1,'rotateX':function(_0x48b9e8,_0xc752ee,_0x14bdd7){var _0x14bdd7=null!=_0x14bdd7?_0x14bdd7:new _0x1a5361(0xc),_0x460861=_0x48b9e8[0x4],_0x18a529=_0x48b9e8[0x5],_0xe1b275=_0x48b9e8[0x6],_0xad2c84=_0x48b9e8[0x8],_0x5442ab=_0x48b9e8[0x9],_0x3d2c5f=_0x48b9e8[0xa],_0x5c9bbf=Math['cos'](_0xc752ee),_0xc752ee=Math['sin'](_0xc752ee);return _0x14bdd7[0x4]=_0x5c9bbf*_0x460861+_0xc752ee*_0xad2c84,_0x14bdd7[0x5]=_0x5c9bbf*_0x18a529+_0xc752ee*_0x5442ab,_0x14bdd7[0x6]=_0x5c9bbf*_0xe1b275+_0xc752ee*_0x3d2c5f,_0x14bdd7[0x8]=_0x5c9bbf*_0xad2c84-_0xc752ee*_0x460861,_0x14bdd7[0x9]=_0x5c9bbf*_0x5442ab-_0xc752ee*_0x18a529,_0x14bdd7[0xa]=_0x5c9bbf*_0x3d2c5f-_0xc752ee*_0xe1b275,_0x48b9e8!==_0x14bdd7&&(_0x14bdd7[0x0]=_0x48b9e8[0x0],_0x14bdd7[0x1]=_0x48b9e8[0x1],_0x14bdd7[0x2]=_0x48b9e8[0x2]),_0x14bdd7;},'rotateY':function(_0x215269,_0xfeb2ee,_0x246105){var _0x4b46c9=a0_0x40ed,_0x246105=null!=_0x246105?_0x246105:new _0x1a5361(0xc),_0x376590=_0x215269[0x0],_0x4b000c=_0x215269[0x1],_0x15e8e8=_0x215269[0x2],_0x482468=_0x215269[0x8],_0x433831=_0x215269[0x9],_0x123c3c=_0x215269[0xa],_0x4e6862=Math['cos'](_0xfeb2ee),_0xfeb2ee=Math[_0x4b46c9(0x413)](_0xfeb2ee);return _0x246105[0x0]=_0x4e6862*_0x376590-_0xfeb2ee*_0x482468,_0x246105[0x1]=_0x4e6862*_0x4b000c-_0xfeb2ee*_0x433831,_0x246105[0x2]=_0x4e6862*_0x15e8e8-_0xfeb2ee*_0x123c3c,_0x246105[0x8]=_0x4e6862*_0x482468+_0xfeb2ee*_0x376590,_0x246105[0x9]=_0x4e6862*_0x433831+_0xfeb2ee*_0x4b000c,_0x246105[0xa]=_0x4e6862*_0x123c3c+_0xfeb2ee*_0x15e8e8,_0x215269!==_0x246105&&(_0x246105[0x4]=_0x215269[0x4],_0x246105[0x5]=_0x215269[0x5],_0x246105[0x6]=_0x215269[0x6]),_0x246105;},'rotateZ':_0x33cfb1,'rotation':_0x523972,'rotationX':function(_0x5be5ac,_0x26e3c4){var _0x4ed9a6=a0_0x40ed,_0x26e3c4=null!=_0x26e3c4?_0x26e3c4:new _0x1a5361(0xc),_0x53cc71=Math[_0x4ed9a6(0x399)](_0x5be5ac),_0x5be5ac=Math[_0x4ed9a6(0x413)](_0x5be5ac);return _0x26e3c4[0x0]=0x1,_0x26e3c4[0x1]=0x0,_0x26e3c4[0x2]=0x0,_0x26e3c4[0x4]=0x0,_0x26e3c4[0x5]=_0x53cc71,_0x26e3c4[0x6]=_0x5be5ac,_0x26e3c4[0x8]=0x0,_0x26e3c4[0x9]=-_0x5be5ac,_0x26e3c4[0xa]=_0x53cc71,_0x26e3c4;},'rotationY':function(_0x4dc526,_0x5ab00a){var _0x35c332=a0_0x40ed,_0x5ab00a=null!=_0x5ab00a?_0x5ab00a:new _0x1a5361(0xc),_0x23f931=Math[_0x35c332(0x399)](_0x4dc526),_0x4dc526=Math[_0x35c332(0x413)](_0x4dc526);return _0x5ab00a[0x0]=_0x23f931,_0x5ab00a[0x1]=0x0,_0x5ab00a[0x2]=-_0x4dc526,_0x5ab00a[0x4]=0x0,_0x5ab00a[0x5]=0x1,_0x5ab00a[0x6]=0x0,_0x5ab00a[0x8]=_0x4dc526,_0x5ab00a[0x9]=0x0,_0x5ab00a[0xa]=_0x23f931,_0x5ab00a;},'rotationZ':_0x523972,'scale':function(_0x83494c,_0x42d21e,_0x1ebe9b){var _0x1ebe9b=null!=_0x1ebe9b?_0x1ebe9b:new _0x1a5361(0xc),_0x3bbbc7=_0x42d21e[0x0],_0x42d21e=_0x42d21e[0x1];return _0x1ebe9b[0x0]=_0x3bbbc7*_0x83494c[0x0],_0x1ebe9b[0x1]=_0x3bbbc7*_0x83494c[0x1],_0x1ebe9b[0x2]=_0x3bbbc7*_0x83494c[0x2],_0x1ebe9b[0x4]=_0x42d21e*_0x83494c[0x4],_0x1ebe9b[0x5]=_0x42d21e*_0x83494c[0x5],_0x1ebe9b[0x6]=_0x42d21e*_0x83494c[0x6],_0x83494c!==_0x1ebe9b&&(_0x1ebe9b[0x8]=_0x83494c[0x8],_0x1ebe9b[0x9]=_0x83494c[0x9],_0x1ebe9b[0xa]=_0x83494c[0xa]),_0x1ebe9b;},'scale3D':function(_0x3f1e10,_0x2f81c6,_0x39b7be){var _0x39b7be=null!=_0x39b7be?_0x39b7be:new _0x1a5361(0xc),_0x154b35=_0x2f81c6[0x0],_0x1ff9b5=_0x2f81c6[0x1],_0x2f81c6=_0x2f81c6[0x2];return _0x39b7be[0x0]=_0x154b35*_0x3f1e10[0x0],_0x39b7be[0x1]=_0x154b35*_0x3f1e10[0x1],_0x39b7be[0x2]=_0x154b35*_0x3f1e10[0x2],_0x39b7be[0x4]=_0x1ff9b5*_0x3f1e10[0x4],_0x39b7be[0x5]=_0x1ff9b5*_0x3f1e10[0x5],_0x39b7be[0x6]=_0x1ff9b5*_0x3f1e10[0x6],_0x39b7be[0x8]=_0x2f81c6*_0x3f1e10[0x8],_0x39b7be[0x9]=_0x2f81c6*_0x3f1e10[0x9],_0x39b7be[0xa]=_0x2f81c6*_0x3f1e10[0xa],_0x39b7be;},'scaling':function(_0x1cf3a7,_0x172f3f){return _0x172f3f=null!=_0x172f3f?_0x172f3f:new _0x1a5361(0xc),(_0x172f3f[0x0]=_0x1cf3a7[0x0],_0x172f3f[0x1]=0x0,_0x172f3f[0x2]=0x0,_0x172f3f[0x4]=0x0,_0x172f3f[0x5]=_0x1cf3a7[0x1],_0x172f3f[0x6]=0x0,_0x172f3f[0x8]=0x0,_0x172f3f[0x9]=0x0,_0x172f3f[0xa]=0x1,_0x172f3f);},'scaling3D':function(_0x22473c,_0x408fb4){return _0x408fb4=null!=_0x408fb4?_0x408fb4:new _0x1a5361(0xc),(_0x408fb4[0x0]=_0x22473c[0x0],_0x408fb4[0x1]=0x0,_0x408fb4[0x2]=0x0,_0x408fb4[0x4]=0x0,_0x408fb4[0x5]=_0x22473c[0x1],_0x408fb4[0x6]=0x0,_0x408fb4[0x8]=0x0,_0x408fb4[0x9]=0x0,_0x408fb4[0xa]=_0x22473c[0x2],_0x408fb4);},'set':function(_0x41c81b,_0x5b7757,_0x529067,_0x32d516,_0x2b62de,_0x28b7bc,_0x497fec,_0x16f078,_0x20ce8d,_0x4ed4b2){return _0x4ed4b2=null!=_0x4ed4b2?_0x4ed4b2:new _0x1a5361(0xc),(_0x4ed4b2[0x0]=_0x41c81b,_0x4ed4b2[0x1]=_0x5b7757,_0x4ed4b2[0x2]=_0x529067,_0x4ed4b2[0x3]=0x0,_0x4ed4b2[0x4]=_0x32d516,_0x4ed4b2[0x5]=_0x2b62de,_0x4ed4b2[0x6]=_0x28b7bc,_0x4ed4b2[0x7]=0x0,_0x4ed4b2[0x8]=_0x497fec,_0x4ed4b2[0x9]=_0x16f078,_0x4ed4b2[0xa]=_0x20ce8d,_0x4ed4b2[0xb]=0x0,_0x4ed4b2);},'setAxis':function(_0x205ab0,_0x93f88,_0x52641d,_0x4af0a1){return _0x205ab0=_0x4af0a1===_0x205ab0?_0x205ab0:_0x2fb4b3(_0x205ab0,_0x4af0a1),_0x4af0a1=0x4*_0x52641d,(_0x205ab0[0x0+_0x4af0a1]=_0x93f88[0x0],_0x205ab0[0x1+_0x4af0a1]=_0x93f88[0x1],_0x205ab0);},'setTranslation':function(_0x461556,_0x612784,_0x372bad){return _0x372bad=null!=_0x372bad?_0x372bad:_0x18296f(),(_0x461556!==_0x372bad&&(_0x372bad[0x0]=_0x461556[0x0],_0x372bad[0x1]=_0x461556[0x1],_0x372bad[0x2]=_0x461556[0x2],_0x372bad[0x4]=_0x461556[0x4],_0x372bad[0x5]=_0x461556[0x5],_0x372bad[0x6]=_0x461556[0x6]),_0x372bad[0x8]=_0x612784[0x0],_0x372bad[0x9]=_0x612784[0x1],_0x372bad[0xa]=0x1,_0x372bad);},'translate':function(_0x4b006c,_0x1a8d52,_0x194d70){var _0x194d70=null!=_0x194d70?_0x194d70:new _0x1a5361(0xc),_0x355259=_0x1a8d52[0x0],_0x1a8d52=_0x1a8d52[0x1],_0x244c8e=_0x4b006c[0x0],_0x156b25=_0x4b006c[0x1],_0x63f4d2=_0x4b006c[0x2],_0x1f5cef=_0x4b006c[0x4],_0x350cf0=_0x4b006c[0x5],_0xec5248=_0x4b006c[0x6],_0x158149=_0x4b006c[0x8],_0x96fbbe=_0x4b006c[0x9],_0x1bb7df=_0x4b006c[0xa];return _0x4b006c!==_0x194d70&&(_0x194d70[0x0]=_0x244c8e,_0x194d70[0x1]=_0x156b25,_0x194d70[0x2]=_0x63f4d2,_0x194d70[0x4]=_0x1f5cef,_0x194d70[0x5]=_0x350cf0,_0x194d70[0x6]=_0xec5248),_0x194d70[0x8]=_0x244c8e*_0x355259+_0x1f5cef*_0x1a8d52+_0x158149,_0x194d70[0x9]=_0x156b25*_0x355259+_0x350cf0*_0x1a8d52+_0x96fbbe,_0x194d70[0xa]=_0x63f4d2*_0x355259+_0xec5248*_0x1a8d52+_0x1bb7df,_0x194d70;},'translation':function(_0x193ca6,_0x490fa3){return _0x490fa3=null!=_0x490fa3?_0x490fa3:new _0x1a5361(0xc),(_0x490fa3[0x0]=0x1,_0x490fa3[0x1]=0x0,_0x490fa3[0x2]=0x0,_0x490fa3[0x4]=0x0,_0x490fa3[0x5]=0x1,_0x490fa3[0x6]=0x0,_0x490fa3[0x8]=_0x193ca6[0x0],_0x490fa3[0x9]=_0x193ca6[0x1],_0x490fa3[0xa]=0x1,_0x490fa3);},'transpose':function(_0x2998c8,_0x307132){var _0xcd15c2,_0xd74bd6,_0xe5b3b7,_0x2ddd22,_0x3c81aa,_0x27bb1a,_0x790f23,_0x1da33e,_0x307132=null!=_0x307132?_0x307132:new _0x1a5361(0xc);return _0x307132===_0x2998c8?(_0xcd15c2=_0x2998c8[0x1],_0x2998c8[0x1]=_0x2998c8[0x4],_0x2998c8[0x4]=_0xcd15c2,_0xcd15c2=_0x2998c8[0x2],_0x2998c8[0x2]=_0x2998c8[0x8],_0x2998c8[0x8]=_0xcd15c2,_0xcd15c2=_0x2998c8[0x6],_0x2998c8[0x6]=_0x2998c8[0x9],_0x2998c8[0x9]=_0xcd15c2):(_0xcd15c2=_0x2998c8[0x0],_0xd74bd6=_0x2998c8[0x1],_0xe5b3b7=_0x2998c8[0x2],_0x2ddd22=_0x2998c8[0x4],_0x3c81aa=_0x2998c8[0x5],_0x27bb1a=_0x2998c8[0x6],_0x790f23=_0x2998c8[0x8],_0x1da33e=_0x2998c8[0x9],_0x2998c8=_0x2998c8[0xa],_0x307132[0x0]=_0xcd15c2,_0x307132[0x1]=_0x2ddd22,_0x307132[0x2]=_0x790f23,_0x307132[0x4]=_0xd74bd6,_0x307132[0x5]=_0x3c81aa,_0x307132[0x6]=_0x1da33e,_0x307132[0x8]=_0xe5b3b7,_0x307132[0x9]=_0x27bb1a,_0x307132[0xa]=_0x2998c8),_0x307132;},'uniformScale':function(_0x2a0f7c,_0x214043,_0x5b6788){return _0x5b6788=null!=_0x5b6788?_0x5b6788:new _0x1a5361(0xc),(_0x5b6788[0x0]=_0x214043*_0x2a0f7c[0x0],_0x5b6788[0x1]=_0x214043*_0x2a0f7c[0x1],_0x5b6788[0x2]=_0x214043*_0x2a0f7c[0x2],_0x5b6788[0x4]=_0x214043*_0x2a0f7c[0x4],_0x5b6788[0x5]=_0x214043*_0x2a0f7c[0x5],_0x5b6788[0x6]=_0x214043*_0x2a0f7c[0x6],_0x2a0f7c!==_0x5b6788&&(_0x5b6788[0x8]=_0x2a0f7c[0x8],_0x5b6788[0x9]=_0x2a0f7c[0x9],_0x5b6788[0xa]=_0x2a0f7c[0xa]),_0x5b6788);},'uniformScale3D':function(_0x416d91,_0x55e842,_0x32c8de){return _0x32c8de=null!=_0x32c8de?_0x32c8de:new _0x1a5361(0xc),(_0x32c8de[0x0]=_0x55e842*_0x416d91[0x0],_0x32c8de[0x1]=_0x55e842*_0x416d91[0x1],_0x32c8de[0x2]=_0x55e842*_0x416d91[0x2],_0x32c8de[0x4]=_0x55e842*_0x416d91[0x4],_0x32c8de[0x5]=_0x55e842*_0x416d91[0x5],_0x32c8de[0x6]=_0x55e842*_0x416d91[0x6],_0x32c8de[0x8]=_0x55e842*_0x416d91[0x8],_0x32c8de[0x9]=_0x55e842*_0x416d91[0x9],_0x32c8de[0xa]=_0x55e842*_0x416d91[0xa],_0x32c8de);},'uniformScaling':function(_0x3ec519,_0x270f5b){return _0x270f5b=null!=_0x270f5b?_0x270f5b:new _0x1a5361(0xc),(_0x270f5b[0x0]=_0x3ec519,_0x270f5b[0x1]=0x0,_0x270f5b[0x2]=0x0,_0x270f5b[0x4]=0x0,_0x270f5b[0x5]=_0x3ec519,_0x270f5b[0x6]=0x0,_0x270f5b[0x8]=0x0,_0x270f5b[0x9]=0x0,_0x270f5b[0xa]=0x1,_0x270f5b);},'uniformScaling3D':function(_0x104797,_0x1bf387){return _0x1bf387=null!=_0x1bf387?_0x1bf387:new _0x1a5361(0xc),(_0x1bf387[0x0]=_0x104797,_0x1bf387[0x1]=0x0,_0x1bf387[0x2]=0x0,_0x1bf387[0x4]=0x0,_0x1bf387[0x5]=_0x104797,_0x1bf387[0x6]=0x0,_0x1bf387[0x8]=0x0,_0x1bf387[0x9]=0x0,_0x1bf387[0xa]=_0x104797,_0x1bf387);}};})(_0x505361),_0x1e163c['set'](_0x505361,_0x35ef2d)),_0x35ef2d;})(_0x172f32),'mat4':(_0x5c35ab=>{let _0x258100=_0x45d3ca['get'](_0x5c35ab);return _0x258100||(_0x258100=(_0x418257=>{var _0x3b4833=a0_0x40ed;let _0x5c5214=_0x112527(_0x418257);function _0x3882b1(_0x524c47,_0x4ec789,_0xe95d4){return _0xe95d4=null!=_0xe95d4?_0xe95d4:new _0x418257(0x10),(_0xe95d4[0x0]=_0x524c47[0x0]*_0x4ec789,_0xe95d4[0x1]=_0x524c47[0x1]*_0x4ec789,_0xe95d4[0x2]=_0x524c47[0x2]*_0x4ec789,_0xe95d4[0x3]=_0x524c47[0x3]*_0x4ec789,_0xe95d4[0x4]=_0x524c47[0x4]*_0x4ec789,_0xe95d4[0x5]=_0x524c47[0x5]*_0x4ec789,_0xe95d4[0x6]=_0x524c47[0x6]*_0x4ec789,_0xe95d4[0x7]=_0x524c47[0x7]*_0x4ec789,_0xe95d4[0x8]=_0x524c47[0x8]*_0x4ec789,_0xe95d4[0x9]=_0x524c47[0x9]*_0x4ec789,_0xe95d4[0xa]=_0x524c47[0xa]*_0x4ec789,_0xe95d4[0xb]=_0x524c47[0xb]*_0x4ec789,_0xe95d4[0xc]=_0x524c47[0xc]*_0x4ec789,_0xe95d4[0xd]=_0x524c47[0xd]*_0x4ec789,_0xe95d4[0xe]=_0x524c47[0xe]*_0x4ec789,_0xe95d4[0xf]=_0x524c47[0xf]*_0x4ec789,_0xe95d4);}var _0x43341e=_0x3882b1;function _0x41b08c(_0x3b5087,_0x3d6e25){return _0x3d6e25=null!=_0x3d6e25?_0x3d6e25:new _0x418257(0x10),(_0x3d6e25[0x0]=_0x3b5087[0x0],_0x3d6e25[0x1]=_0x3b5087[0x1],_0x3d6e25[0x2]=_0x3b5087[0x2],_0x3d6e25[0x3]=_0x3b5087[0x3],_0x3d6e25[0x4]=_0x3b5087[0x4],_0x3d6e25[0x5]=_0x3b5087[0x5],_0x3d6e25[0x6]=_0x3b5087[0x6],_0x3d6e25[0x7]=_0x3b5087[0x7],_0x3d6e25[0x8]=_0x3b5087[0x8],_0x3d6e25[0x9]=_0x3b5087[0x9],_0x3d6e25[0xa]=_0x3b5087[0xa],_0x3d6e25[0xb]=_0x3b5087[0xb],_0x3d6e25[0xc]=_0x3b5087[0xc],_0x3d6e25[0xd]=_0x3b5087[0xd],_0x3d6e25[0xe]=_0x3b5087[0xe],_0x3d6e25[0xf]=_0x3b5087[0xf],_0x3d6e25);}var _0x4f18be=_0x41b08c;function _0x340540(_0x55e382){return _0x55e382=null!=_0x55e382?_0x55e382:new _0x418257(0x10),(_0x55e382[0x0]=0x1,_0x55e382[0x1]=0x0,_0x55e382[0x2]=0x0,_0x55e382[0x3]=0x0,_0x55e382[0x4]=0x0,_0x55e382[0x5]=0x1,_0x55e382[0x6]=0x0,_0x55e382[0x7]=0x0,_0x55e382[0x8]=0x0,_0x55e382[0x9]=0x0,_0x55e382[0xa]=0x1,_0x55e382[0xb]=0x0,_0x55e382[0xc]=0x0,_0x55e382[0xd]=0x0,_0x55e382[0xe]=0x0,_0x55e382[0xf]=0x1,_0x55e382);}function _0x22de60(_0x3bf947,_0x55d569){var _0x55d569=null!=_0x55d569?_0x55d569:new _0x418257(0x10),_0x26d669=_0x3bf947[0x0],_0x704671=_0x3bf947[0x1],_0x472e35=_0x3bf947[0x2],_0x15f418=_0x3bf947[0x3],_0x50716f=_0x3bf947[0x4],_0x3b2351=_0x3bf947[0x5],_0x344c1e=_0x3bf947[0x6],_0x3a743f=_0x3bf947[0x7],_0x53f542=_0x3bf947[0x8],_0x82e532=_0x3bf947[0x9],_0x3a86f8=_0x3bf947[0xa],_0x2402a5=_0x3bf947[0xb],_0x3043f5=_0x3bf947[0xc],_0x8fba09=_0x3bf947[0xd],_0x3f17ac=_0x3bf947[0xe],_0x3bf947=_0x3bf947[0xf],_0x466da2=_0x3a86f8*_0x3bf947,_0x17f80b=_0x3f17ac*_0x2402a5,_0x1921c5=_0x344c1e*_0x3bf947,_0x1511a0=_0x3f17ac*_0x3a743f,_0x7b9507=_0x344c1e*_0x2402a5,_0x592874=_0x3a86f8*_0x3a743f,_0x557163=_0x472e35*_0x3bf947,_0x5275ff=_0x3f17ac*_0x15f418,_0x44faf7=_0x472e35*_0x2402a5,_0x40dec2=_0x3a86f8*_0x15f418,_0x1a561d=_0x472e35*_0x3a743f,_0x16425e=_0x344c1e*_0x15f418,_0x49cf8e=_0x53f542*_0x8fba09,_0x17a67a=_0x3043f5*_0x82e532,_0x43e9fc=_0x50716f*_0x8fba09,_0x103122=_0x3043f5*_0x3b2351,_0x455cee=_0x50716f*_0x82e532,_0x62768e=_0x53f542*_0x3b2351,_0x5e7018=_0x26d669*_0x8fba09,_0x32197d=_0x3043f5*_0x704671,_0x58427c=_0x26d669*_0x82e532,_0x5e02c9=_0x53f542*_0x704671,_0x3a059d=_0x26d669*_0x3b2351,_0x1d8199=_0x50716f*_0x704671,_0x17f58c=_0x466da2*_0x3b2351+_0x1511a0*_0x82e532+_0x7b9507*_0x8fba09-(_0x17f80b*_0x3b2351+_0x1921c5*_0x82e532+_0x592874*_0x8fba09),_0x469db2=_0x17f80b*_0x704671+_0x557163*_0x82e532+_0x40dec2*_0x8fba09-(_0x466da2*_0x704671+_0x5275ff*_0x82e532+_0x44faf7*_0x8fba09),_0x8fba09=_0x1921c5*_0x704671+_0x5275ff*_0x3b2351+_0x1a561d*_0x8fba09-(_0x1511a0*_0x704671+_0x557163*_0x3b2351+_0x16425e*_0x8fba09),_0x704671=_0x592874*_0x704671+_0x44faf7*_0x3b2351+_0x16425e*_0x82e532-(_0x7b9507*_0x704671+_0x40dec2*_0x3b2351+_0x1a561d*_0x82e532),_0x3b2351=0x1/(_0x26d669*_0x17f58c+_0x50716f*_0x469db2+_0x53f542*_0x8fba09+_0x3043f5*_0x704671);return _0x55d569[0x0]=_0x3b2351*_0x17f58c,_0x55d569[0x1]=_0x3b2351*_0x469db2,_0x55d569[0x2]=_0x3b2351*_0x8fba09,_0x55d569[0x3]=_0x3b2351*_0x704671,_0x55d569[0x4]=_0x3b2351*(_0x17f80b*_0x50716f+_0x1921c5*_0x53f542+_0x592874*_0x3043f5-(_0x466da2*_0x50716f+_0x1511a0*_0x53f542+_0x7b9507*_0x3043f5)),_0x55d569[0x5]=_0x3b2351*(_0x466da2*_0x26d669+_0x5275ff*_0x53f542+_0x44faf7*_0x3043f5-(_0x17f80b*_0x26d669+_0x557163*_0x53f542+_0x40dec2*_0x3043f5)),_0x55d569[0x6]=_0x3b2351*(_0x1511a0*_0x26d669+_0x557163*_0x50716f+_0x16425e*_0x3043f5-(_0x1921c5*_0x26d669+_0x5275ff*_0x50716f+_0x1a561d*_0x3043f5)),_0x55d569[0x7]=_0x3b2351*(_0x7b9507*_0x26d669+_0x40dec2*_0x50716f+_0x1a561d*_0x53f542-(_0x592874*_0x26d669+_0x44faf7*_0x50716f+_0x16425e*_0x53f542)),_0x55d569[0x8]=_0x3b2351*(_0x49cf8e*_0x3a743f+_0x103122*_0x2402a5+_0x455cee*_0x3bf947-(_0x17a67a*_0x3a743f+_0x43e9fc*_0x2402a5+_0x62768e*_0x3bf947)),_0x55d569[0x9]=_0x3b2351*(_0x17a67a*_0x15f418+_0x5e7018*_0x2402a5+_0x5e02c9*_0x3bf947-(_0x49cf8e*_0x15f418+_0x32197d*_0x2402a5+_0x58427c*_0x3bf947)),_0x55d569[0xa]=_0x3b2351*(_0x43e9fc*_0x15f418+_0x32197d*_0x3a743f+_0x3a059d*_0x3bf947-(_0x103122*_0x15f418+_0x5e7018*_0x3a743f+_0x1d8199*_0x3bf947)),_0x55d569[0xb]=_0x3b2351*(_0x62768e*_0x15f418+_0x58427c*_0x3a743f+_0x1d8199*_0x2402a5-(_0x455cee*_0x15f418+_0x5e02c9*_0x3a743f+_0x3a059d*_0x2402a5)),_0x55d569[0xc]=_0x3b2351*(_0x43e9fc*_0x3a86f8+_0x62768e*_0x3f17ac+_0x17a67a*_0x344c1e-(_0x455cee*_0x3f17ac+_0x49cf8e*_0x344c1e+_0x103122*_0x3a86f8)),_0x55d569[0xd]=_0x3b2351*(_0x58427c*_0x3f17ac+_0x49cf8e*_0x472e35+_0x32197d*_0x3a86f8-(_0x5e7018*_0x3a86f8+_0x5e02c9*_0x3f17ac+_0x17a67a*_0x472e35)),_0x55d569[0xe]=_0x3b2351*(_0x5e7018*_0x344c1e+_0x1d8199*_0x3f17ac+_0x103122*_0x472e35-(_0x3a059d*_0x3f17ac+_0x43e9fc*_0x472e35+_0x32197d*_0x344c1e)),_0x55d569[0xf]=_0x3b2351*(_0x3a059d*_0x3a86f8+_0x455cee*_0x472e35+_0x5e02c9*_0x344c1e-(_0x58427c*_0x344c1e+_0x1d8199*_0x3a86f8+_0x62768e*_0x472e35)),_0x55d569;}var _0x38d229=_0x22de60;function _0xdab86(_0x12a818,_0x1c4cce,_0x15e854){var _0x15e854=null!=_0x15e854?_0x15e854:new _0x418257(0x10),_0x22cd63=_0x12a818[0x0],_0xf230b8=_0x12a818[0x1],_0x3cabcb=_0x12a818[0x2],_0x33d860=_0x12a818[0x3],_0xe0c913=_0x12a818[0x4],_0x9b176d=_0x12a818[0x5],_0x402087=_0x12a818[0x6],_0x480d93=_0x12a818[0x7],_0xff77ac=_0x12a818[0x8],_0x438cdc=_0x12a818[0x9],_0x33ac00=_0x12a818[0xa],_0x3132c3=_0x12a818[0xb],_0x39bb71=_0x12a818[0xc],_0x397fbf=_0x12a818[0xd],_0x35c3db=_0x12a818[0xe],_0x12a818=_0x12a818[0xf],_0x4b0cb3=_0x1c4cce[0x0],_0x11ac00=_0x1c4cce[0x1],_0x358b09=_0x1c4cce[0x2],_0x3963e7=_0x1c4cce[0x3],_0x383648=_0x1c4cce[0x4],_0x2fbeb5=_0x1c4cce[0x5],_0x56f45f=_0x1c4cce[0x6],_0x584f6a=_0x1c4cce[0x7],_0x241375=_0x1c4cce[0x8],_0x1dbf39=_0x1c4cce[0x9],_0x3d27fc=_0x1c4cce[0xa],_0x3be832=_0x1c4cce[0xb],_0x3d413a=_0x1c4cce[0xc],_0xd94133=_0x1c4cce[0xd],_0xfcfecc=_0x1c4cce[0xe],_0x1c4cce=_0x1c4cce[0xf];return _0x15e854[0x0]=_0x22cd63*_0x4b0cb3+_0xe0c913*_0x11ac00+_0xff77ac*_0x358b09+_0x39bb71*_0x3963e7,_0x15e854[0x1]=_0xf230b8*_0x4b0cb3+_0x9b176d*_0x11ac00+_0x438cdc*_0x358b09+_0x397fbf*_0x3963e7,_0x15e854[0x2]=_0x3cabcb*_0x4b0cb3+_0x402087*_0x11ac00+_0x33ac00*_0x358b09+_0x35c3db*_0x3963e7,_0x15e854[0x3]=_0x33d860*_0x4b0cb3+_0x480d93*_0x11ac00+_0x3132c3*_0x358b09+_0x12a818*_0x3963e7,_0x15e854[0x4]=_0x22cd63*_0x383648+_0xe0c913*_0x2fbeb5+_0xff77ac*_0x56f45f+_0x39bb71*_0x584f6a,_0x15e854[0x5]=_0xf230b8*_0x383648+_0x9b176d*_0x2fbeb5+_0x438cdc*_0x56f45f+_0x397fbf*_0x584f6a,_0x15e854[0x6]=_0x3cabcb*_0x383648+_0x402087*_0x2fbeb5+_0x33ac00*_0x56f45f+_0x35c3db*_0x584f6a,_0x15e854[0x7]=_0x33d860*_0x383648+_0x480d93*_0x2fbeb5+_0x3132c3*_0x56f45f+_0x12a818*_0x584f6a,_0x15e854[0x8]=_0x22cd63*_0x241375+_0xe0c913*_0x1dbf39+_0xff77ac*_0x3d27fc+_0x39bb71*_0x3be832,_0x15e854[0x9]=_0xf230b8*_0x241375+_0x9b176d*_0x1dbf39+_0x438cdc*_0x3d27fc+_0x397fbf*_0x3be832,_0x15e854[0xa]=_0x3cabcb*_0x241375+_0x402087*_0x1dbf39+_0x33ac00*_0x3d27fc+_0x35c3db*_0x3be832,_0x15e854[0xb]=_0x33d860*_0x241375+_0x480d93*_0x1dbf39+_0x3132c3*_0x3d27fc+_0x12a818*_0x3be832,_0x15e854[0xc]=_0x22cd63*_0x3d413a+_0xe0c913*_0xd94133+_0xff77ac*_0xfcfecc+_0x39bb71*_0x1c4cce,_0x15e854[0xd]=_0xf230b8*_0x3d413a+_0x9b176d*_0xd94133+_0x438cdc*_0xfcfecc+_0x397fbf*_0x1c4cce,_0x15e854[0xe]=_0x3cabcb*_0x3d413a+_0x402087*_0xd94133+_0x33ac00*_0xfcfecc+_0x35c3db*_0x1c4cce,_0x15e854[0xf]=_0x33d860*_0x3d413a+_0x480d93*_0xd94133+_0x3132c3*_0xfcfecc+_0x12a818*_0x1c4cce,_0x15e854;}let _0x7737e7=_0xdab86,_0x19738c=_0x5c5214[_0x3b4833(0x327)](),_0x10e494=_0x5c5214['create'](),_0x5ccad7=_0x5c5214[_0x3b4833(0x327)]();function _0x33864f(_0x5aa154,_0x39c395,_0x122495){var _0x461274=_0x3b4833,_0x122495=null!=_0x122495?_0x122495:new _0x418257(0x10),_0x5f1a3c=_0x5aa154[0x0],_0x5864c8=_0x5aa154[0x1],_0x5aa154=_0x5aa154[0x2],_0x2dbb54=Math[_0x461274(0x297)](_0x5f1a3c*_0x5f1a3c+_0x5864c8*_0x5864c8+_0x5aa154*_0x5aa154),_0x508e11=(_0x5f1a3c/=_0x2dbb54)*_0x5f1a3c,_0x373136=(_0x5864c8/=_0x2dbb54)*_0x5864c8,_0x2dbb54=(_0x5aa154/=_0x2dbb54)*_0x5aa154,_0x1b7bcf=Math['cos'](_0x39c395),_0x39c395=Math[_0x461274(0x413)](_0x39c395),_0x4c5f22=0x1-_0x1b7bcf;return _0x122495[0x0]=_0x508e11+(0x1-_0x508e11)*_0x1b7bcf,_0x122495[0x1]=_0x5f1a3c*_0x5864c8*_0x4c5f22+_0x5aa154*_0x39c395,_0x122495[0x2]=_0x5f1a3c*_0x5aa154*_0x4c5f22-_0x5864c8*_0x39c395,_0x122495[0x3]=0x0,_0x122495[0x4]=_0x5f1a3c*_0x5864c8*_0x4c5f22-_0x5aa154*_0x39c395,_0x122495[0x5]=_0x373136+(0x1-_0x373136)*_0x1b7bcf,_0x122495[0x6]=_0x5864c8*_0x5aa154*_0x4c5f22+_0x5f1a3c*_0x39c395,_0x122495[0x7]=0x0,_0x122495[0x8]=_0x5f1a3c*_0x5aa154*_0x4c5f22+_0x5864c8*_0x39c395,_0x122495[0x9]=_0x5864c8*_0x5aa154*_0x4c5f22-_0x5f1a3c*_0x39c395,_0x122495[0xa]=_0x2dbb54+(0x1-_0x2dbb54)*_0x1b7bcf,_0x122495[0xb]=0x0,_0x122495[0xc]=0x0,_0x122495[0xd]=0x0,_0x122495[0xe]=0x0,_0x122495[0xf]=0x1,_0x122495;}function _0x2ea1c3(_0x546454,_0x1a062e,_0xff5d7f,_0xd407c5){var _0x18d6d6=_0x3b4833,_0xd407c5=null!=_0xd407c5?_0xd407c5:new _0x418257(0x10),_0x1f29e0=_0x1a062e[0x0],_0x2151b7=_0x1a062e[0x1],_0x1a062e=_0x1a062e[0x2],_0x2471ab=Math[_0x18d6d6(0x297)](_0x1f29e0*_0x1f29e0+_0x2151b7*_0x2151b7+_0x1a062e*_0x1a062e),_0x26ecad=(_0x1f29e0/=_0x2471ab)*_0x1f29e0,_0x261203=(_0x2151b7/=_0x2471ab)*_0x2151b7,_0x2471ab=(_0x1a062e/=_0x2471ab)*_0x1a062e,_0x50d83b=Math[_0x18d6d6(0x399)](_0xff5d7f),_0xff5d7f=Math[_0x18d6d6(0x413)](_0xff5d7f),_0x48bfad=0x1-_0x50d83b,_0x26ecad=_0x26ecad+(0x1-_0x26ecad)*_0x50d83b,_0x5b39e7=_0x1f29e0*_0x2151b7*_0x48bfad+_0x1a062e*_0xff5d7f,_0x432c37=_0x1f29e0*_0x1a062e*_0x48bfad-_0x2151b7*_0xff5d7f,_0x29b89b=_0x1f29e0*_0x2151b7*_0x48bfad-_0x1a062e*_0xff5d7f,_0x261203=_0x261203+(0x1-_0x261203)*_0x50d83b,_0x26e80d=_0x2151b7*_0x1a062e*_0x48bfad+_0x1f29e0*_0xff5d7f,_0x510c4c=_0x1f29e0*_0x1a062e*_0x48bfad+_0x2151b7*_0xff5d7f,_0x2151b7=_0x2151b7*_0x1a062e*_0x48bfad-_0x1f29e0*_0xff5d7f,_0x1a062e=_0x2471ab+(0x1-_0x2471ab)*_0x50d83b,_0x48bfad=_0x546454[0x0],_0x1f29e0=_0x546454[0x1],_0xff5d7f=_0x546454[0x2],_0x2471ab=_0x546454[0x3],_0x50d83b=_0x546454[0x4],_0x37d1d3=_0x546454[0x5],_0x2a549d=_0x546454[0x6],_0x210f94=_0x546454[0x7],_0x48a3e5=_0x546454[0x8],_0x46fe1f=_0x546454[0x9],_0x23a525=_0x546454[0xa],_0x56b2d5=_0x546454[0xb];return _0xd407c5[0x0]=_0x26ecad*_0x48bfad+_0x5b39e7*_0x50d83b+_0x432c37*_0x48a3e5,_0xd407c5[0x1]=_0x26ecad*_0x1f29e0+_0x5b39e7*_0x37d1d3+_0x432c37*_0x46fe1f,_0xd407c5[0x2]=_0x26ecad*_0xff5d7f+_0x5b39e7*_0x2a549d+_0x432c37*_0x23a525,_0xd407c5[0x3]=_0x26ecad*_0x2471ab+_0x5b39e7*_0x210f94+_0x432c37*_0x56b2d5,_0xd407c5[0x4]=_0x29b89b*_0x48bfad+_0x261203*_0x50d83b+_0x26e80d*_0x48a3e5,_0xd407c5[0x5]=_0x29b89b*_0x1f29e0+_0x261203*_0x37d1d3+_0x26e80d*_0x46fe1f,_0xd407c5[0x6]=_0x29b89b*_0xff5d7f+_0x261203*_0x2a549d+_0x26e80d*_0x23a525,_0xd407c5[0x7]=_0x29b89b*_0x2471ab+_0x261203*_0x210f94+_0x26e80d*_0x56b2d5,_0xd407c5[0x8]=_0x510c4c*_0x48bfad+_0x2151b7*_0x50d83b+_0x1a062e*_0x48a3e5,_0xd407c5[0x9]=_0x510c4c*_0x1f29e0+_0x2151b7*_0x37d1d3+_0x1a062e*_0x46fe1f,_0xd407c5[0xa]=_0x510c4c*_0xff5d7f+_0x2151b7*_0x2a549d+_0x1a062e*_0x23a525,_0xd407c5[0xb]=_0x510c4c*_0x2471ab+_0x2151b7*_0x210f94+_0x1a062e*_0x56b2d5,_0x546454!==_0xd407c5&&(_0xd407c5[0xc]=_0x546454[0xc],_0xd407c5[0xd]=_0x546454[0xd],_0xd407c5[0xe]=_0x546454[0xe],_0xd407c5[0xf]=_0x546454[0xf]),_0xd407c5;}return{'add':function(_0x151868,_0x5228b4,_0x2c028c){return _0x2c028c=null!=_0x2c028c?_0x2c028c:new _0x418257(0x10),(_0x2c028c[0x0]=_0x151868[0x0]+_0x5228b4[0x0],_0x2c028c[0x1]=_0x151868[0x1]+_0x5228b4[0x1],_0x2c028c[0x2]=_0x151868[0x2]+_0x5228b4[0x2],_0x2c028c[0x3]=_0x151868[0x3]+_0x5228b4[0x3],_0x2c028c[0x4]=_0x151868[0x4]+_0x5228b4[0x4],_0x2c028c[0x5]=_0x151868[0x5]+_0x5228b4[0x5],_0x2c028c[0x6]=_0x151868[0x6]+_0x5228b4[0x6],_0x2c028c[0x7]=_0x151868[0x7]+_0x5228b4[0x7],_0x2c028c[0x8]=_0x151868[0x8]+_0x5228b4[0x8],_0x2c028c[0x9]=_0x151868[0x9]+_0x5228b4[0x9],_0x2c028c[0xa]=_0x151868[0xa]+_0x5228b4[0xa],_0x2c028c[0xb]=_0x151868[0xb]+_0x5228b4[0xb],_0x2c028c[0xc]=_0x151868[0xc]+_0x5228b4[0xc],_0x2c028c[0xd]=_0x151868[0xd]+_0x5228b4[0xd],_0x2c028c[0xe]=_0x151868[0xe]+_0x5228b4[0xe],_0x2c028c[0xf]=_0x151868[0xf]+_0x5228b4[0xf],_0x2c028c);},'aim':function(_0x37cfdf,_0x3bdc62,_0x1d09bf,_0x5e495a){var _0x40f90d=_0x3b4833;return _0x5e495a=null!=_0x5e495a?_0x5e495a:new _0x418257(0x10),(_0x5c5214[_0x40f90d(0x43d)](_0x5c5214[_0x40f90d(0x259)](_0x3bdc62,_0x37cfdf,_0x5ccad7),_0x5ccad7),_0x5c5214['normalize'](_0x5c5214[_0x40f90d(0x21e)](_0x1d09bf,_0x5ccad7,_0x19738c),_0x19738c),_0x5c5214[_0x40f90d(0x43d)](_0x5c5214[_0x40f90d(0x21e)](_0x5ccad7,_0x19738c,_0x10e494),_0x10e494),_0x5e495a[0x0]=_0x19738c[0x0],_0x5e495a[0x1]=_0x19738c[0x1],_0x5e495a[0x2]=_0x19738c[0x2],_0x5e495a[0x3]=0x0,_0x5e495a[0x4]=_0x10e494[0x0],_0x5e495a[0x5]=_0x10e494[0x1],_0x5e495a[0x6]=_0x10e494[0x2],_0x5e495a[0x7]=0x0,_0x5e495a[0x8]=_0x5ccad7[0x0],_0x5e495a[0x9]=_0x5ccad7[0x1],_0x5e495a[0xa]=_0x5ccad7[0x2],_0x5e495a[0xb]=0x0,_0x5e495a[0xc]=_0x37cfdf[0x0],_0x5e495a[0xd]=_0x37cfdf[0x1],_0x5e495a[0xe]=_0x37cfdf[0x2],_0x5e495a[0xf]=0x1,_0x5e495a);},'axisRotate':_0x2ea1c3,'axisRotation':_0x33864f,'cameraAim':function(_0x4b94a2,_0x558e6f,_0x1b5251,_0x4d59a3){var _0x147480=_0x3b4833;return _0x4d59a3=null!=_0x4d59a3?_0x4d59a3:new _0x418257(0x10),(_0x5c5214[_0x147480(0x43d)](_0x5c5214[_0x147480(0x259)](_0x4b94a2,_0x558e6f,_0x5ccad7),_0x5ccad7),_0x5c5214['normalize'](_0x5c5214[_0x147480(0x21e)](_0x1b5251,_0x5ccad7,_0x19738c),_0x19738c),_0x5c5214[_0x147480(0x43d)](_0x5c5214[_0x147480(0x21e)](_0x5ccad7,_0x19738c,_0x10e494),_0x10e494),_0x4d59a3[0x0]=_0x19738c[0x0],_0x4d59a3[0x1]=_0x19738c[0x1],_0x4d59a3[0x2]=_0x19738c[0x2],_0x4d59a3[0x3]=0x0,_0x4d59a3[0x4]=_0x10e494[0x0],_0x4d59a3[0x5]=_0x10e494[0x1],_0x4d59a3[0x6]=_0x10e494[0x2],_0x4d59a3[0x7]=0x0,_0x4d59a3[0x8]=_0x5ccad7[0x0],_0x4d59a3[0x9]=_0x5ccad7[0x1],_0x4d59a3[0xa]=_0x5ccad7[0x2],_0x4d59a3[0xb]=0x0,_0x4d59a3[0xc]=_0x4b94a2[0x0],_0x4d59a3[0xd]=_0x4b94a2[0x1],_0x4d59a3[0xe]=_0x4b94a2[0x2],_0x4d59a3[0xf]=0x1,_0x4d59a3);},'clone':_0x4f18be,'copy':_0x41b08c,'create':function(_0x2df4be,_0x594b93,_0x49ae53,_0xf1cba0,_0x1bff1c,_0x46cd97,_0x2023e1,_0x46939c,_0x4bb02c,_0x29dbb3,_0x2d6e00,_0x12339e,_0x147649,_0x28a294,_0x5b994b,_0x54b1b1){var _0x2f17bc=new _0x418257(0x10);return void 0x0!==_0x2df4be&&(_0x2f17bc[0x0]=_0x2df4be,void 0x0!==_0x594b93)&&(_0x2f17bc[0x1]=_0x594b93,void 0x0!==_0x49ae53)&&(_0x2f17bc[0x2]=_0x49ae53,void 0x0!==_0xf1cba0)&&(_0x2f17bc[0x3]=_0xf1cba0,void 0x0!==_0x1bff1c)&&(_0x2f17bc[0x4]=_0x1bff1c,void 0x0!==_0x46cd97)&&(_0x2f17bc[0x5]=_0x46cd97,void 0x0!==_0x2023e1)&&(_0x2f17bc[0x6]=_0x2023e1,void 0x0!==_0x46939c)&&(_0x2f17bc[0x7]=_0x46939c,void 0x0!==_0x4bb02c)&&(_0x2f17bc[0x8]=_0x4bb02c,void 0x0!==_0x29dbb3)&&(_0x2f17bc[0x9]=_0x29dbb3,void 0x0!==_0x2d6e00)&&(_0x2f17bc[0xa]=_0x2d6e00,void 0x0!==_0x12339e)&&(_0x2f17bc[0xb]=_0x12339e,void 0x0!==_0x147649)&&(_0x2f17bc[0xc]=_0x147649,void 0x0!==_0x28a294)&&(_0x2f17bc[0xd]=_0x28a294,void 0x0!==_0x5b994b)&&(_0x2f17bc[0xe]=_0x5b994b,void 0x0!==_0x54b1b1)&&(_0x2f17bc[0xf]=_0x54b1b1),_0x2f17bc;},'determinant':function(_0x22844e){var _0xbfdc3d=_0x22844e[0x0],_0x569bfb=_0x22844e[0x1],_0x5f501c=_0x22844e[0x2],_0x16fcde=_0x22844e[0x3],_0x424f05=_0x22844e[0x5],_0x1b9317=_0x22844e[0x6],_0x54f37a=_0x22844e[0x7],_0x27401e=_0x22844e[0x9],_0x4df43a=_0x22844e[0xa],_0x55ca19=_0x22844e[0xb],_0x586ad7=_0x22844e[0xd],_0x192e69=_0x22844e[0xe],_0x472a67=_0x22844e[0xf],_0x543404=_0x4df43a*_0x472a67,_0x54843a=_0x192e69*_0x55ca19,_0x6b841c=_0x1b9317*_0x472a67,_0x50bd91=_0x192e69*_0x54f37a,_0x29f6f2=_0x1b9317*_0x55ca19,_0x2a131f=_0x4df43a*_0x54f37a,_0x472a67=_0x5f501c*_0x472a67,_0x192e69=_0x192e69*_0x16fcde,_0x55ca19=_0x5f501c*_0x55ca19,_0x4df43a=_0x4df43a*_0x16fcde,_0x5f501c=_0x5f501c*_0x54f37a,_0x54f37a=_0x1b9317*_0x16fcde;return _0xbfdc3d*(_0x543404*_0x424f05+_0x50bd91*_0x27401e+_0x29f6f2*_0x586ad7-(_0x54843a*_0x424f05+_0x6b841c*_0x27401e+_0x2a131f*_0x586ad7))+_0x22844e[0x4]*(_0x54843a*_0x569bfb+_0x472a67*_0x27401e+_0x4df43a*_0x586ad7-(_0x543404*_0x569bfb+_0x192e69*_0x27401e+_0x55ca19*_0x586ad7))+_0x22844e[0x8]*(_0x6b841c*_0x569bfb+_0x192e69*_0x424f05+_0x5f501c*_0x586ad7-(_0x50bd91*_0x569bfb+_0x472a67*_0x424f05+_0x54f37a*_0x586ad7))+_0x22844e[0xc]*(_0x2a131f*_0x569bfb+_0x55ca19*_0x424f05+_0x54f37a*_0x27401e-(_0x29f6f2*_0x569bfb+_0x4df43a*_0x424f05+_0x5f501c*_0x27401e));},'equals':function(_0x5ad122,_0xde52b7){return _0x5ad122[0x0]===_0xde52b7[0x0]&&_0x5ad122[0x1]===_0xde52b7[0x1]&&_0x5ad122[0x2]===_0xde52b7[0x2]&&_0x5ad122[0x3]===_0xde52b7[0x3]&&_0x5ad122[0x4]===_0xde52b7[0x4]&&_0x5ad122[0x5]===_0xde52b7[0x5]&&_0x5ad122[0x6]===_0xde52b7[0x6]&&_0x5ad122[0x7]===_0xde52b7[0x7]&&_0x5ad122[0x8]===_0xde52b7[0x8]&&_0x5ad122[0x9]===_0xde52b7[0x9]&&_0x5ad122[0xa]===_0xde52b7[0xa]&&_0x5ad122[0xb]===_0xde52b7[0xb]&&_0x5ad122[0xc]===_0xde52b7[0xc]&&_0x5ad122[0xd]===_0xde52b7[0xd]&&_0x5ad122[0xe]===_0xde52b7[0xe]&&_0x5ad122[0xf]===_0xde52b7[0xf];},'equalsApproximately':function(_0x296fdb,_0x3425df){var _0x1c341a=_0x3b4833;return Math[_0x1c341a(0x32b)](_0x296fdb[0x0]-_0x3425df[0x0])<_0x4e5402&&Math[_0x1c341a(0x32b)](_0x296fdb[0x1]-_0x3425df[0x1])<_0x4e5402&&Math[_0x1c341a(0x32b)](_0x296fdb[0x2]-_0x3425df[0x2])<_0x4e5402&&Math[_0x1c341a(0x32b)](_0x296fdb[0x3]-_0x3425df[0x3])<_0x4e5402&&Math[_0x1c341a(0x32b)](_0x296fdb[0x4]-_0x3425df[0x4])<_0x4e5402&&Math[_0x1c341a(0x32b)](_0x296fdb[0x5]-_0x3425df[0x5])<_0x4e5402&&Math['abs'](_0x296fdb[0x6]-_0x3425df[0x6])<_0x4e5402&&Math[_0x1c341a(0x32b)](_0x296fdb[0x7]-_0x3425df[0x7])<_0x4e5402&&Math[_0x1c341a(0x32b)](_0x296fdb[0x8]-_0x3425df[0x8])<_0x4e5402&&Math[_0x1c341a(0x32b)](_0x296fdb[0x9]-_0x3425df[0x9])<_0x4e5402&&Math['abs'](_0x296fdb[0xa]-_0x3425df[0xa])<_0x4e5402&&Math['abs'](_0x296fdb[0xb]-_0x3425df[0xb])<_0x4e5402&&Math[_0x1c341a(0x32b)](_0x296fdb[0xc]-_0x3425df[0xc])<_0x4e5402&&Math['abs'](_0x296fdb[0xd]-_0x3425df[0xd])<_0x4e5402&&Math[_0x1c341a(0x32b)](_0x296fdb[0xe]-_0x3425df[0xe])<_0x4e5402&&Math[_0x1c341a(0x32b)](_0x296fdb[0xf]-_0x3425df[0xf])<_0x4e5402;},'fromMat3':function(_0x359bdf,_0x51b19e){return _0x51b19e=null!=_0x51b19e?_0x51b19e:new _0x418257(0x10),(_0x51b19e[0x0]=_0x359bdf[0x0],_0x51b19e[0x1]=_0x359bdf[0x1],_0x51b19e[0x2]=_0x359bdf[0x2],_0x51b19e[0x3]=0x0,_0x51b19e[0x4]=_0x359bdf[0x4],_0x51b19e[0x5]=_0x359bdf[0x5],_0x51b19e[0x6]=_0x359bdf[0x6],_0x51b19e[0x7]=0x0,_0x51b19e[0x8]=_0x359bdf[0x8],_0x51b19e[0x9]=_0x359bdf[0x9],_0x51b19e[0xa]=_0x359bdf[0xa],_0x51b19e[0xb]=0x0,_0x51b19e[0xc]=0x0,_0x51b19e[0xd]=0x0,_0x51b19e[0xe]=0x0,_0x51b19e[0xf]=0x1,_0x51b19e);},'fromQuat':function(_0x33e94a,_0x32e47e){var _0x32e47e=null!=_0x32e47e?_0x32e47e:new _0x418257(0x10),_0x292b09=_0x33e94a[0x0],_0x1b620b=_0x33e94a[0x1],_0x2c7399=_0x33e94a[0x2],_0x33e94a=_0x33e94a[0x3],_0x5c4cfd=_0x292b09+_0x292b09,_0x375a11=_0x1b620b+_0x1b620b,_0x2348c2=_0x2c7399+_0x2c7399,_0x292b09=_0x292b09*_0x5c4cfd,_0x41447a=_0x1b620b*_0x5c4cfd,_0x1b620b=_0x1b620b*_0x375a11,_0x3477d6=_0x2c7399*_0x5c4cfd,_0x318fef=_0x2c7399*_0x375a11,_0x2c7399=_0x2c7399*_0x2348c2,_0x5c4cfd=_0x33e94a*_0x5c4cfd,_0x375a11=_0x33e94a*_0x375a11,_0x33e94a=_0x33e94a*_0x2348c2;return _0x32e47e[0x0]=0x1-_0x1b620b-_0x2c7399,_0x32e47e[0x1]=_0x41447a+_0x33e94a,_0x32e47e[0x2]=_0x3477d6-_0x375a11,_0x32e47e[0x3]=0x0,_0x32e47e[0x4]=_0x41447a-_0x33e94a,_0x32e47e[0x5]=0x1-_0x292b09-_0x2c7399,_0x32e47e[0x6]=_0x318fef+_0x5c4cfd,_0x32e47e[0x7]=0x0,_0x32e47e[0x8]=_0x3477d6+_0x375a11,_0x32e47e[0x9]=_0x318fef-_0x5c4cfd,_0x32e47e[0xa]=0x1-_0x292b09-_0x1b620b,_0x32e47e[0xb]=0x0,_0x32e47e[0xc]=0x0,_0x32e47e[0xd]=0x0,_0x32e47e[0xe]=0x0,_0x32e47e[0xf]=0x1,_0x32e47e;},'frustum':function(_0x5c2adb,_0x49ab43,_0x19ed64,_0x1cbddd,_0x5c6faf,_0x4764ce,_0x58e068){var _0x58e068=null!=_0x58e068?_0x58e068:new _0x418257(0x10),_0x5978f2=_0x49ab43-_0x5c2adb,_0x5efcda=_0x1cbddd-_0x19ed64,_0x58c799=_0x5c6faf-_0x4764ce;return _0x58e068[0x0]=0x2*_0x5c6faf/_0x5978f2,_0x58e068[0x1]=0x0,_0x58e068[0x2]=0x0,_0x58e068[0x3]=0x0,_0x58e068[0x4]=0x0,_0x58e068[0x5]=0x2*_0x5c6faf/_0x5efcda,_0x58e068[0x6]=0x0,_0x58e068[0x7]=0x0,_0x58e068[0x8]=(_0x5c2adb+_0x49ab43)/_0x5978f2,_0x58e068[0x9]=(_0x1cbddd+_0x19ed64)/_0x5efcda,_0x58e068[0xa]=_0x4764ce/_0x58c799,_0x58e068[0xb]=-0x1,_0x58e068[0xc]=0x0,_0x58e068[0xd]=0x0,_0x58e068[0xe]=_0x5c6faf*_0x4764ce/_0x58c799,_0x58e068[0xf]=0x0,_0x58e068;},'frustumReverseZ':function(_0x35201b,_0x8f76d4,_0x478cf0,_0x41ca4d,_0x700d04,_0x256f73=Infinity,_0x533630){var _0x533630=null!=_0x533630?_0x533630:new _0x418257(0x10),_0x172e23=_0x8f76d4-_0x35201b,_0x5564ee=_0x41ca4d-_0x478cf0;return _0x533630[0x0]=0x2*_0x700d04/_0x172e23,_0x533630[0x1]=0x0,_0x533630[0x2]=0x0,_0x533630[0x3]=0x0,_0x533630[0x4]=0x0,_0x533630[0x5]=0x2*_0x700d04/_0x5564ee,_0x533630[0x6]=0x0,_0x533630[0x7]=0x0,_0x533630[0x8]=(_0x35201b+_0x8f76d4)/_0x172e23,_0x533630[0x9]=(_0x41ca4d+_0x478cf0)/_0x5564ee,_0x533630[0xb]=-0x1,_0x533630[0xc]=0x0,_0x533630[0xd]=0x0,_0x533630[0xf]=0x0,Infinity===_0x256f73?(_0x533630[0xa]=0x0,_0x533630[0xe]=_0x700d04):(_0x533630[0xa]=_0x700d04*(_0x35201b=0x1/(_0x256f73-_0x700d04)),_0x533630[0xe]=_0x256f73*_0x700d04*_0x35201b),_0x533630;},'getAxis':function(_0x21b87b,_0x2522ba,_0x420885){return _0x420885=null!=_0x420885?_0x420885:_0x5c5214['create'](),_0x2522ba*=0x4,(_0x420885[0x0]=_0x21b87b[0x0+_0x2522ba],_0x420885[0x1]=_0x21b87b[0x1+_0x2522ba],_0x420885[0x2]=_0x21b87b[0x2+_0x2522ba],_0x420885);},'getScaling':function(_0x314744,_0xab9ecb){var _0xded1e8=_0x3b4833,_0xab9ecb=null!=_0xab9ecb?_0xab9ecb:_0x5c5214[_0xded1e8(0x327)](),_0x2c44fd=_0x314744[0x0],_0x1fa3dc=_0x314744[0x1],_0x537a3f=_0x314744[0x2],_0x416fd6=_0x314744[0x4],_0x42e74b=_0x314744[0x5],_0x344baa=_0x314744[0x6],_0x28fb37=_0x314744[0x8],_0xad3834=_0x314744[0x9],_0x314744=_0x314744[0xa];return _0xab9ecb[0x0]=Math[_0xded1e8(0x297)](_0x2c44fd*_0x2c44fd+_0x1fa3dc*_0x1fa3dc+_0x537a3f*_0x537a3f),_0xab9ecb[0x1]=Math[_0xded1e8(0x297)](_0x416fd6*_0x416fd6+_0x42e74b*_0x42e74b+_0x344baa*_0x344baa),_0xab9ecb[0x2]=Math[_0xded1e8(0x297)](_0x28fb37*_0x28fb37+_0xad3834*_0xad3834+_0x314744*_0x314744),_0xab9ecb;},'getTranslation':function(_0x2d7806,_0x29082c){var _0x1e4f26=_0x3b4833;return _0x29082c=null!=_0x29082c?_0x29082c:_0x5c5214[_0x1e4f26(0x327)](),(_0x29082c[0x0]=_0x2d7806[0xc],_0x29082c[0x1]=_0x2d7806[0xd],_0x29082c[0x2]=_0x2d7806[0xe],_0x29082c);},'identity':_0x340540,'inverse':_0x22de60,'invert':_0x38d229,'lookAt':function(_0x4fb59b,_0x2e9a4c,_0x31d146,_0x3a5c0a){var _0x412c2d=_0x3b4833;return _0x3a5c0a=null!=_0x3a5c0a?_0x3a5c0a:new _0x418257(0x10),(_0x5c5214[_0x412c2d(0x43d)](_0x5c5214[_0x412c2d(0x259)](_0x4fb59b,_0x2e9a4c,_0x5ccad7),_0x5ccad7),_0x5c5214['normalize'](_0x5c5214[_0x412c2d(0x21e)](_0x31d146,_0x5ccad7,_0x19738c),_0x19738c),_0x5c5214['normalize'](_0x5c5214[_0x412c2d(0x21e)](_0x5ccad7,_0x19738c,_0x10e494),_0x10e494),_0x3a5c0a[0x0]=_0x19738c[0x0],_0x3a5c0a[0x1]=_0x10e494[0x0],_0x3a5c0a[0x2]=_0x5ccad7[0x0],_0x3a5c0a[0x3]=0x0,_0x3a5c0a[0x4]=_0x19738c[0x1],_0x3a5c0a[0x5]=_0x10e494[0x1],_0x3a5c0a[0x6]=_0x5ccad7[0x1],_0x3a5c0a[0x7]=0x0,_0x3a5c0a[0x8]=_0x19738c[0x2],_0x3a5c0a[0x9]=_0x10e494[0x2],_0x3a5c0a[0xa]=_0x5ccad7[0x2],_0x3a5c0a[0xb]=0x0,_0x3a5c0a[0xc]=-(_0x19738c[0x0]*_0x4fb59b[0x0]+_0x19738c[0x1]*_0x4fb59b[0x1]+_0x19738c[0x2]*_0x4fb59b[0x2]),_0x3a5c0a[0xd]=-(_0x10e494[0x0]*_0x4fb59b[0x0]+_0x10e494[0x1]*_0x4fb59b[0x1]+_0x10e494[0x2]*_0x4fb59b[0x2]),_0x3a5c0a[0xe]=-(_0x5ccad7[0x0]*_0x4fb59b[0x0]+_0x5ccad7[0x1]*_0x4fb59b[0x1]+_0x5ccad7[0x2]*_0x4fb59b[0x2]),_0x3a5c0a[0xf]=0x1,_0x3a5c0a);},'mul':_0x7737e7,'mulScalar':_0x43341e,'multiply':_0xdab86,'multiplyScalar':_0x3882b1,'negate':function(_0x1acfa4,_0x6843be){return _0x6843be=null!=_0x6843be?_0x6843be:new _0x418257(0x10),(_0x6843be[0x0]=-_0x1acfa4[0x0],_0x6843be[0x1]=-_0x1acfa4[0x1],_0x6843be[0x2]=-_0x1acfa4[0x2],_0x6843be[0x3]=-_0x1acfa4[0x3],_0x6843be[0x4]=-_0x1acfa4[0x4],_0x6843be[0x5]=-_0x1acfa4[0x5],_0x6843be[0x6]=-_0x1acfa4[0x6],_0x6843be[0x7]=-_0x1acfa4[0x7],_0x6843be[0x8]=-_0x1acfa4[0x8],_0x6843be[0x9]=-_0x1acfa4[0x9],_0x6843be[0xa]=-_0x1acfa4[0xa],_0x6843be[0xb]=-_0x1acfa4[0xb],_0x6843be[0xc]=-_0x1acfa4[0xc],_0x6843be[0xd]=-_0x1acfa4[0xd],_0x6843be[0xe]=-_0x1acfa4[0xe],_0x6843be[0xf]=-_0x1acfa4[0xf],_0x6843be);},'ortho':function(_0x1ca709,_0x470032,_0x45d46f,_0x479cdf,_0x49ed03,_0x2689aa,_0x55c801){return _0x55c801=null!=_0x55c801?_0x55c801:new _0x418257(0x10),(_0x55c801[0x0]=0x2/(_0x470032-_0x1ca709),_0x55c801[0x1]=0x0,_0x55c801[0x2]=0x0,_0x55c801[0x3]=0x0,_0x55c801[0x4]=0x0,_0x55c801[0x5]=0x2/(_0x479cdf-_0x45d46f),_0x55c801[0x6]=0x0,_0x55c801[0x7]=0x0,_0x55c801[0x8]=0x0,_0x55c801[0x9]=0x0,_0x55c801[0xa]=0x1/(_0x49ed03-_0x2689aa),_0x55c801[0xb]=0x0,_0x55c801[0xc]=(_0x470032+_0x1ca709)/(_0x1ca709-_0x470032),_0x55c801[0xd]=(_0x479cdf+_0x45d46f)/(_0x45d46f-_0x479cdf),_0x55c801[0xe]=_0x49ed03/(_0x49ed03-_0x2689aa),_0x55c801[0xf]=0x1,_0x55c801);},'perspective':function(_0x309199,_0x381d64,_0x46b49b,_0x1cfc5f,_0x1aeef1){var _0x3b1951=_0x3b4833;return _0x1aeef1=null!=_0x1aeef1?_0x1aeef1:new _0x418257(0x10),_0x309199=Math[_0x3b1951(0x1b6)](0.5*Math['PI']-0.5*_0x309199),(_0x1aeef1[0x0]=_0x309199/_0x381d64,_0x1aeef1[0x1]=0x0,_0x1aeef1[0x2]=0x0,_0x1aeef1[0x3]=0x0,_0x1aeef1[0x4]=0x0,_0x1aeef1[0x5]=_0x309199,_0x1aeef1[0x6]=0x0,_0x1aeef1[0x7]=0x0,_0x1aeef1[0x8]=0x0,_0x1aeef1[0x9]=0x0,_0x1aeef1[0xb]=-0x1,_0x1aeef1[0xc]=0x0,_0x1aeef1[0xd]=0x0,_0x1aeef1[0xf]=0x0,Number[_0x3b1951(0x37e)](_0x1cfc5f)?(_0x1aeef1[0xa]=_0x1cfc5f*(_0x381d64=0x1/(_0x46b49b-_0x1cfc5f)),_0x1aeef1[0xe]=_0x1cfc5f*_0x46b49b*_0x381d64):(_0x1aeef1[0xa]=-0x1,_0x1aeef1[0xe]=-_0x46b49b),_0x1aeef1);},'perspectiveReverseZ':function(_0x40340b,_0x20aa65,_0x3b6787,_0xa5c768=Infinity,_0x2ab9cf){var _0x11f77f=_0x3b4833;return _0x2ab9cf=null!=_0x2ab9cf?_0x2ab9cf:new _0x418257(0x10),_0x40340b=0x1/Math[_0x11f77f(0x1b6)](0.5*_0x40340b),(_0x2ab9cf[0x0]=_0x40340b/_0x20aa65,_0x2ab9cf[0x1]=0x0,_0x2ab9cf[0x2]=0x0,_0x2ab9cf[0x3]=0x0,_0x2ab9cf[0x4]=0x0,_0x2ab9cf[0x5]=_0x40340b,_0x2ab9cf[0x6]=0x0,_0x2ab9cf[0x7]=0x0,_0x2ab9cf[0x8]=0x0,_0x2ab9cf[0x9]=0x0,_0x2ab9cf[0xb]=-0x1,_0x2ab9cf[0xc]=0x0,_0x2ab9cf[0xd]=0x0,_0x2ab9cf[0xf]=0x0,Infinity===_0xa5c768?(_0x2ab9cf[0xa]=0x0,_0x2ab9cf[0xe]=_0x3b6787):(_0x2ab9cf[0xa]=_0x3b6787*(_0x20aa65=0x1/(_0xa5c768-_0x3b6787)),_0x2ab9cf[0xe]=_0xa5c768*_0x3b6787*_0x20aa65),_0x2ab9cf);},'rotate':_0x2ea1c3,'rotateX':function(_0x2d845c,_0x54b6d4,_0x1fd3c9){var _0x24917c=_0x3b4833,_0x1fd3c9=null!=_0x1fd3c9?_0x1fd3c9:new _0x418257(0x10),_0x3d8bbc=_0x2d845c[0x4],_0x36c29a=_0x2d845c[0x5],_0x446fa8=_0x2d845c[0x6],_0x2e0b07=_0x2d845c[0x7],_0x58bc51=_0x2d845c[0x8],_0x5905af=_0x2d845c[0x9],_0x73366a=_0x2d845c[0xa],_0x3a0102=_0x2d845c[0xb],_0x94c0a9=Math[_0x24917c(0x399)](_0x54b6d4),_0x54b6d4=Math[_0x24917c(0x413)](_0x54b6d4);return _0x1fd3c9[0x4]=_0x94c0a9*_0x3d8bbc+_0x54b6d4*_0x58bc51,_0x1fd3c9[0x5]=_0x94c0a9*_0x36c29a+_0x54b6d4*_0x5905af,_0x1fd3c9[0x6]=_0x94c0a9*_0x446fa8+_0x54b6d4*_0x73366a,_0x1fd3c9[0x7]=_0x94c0a9*_0x2e0b07+_0x54b6d4*_0x3a0102,_0x1fd3c9[0x8]=_0x94c0a9*_0x58bc51-_0x54b6d4*_0x3d8bbc,_0x1fd3c9[0x9]=_0x94c0a9*_0x5905af-_0x54b6d4*_0x36c29a,_0x1fd3c9[0xa]=_0x94c0a9*_0x73366a-_0x54b6d4*_0x446fa8,_0x1fd3c9[0xb]=_0x94c0a9*_0x3a0102-_0x54b6d4*_0x2e0b07,_0x2d845c!==_0x1fd3c9&&(_0x1fd3c9[0x0]=_0x2d845c[0x0],_0x1fd3c9[0x1]=_0x2d845c[0x1],_0x1fd3c9[0x2]=_0x2d845c[0x2],_0x1fd3c9[0x3]=_0x2d845c[0x3],_0x1fd3c9[0xc]=_0x2d845c[0xc],_0x1fd3c9[0xd]=_0x2d845c[0xd],_0x1fd3c9[0xe]=_0x2d845c[0xe],_0x1fd3c9[0xf]=_0x2d845c[0xf]),_0x1fd3c9;},'rotateY':function(_0x28e023,_0x4fb464,_0x507fe2){var _0x507fe2=null!=_0x507fe2?_0x507fe2:new _0x418257(0x10),_0x353744=_0x28e023[0x0],_0x55863d=_0x28e023[0x1],_0x57c1bc=_0x28e023[0x2],_0x5c5294=_0x28e023[0x3],_0x1cf443=_0x28e023[0x8],_0x110c7f=_0x28e023[0x9],_0x12d37f=_0x28e023[0xa],_0x1d681a=_0x28e023[0xb],_0x468f1c=Math['cos'](_0x4fb464),_0x4fb464=Math['sin'](_0x4fb464);return _0x507fe2[0x0]=_0x468f1c*_0x353744-_0x4fb464*_0x1cf443,_0x507fe2[0x1]=_0x468f1c*_0x55863d-_0x4fb464*_0x110c7f,_0x507fe2[0x2]=_0x468f1c*_0x57c1bc-_0x4fb464*_0x12d37f,_0x507fe2[0x3]=_0x468f1c*_0x5c5294-_0x4fb464*_0x1d681a,_0x507fe2[0x8]=_0x468f1c*_0x1cf443+_0x4fb464*_0x353744,_0x507fe2[0x9]=_0x468f1c*_0x110c7f+_0x4fb464*_0x55863d,_0x507fe2[0xa]=_0x468f1c*_0x12d37f+_0x4fb464*_0x57c1bc,_0x507fe2[0xb]=_0x468f1c*_0x1d681a+_0x4fb464*_0x5c5294,_0x28e023!==_0x507fe2&&(_0x507fe2[0x4]=_0x28e023[0x4],_0x507fe2[0x5]=_0x28e023[0x5],_0x507fe2[0x6]=_0x28e023[0x6],_0x507fe2[0x7]=_0x28e023[0x7],_0x507fe2[0xc]=_0x28e023[0xc],_0x507fe2[0xd]=_0x28e023[0xd],_0x507fe2[0xe]=_0x28e023[0xe],_0x507fe2[0xf]=_0x28e023[0xf]),_0x507fe2;},'rotateZ':function(_0x3fc911,_0x1c3b30,_0x5ca13c){var _0x310a5c=_0x3b4833,_0x5ca13c=null!=_0x5ca13c?_0x5ca13c:new _0x418257(0x10),_0x2105f2=_0x3fc911[0x0],_0x1e383c=_0x3fc911[0x1],_0x20051b=_0x3fc911[0x2],_0x4e303a=_0x3fc911[0x3],_0x4e2153=_0x3fc911[0x4],_0x2fe21e=_0x3fc911[0x5],_0x4ff89a=_0x3fc911[0x6],_0x428154=_0x3fc911[0x7],_0x47518d=Math[_0x310a5c(0x399)](_0x1c3b30),_0x1c3b30=Math[_0x310a5c(0x413)](_0x1c3b30);return _0x5ca13c[0x0]=_0x47518d*_0x2105f2+_0x1c3b30*_0x4e2153,_0x5ca13c[0x1]=_0x47518d*_0x1e383c+_0x1c3b30*_0x2fe21e,_0x5ca13c[0x2]=_0x47518d*_0x20051b+_0x1c3b30*_0x4ff89a,_0x5ca13c[0x3]=_0x47518d*_0x4e303a+_0x1c3b30*_0x428154,_0x5ca13c[0x4]=_0x47518d*_0x4e2153-_0x1c3b30*_0x2105f2,_0x5ca13c[0x5]=_0x47518d*_0x2fe21e-_0x1c3b30*_0x1e383c,_0x5ca13c[0x6]=_0x47518d*_0x4ff89a-_0x1c3b30*_0x20051b,_0x5ca13c[0x7]=_0x47518d*_0x428154-_0x1c3b30*_0x4e303a,_0x3fc911!==_0x5ca13c&&(_0x5ca13c[0x8]=_0x3fc911[0x8],_0x5ca13c[0x9]=_0x3fc911[0x9],_0x5ca13c[0xa]=_0x3fc911[0xa],_0x5ca13c[0xb]=_0x3fc911[0xb],_0x5ca13c[0xc]=_0x3fc911[0xc],_0x5ca13c[0xd]=_0x3fc911[0xd],_0x5ca13c[0xe]=_0x3fc911[0xe],_0x5ca13c[0xf]=_0x3fc911[0xf]),_0x5ca13c;},'rotation':_0x33864f,'rotationX':function(_0x1d5e86,_0x4a2ef9){var _0x50f0c1=_0x3b4833,_0x4a2ef9=null!=_0x4a2ef9?_0x4a2ef9:new _0x418257(0x10),_0xcf90f2=Math['cos'](_0x1d5e86),_0x1d5e86=Math[_0x50f0c1(0x413)](_0x1d5e86);return _0x4a2ef9[0x0]=0x1,_0x4a2ef9[0x1]=0x0,_0x4a2ef9[0x2]=0x0,_0x4a2ef9[0x3]=0x0,_0x4a2ef9[0x4]=0x0,_0x4a2ef9[0x5]=_0xcf90f2,_0x4a2ef9[0x6]=_0x1d5e86,_0x4a2ef9[0x7]=0x0,_0x4a2ef9[0x8]=0x0,_0x4a2ef9[0x9]=-_0x1d5e86,_0x4a2ef9[0xa]=_0xcf90f2,_0x4a2ef9[0xb]=0x0,_0x4a2ef9[0xc]=0x0,_0x4a2ef9[0xd]=0x0,_0x4a2ef9[0xe]=0x0,_0x4a2ef9[0xf]=0x1,_0x4a2ef9;},'rotationY':function(_0x2991d2,_0x4893de){var _0xafd0c5=_0x3b4833,_0x4893de=null!=_0x4893de?_0x4893de:new _0x418257(0x10),_0x3dada1=Math[_0xafd0c5(0x399)](_0x2991d2),_0x2991d2=Math['sin'](_0x2991d2);return _0x4893de[0x0]=_0x3dada1,_0x4893de[0x1]=0x0,_0x4893de[0x2]=-_0x2991d2,_0x4893de[0x3]=0x0,_0x4893de[0x4]=0x0,_0x4893de[0x5]=0x1,_0x4893de[0x6]=0x0,_0x4893de[0x7]=0x0,_0x4893de[0x8]=_0x2991d2,_0x4893de[0x9]=0x0,_0x4893de[0xa]=_0x3dada1,_0x4893de[0xb]=0x0,_0x4893de[0xc]=0x0,_0x4893de[0xd]=0x0,_0x4893de[0xe]=0x0,_0x4893de[0xf]=0x1,_0x4893de;},'rotationZ':function(_0x7f11e0,_0x1af930){var _0x456b3a=_0x3b4833,_0x1af930=null!=_0x1af930?_0x1af930:new _0x418257(0x10),_0xa6d9c9=Math['cos'](_0x7f11e0),_0x7f11e0=Math[_0x456b3a(0x413)](_0x7f11e0);return _0x1af930[0x0]=_0xa6d9c9,_0x1af930[0x1]=_0x7f11e0,_0x1af930[0x2]=0x0,_0x1af930[0x3]=0x0,_0x1af930[0x4]=-_0x7f11e0,_0x1af930[0x5]=_0xa6d9c9,_0x1af930[0x6]=0x0,_0x1af930[0x7]=0x0,_0x1af930[0x8]=0x0,_0x1af930[0x9]=0x0,_0x1af930[0xa]=0x1,_0x1af930[0xb]=0x0,_0x1af930[0xc]=0x0,_0x1af930[0xd]=0x0,_0x1af930[0xe]=0x0,_0x1af930[0xf]=0x1,_0x1af930;},'scale':function(_0x6bc6c1,_0x2057dd,_0x32ffb0){var _0x32ffb0=null!=_0x32ffb0?_0x32ffb0:new _0x418257(0x10),_0xf4e661=_0x2057dd[0x0],_0x2e9b42=_0x2057dd[0x1],_0x2057dd=_0x2057dd[0x2];return _0x32ffb0[0x0]=_0xf4e661*_0x6bc6c1[0x0],_0x32ffb0[0x1]=_0xf4e661*_0x6bc6c1[0x1],_0x32ffb0[0x2]=_0xf4e661*_0x6bc6c1[0x2],_0x32ffb0[0x3]=_0xf4e661*_0x6bc6c1[0x3],_0x32ffb0[0x4]=_0x2e9b42*_0x6bc6c1[0x4],_0x32ffb0[0x5]=_0x2e9b42*_0x6bc6c1[0x5],_0x32ffb0[0x6]=_0x2e9b42*_0x6bc6c1[0x6],_0x32ffb0[0x7]=_0x2e9b42*_0x6bc6c1[0x7],_0x32ffb0[0x8]=_0x2057dd*_0x6bc6c1[0x8],_0x32ffb0[0x9]=_0x2057dd*_0x6bc6c1[0x9],_0x32ffb0[0xa]=_0x2057dd*_0x6bc6c1[0xa],_0x32ffb0[0xb]=_0x2057dd*_0x6bc6c1[0xb],_0x6bc6c1!==_0x32ffb0&&(_0x32ffb0[0xc]=_0x6bc6c1[0xc],_0x32ffb0[0xd]=_0x6bc6c1[0xd],_0x32ffb0[0xe]=_0x6bc6c1[0xe],_0x32ffb0[0xf]=_0x6bc6c1[0xf]),_0x32ffb0;},'scaling':function(_0x147807,_0x39d35d){return _0x39d35d=null!=_0x39d35d?_0x39d35d:new _0x418257(0x10),(_0x39d35d[0x0]=_0x147807[0x0],_0x39d35d[0x1]=0x0,_0x39d35d[0x2]=0x0,_0x39d35d[0x3]=0x0,_0x39d35d[0x4]=0x0,_0x39d35d[0x5]=_0x147807[0x1],_0x39d35d[0x6]=0x0,_0x39d35d[0x7]=0x0,_0x39d35d[0x8]=0x0,_0x39d35d[0x9]=0x0,_0x39d35d[0xa]=_0x147807[0x2],_0x39d35d[0xb]=0x0,_0x39d35d[0xc]=0x0,_0x39d35d[0xd]=0x0,_0x39d35d[0xe]=0x0,_0x39d35d[0xf]=0x1,_0x39d35d);},'set':function(_0x81816,_0x39a57a,_0x32a3c5,_0x2626b4,_0x1d7c01,_0x144199,_0x1873d6,_0x3c60fe,_0x35011c,_0x537c65,_0x109a2d,_0x196bd3,_0x5208f7,_0x3cce25,_0x27dee0,_0x3d0c78,_0x96380d){return _0x96380d=null!=_0x96380d?_0x96380d:new _0x418257(0x10),(_0x96380d[0x0]=_0x81816,_0x96380d[0x1]=_0x39a57a,_0x96380d[0x2]=_0x32a3c5,_0x96380d[0x3]=_0x2626b4,_0x96380d[0x4]=_0x1d7c01,_0x96380d[0x5]=_0x144199,_0x96380d[0x6]=_0x1873d6,_0x96380d[0x7]=_0x3c60fe,_0x96380d[0x8]=_0x35011c,_0x96380d[0x9]=_0x537c65,_0x96380d[0xa]=_0x109a2d,_0x96380d[0xb]=_0x196bd3,_0x96380d[0xc]=_0x5208f7,_0x96380d[0xd]=_0x3cce25,_0x96380d[0xe]=_0x27dee0,_0x96380d[0xf]=_0x3d0c78,_0x96380d);},'setAxis':function(_0x405c3a,_0x4303d5,_0x202968,_0x369843){return _0x405c3a=_0x369843===_0x405c3a?_0x369843:_0x41b08c(_0x405c3a,_0x369843),_0x369843=0x4*_0x202968,(_0x405c3a[0x0+_0x369843]=_0x4303d5[0x0],_0x405c3a[0x1+_0x369843]=_0x4303d5[0x1],_0x405c3a[0x2+_0x369843]=_0x4303d5[0x2],_0x405c3a);},'setTranslation':function(_0x1d82e2,_0x435862,_0x254a38){return _0x254a38=null!=_0x254a38?_0x254a38:_0x340540(),(_0x1d82e2!==_0x254a38&&(_0x254a38[0x0]=_0x1d82e2[0x0],_0x254a38[0x1]=_0x1d82e2[0x1],_0x254a38[0x2]=_0x1d82e2[0x2],_0x254a38[0x3]=_0x1d82e2[0x3],_0x254a38[0x4]=_0x1d82e2[0x4],_0x254a38[0x5]=_0x1d82e2[0x5],_0x254a38[0x6]=_0x1d82e2[0x6],_0x254a38[0x7]=_0x1d82e2[0x7],_0x254a38[0x8]=_0x1d82e2[0x8],_0x254a38[0x9]=_0x1d82e2[0x9],_0x254a38[0xa]=_0x1d82e2[0xa],_0x254a38[0xb]=_0x1d82e2[0xb]),_0x254a38[0xc]=_0x435862[0x0],_0x254a38[0xd]=_0x435862[0x1],_0x254a38[0xe]=_0x435862[0x2],_0x254a38[0xf]=0x1,_0x254a38);},'translate':function(_0x4049ac,_0x523000,_0x121f2a){var _0x121f2a=null!=_0x121f2a?_0x121f2a:new _0x418257(0x10),_0x90669=_0x523000[0x0],_0x241861=_0x523000[0x1],_0x523000=_0x523000[0x2],_0x53719b=_0x4049ac[0x0],_0x266bfc=_0x4049ac[0x1],_0x442740=_0x4049ac[0x2],_0x273768=_0x4049ac[0x3],_0x358e89=_0x4049ac[0x4],_0x5f167a=_0x4049ac[0x5],_0x25fea5=_0x4049ac[0x6],_0x3bafbe=_0x4049ac[0x7],_0x5f1889=_0x4049ac[0x8],_0x51c9b0=_0x4049ac[0x9],_0x3fc35f=_0x4049ac[0xa],_0x33b47e=_0x4049ac[0xb],_0xdf80b1=_0x4049ac[0xc],_0x16270e=_0x4049ac[0xd],_0x520f5b=_0x4049ac[0xe],_0x28d76b=_0x4049ac[0xf];return _0x4049ac!==_0x121f2a&&(_0x121f2a[0x0]=_0x53719b,_0x121f2a[0x1]=_0x266bfc,_0x121f2a[0x2]=_0x442740,_0x121f2a[0x3]=_0x273768,_0x121f2a[0x4]=_0x358e89,_0x121f2a[0x5]=_0x5f167a,_0x121f2a[0x6]=_0x25fea5,_0x121f2a[0x7]=_0x3bafbe,_0x121f2a[0x8]=_0x5f1889,_0x121f2a[0x9]=_0x51c9b0,_0x121f2a[0xa]=_0x3fc35f,_0x121f2a[0xb]=_0x33b47e),_0x121f2a[0xc]=_0x53719b*_0x90669+_0x358e89*_0x241861+_0x5f1889*_0x523000+_0xdf80b1,_0x121f2a[0xd]=_0x266bfc*_0x90669+_0x5f167a*_0x241861+_0x51c9b0*_0x523000+_0x16270e,_0x121f2a[0xe]=_0x442740*_0x90669+_0x25fea5*_0x241861+_0x3fc35f*_0x523000+_0x520f5b,_0x121f2a[0xf]=_0x273768*_0x90669+_0x3bafbe*_0x241861+_0x33b47e*_0x523000+_0x28d76b,_0x121f2a;},'translation':function(_0xd7a51a,_0x2ca313){return _0x2ca313=null!=_0x2ca313?_0x2ca313:new _0x418257(0x10),(_0x2ca313[0x0]=0x1,_0x2ca313[0x1]=0x0,_0x2ca313[0x2]=0x0,_0x2ca313[0x3]=0x0,_0x2ca313[0x4]=0x0,_0x2ca313[0x5]=0x1,_0x2ca313[0x6]=0x0,_0x2ca313[0x7]=0x0,_0x2ca313[0x8]=0x0,_0x2ca313[0x9]=0x0,_0x2ca313[0xa]=0x1,_0x2ca313[0xb]=0x0,_0x2ca313[0xc]=_0xd7a51a[0x0],_0x2ca313[0xd]=_0xd7a51a[0x1],_0x2ca313[0xe]=_0xd7a51a[0x2],_0x2ca313[0xf]=0x1,_0x2ca313);},'transpose':function(_0x33bb69,_0x59e224){var _0x13fd1f,_0x23edb3,_0x518dce,_0xb146be,_0x1feb57,_0x5f1be3,_0x42e2e2,_0x3f775b,_0x38422b,_0xc2089e,_0x483674,_0x16a3ba,_0x84ad2d,_0x539e4f,_0x5e0680,_0x59e224=null!=_0x59e224?_0x59e224:new _0x418257(0x10);return _0x59e224===_0x33bb69?(_0x13fd1f=_0x33bb69[0x1],_0x33bb69[0x1]=_0x33bb69[0x4],_0x33bb69[0x4]=_0x13fd1f,_0x13fd1f=_0x33bb69[0x2],_0x33bb69[0x2]=_0x33bb69[0x8],_0x33bb69[0x8]=_0x13fd1f,_0x13fd1f=_0x33bb69[0x3],_0x33bb69[0x3]=_0x33bb69[0xc],_0x33bb69[0xc]=_0x13fd1f,_0x13fd1f=_0x33bb69[0x6],_0x33bb69[0x6]=_0x33bb69[0x9],_0x33bb69[0x9]=_0x13fd1f,_0x13fd1f=_0x33bb69[0x7],_0x33bb69[0x7]=_0x33bb69[0xd],_0x33bb69[0xd]=_0x13fd1f,_0x13fd1f=_0x33bb69[0xb],_0x33bb69[0xb]=_0x33bb69[0xe],_0x33bb69[0xe]=_0x13fd1f):(_0x13fd1f=_0x33bb69[0x0],_0x23edb3=_0x33bb69[0x1],_0x518dce=_0x33bb69[0x2],_0xb146be=_0x33bb69[0x3],_0x1feb57=_0x33bb69[0x4],_0x5f1be3=_0x33bb69[0x5],_0x42e2e2=_0x33bb69[0x6],_0x3f775b=_0x33bb69[0x7],_0x38422b=_0x33bb69[0x8],_0xc2089e=_0x33bb69[0x9],_0x483674=_0x33bb69[0xa],_0x16a3ba=_0x33bb69[0xb],_0x84ad2d=_0x33bb69[0xc],_0x539e4f=_0x33bb69[0xd],_0x5e0680=_0x33bb69[0xe],_0x33bb69=_0x33bb69[0xf],_0x59e224[0x0]=_0x13fd1f,_0x59e224[0x1]=_0x1feb57,_0x59e224[0x2]=_0x38422b,_0x59e224[0x3]=_0x84ad2d,_0x59e224[0x4]=_0x23edb3,_0x59e224[0x5]=_0x5f1be3,_0x59e224[0x6]=_0xc2089e,_0x59e224[0x7]=_0x539e4f,_0x59e224[0x8]=_0x518dce,_0x59e224[0x9]=_0x42e2e2,_0x59e224[0xa]=_0x483674,_0x59e224[0xb]=_0x5e0680,_0x59e224[0xc]=_0xb146be,_0x59e224[0xd]=_0x3f775b,_0x59e224[0xe]=_0x16a3ba,_0x59e224[0xf]=_0x33bb69),_0x59e224;},'uniformScale':function(_0x4443c8,_0x28a921,_0x562727){return _0x562727=null!=_0x562727?_0x562727:new _0x418257(0x10),(_0x562727[0x0]=_0x28a921*_0x4443c8[0x0],_0x562727[0x1]=_0x28a921*_0x4443c8[0x1],_0x562727[0x2]=_0x28a921*_0x4443c8[0x2],_0x562727[0x3]=_0x28a921*_0x4443c8[0x3],_0x562727[0x4]=_0x28a921*_0x4443c8[0x4],_0x562727[0x5]=_0x28a921*_0x4443c8[0x5],_0x562727[0x6]=_0x28a921*_0x4443c8[0x6],_0x562727[0x7]=_0x28a921*_0x4443c8[0x7],_0x562727[0x8]=_0x28a921*_0x4443c8[0x8],_0x562727[0x9]=_0x28a921*_0x4443c8[0x9],_0x562727[0xa]=_0x28a921*_0x4443c8[0xa],_0x562727[0xb]=_0x28a921*_0x4443c8[0xb],_0x4443c8!==_0x562727&&(_0x562727[0xc]=_0x4443c8[0xc],_0x562727[0xd]=_0x4443c8[0xd],_0x562727[0xe]=_0x4443c8[0xe],_0x562727[0xf]=_0x4443c8[0xf]),_0x562727);},'uniformScaling':function(_0x1019d0,_0x48e5ba){return _0x48e5ba=null!=_0x48e5ba?_0x48e5ba:new _0x418257(0x10),(_0x48e5ba[0x0]=_0x1019d0,_0x48e5ba[0x1]=0x0,_0x48e5ba[0x2]=0x0,_0x48e5ba[0x3]=0x0,_0x48e5ba[0x4]=0x0,_0x48e5ba[0x5]=_0x1019d0,_0x48e5ba[0x6]=0x0,_0x48e5ba[0x7]=0x0,_0x48e5ba[0x8]=0x0,_0x48e5ba[0x9]=0x0,_0x48e5ba[0xa]=_0x1019d0,_0x48e5ba[0xb]=0x0,_0x48e5ba[0xc]=0x0,_0x48e5ba[0xd]=0x0,_0x48e5ba[0xe]=0x0,_0x48e5ba[0xf]=0x1,_0x48e5ba);}};})(_0x5c35ab),_0x45d3ca['set'](_0x5c35ab,_0x258100)),_0x258100;})(_0x4525fa),'quat':(_0x41cf27=>{let _0xaa0fb4=_0x4e2fea['get'](_0x41cf27);return _0xaa0fb4||(_0xaa0fb4=(_0xf7b8c1=>{var _0x5ef280=a0_0x40ed;let _0x133a57=_0x112527(_0xf7b8c1);function _0xfcb979(_0x3fae74,_0x1bee6f,_0x8e1bce,_0x3dc47c){var _0x12f41c=new _0xf7b8c1(0x4);return void 0x0!==_0x3fae74&&(_0x12f41c[0x0]=_0x3fae74,void 0x0!==_0x1bee6f)&&(_0x12f41c[0x1]=_0x1bee6f,void 0x0!==_0x8e1bce)&&(_0x12f41c[0x2]=_0x8e1bce,void 0x0!==_0x3dc47c)&&(_0x12f41c[0x3]=_0x3dc47c),_0x12f41c;}var _0x398519=_0xfcb979;function _0x1b4420(_0xec13b6,_0x5371fd,_0x35c1d6){var _0x4896ca=a0_0x40ed,_0x35c1d6=null!=_0x35c1d6?_0x35c1d6:new _0xf7b8c1(0x4),_0x5371fd=0.5*_0x5371fd,_0x392c36=Math['sin'](_0x5371fd);return _0x35c1d6[0x0]=_0x392c36*_0xec13b6[0x0],_0x35c1d6[0x1]=_0x392c36*_0xec13b6[0x1],_0x35c1d6[0x2]=_0x392c36*_0xec13b6[0x2],_0x35c1d6[0x3]=Math[_0x4896ca(0x399)](_0x5371fd),_0x35c1d6;}function _0x510a32(_0x1207c7,_0x5e3c1b,_0x47555a){var _0x47555a=null!=_0x47555a?_0x47555a:new _0xf7b8c1(0x4),_0x4b2c72=_0x1207c7[0x0],_0x377931=_0x1207c7[0x1],_0x27a735=_0x1207c7[0x2],_0x1207c7=_0x1207c7[0x3],_0x483f60=_0x5e3c1b[0x0],_0x39295d=_0x5e3c1b[0x1],_0x276c04=_0x5e3c1b[0x2],_0x5e3c1b=_0x5e3c1b[0x3];return _0x47555a[0x0]=_0x4b2c72*_0x5e3c1b+_0x1207c7*_0x483f60+_0x377931*_0x276c04-_0x27a735*_0x39295d,_0x47555a[0x1]=_0x377931*_0x5e3c1b+_0x1207c7*_0x39295d+_0x27a735*_0x483f60-_0x4b2c72*_0x276c04,_0x47555a[0x2]=_0x27a735*_0x5e3c1b+_0x1207c7*_0x276c04+_0x4b2c72*_0x39295d-_0x377931*_0x483f60,_0x47555a[0x3]=_0x1207c7*_0x5e3c1b-_0x4b2c72*_0x483f60-_0x377931*_0x39295d-_0x27a735*_0x276c04,_0x47555a;}var _0x38c93a=_0x510a32;function _0x3df77c(_0x565df2,_0x44afe8,_0x4d50ae,_0x1cf7ff){var _0x393212=a0_0x40ed;let _0x223408,_0x13c7c8,_0x12216d=null!=_0x1cf7ff?_0x1cf7ff:new _0xf7b8c1(0x4),_0x389ffd=_0x565df2[0x0],_0x5dc3cd=_0x565df2[0x1],_0x31efde=_0x565df2[0x2],_0x1e58cb=_0x565df2[0x3],_0x614564=_0x44afe8[0x0],_0x59ca5b=_0x44afe8[0x1],_0x36f5ce=_0x44afe8[0x2],_0x17a419=_0x44afe8[0x3],_0xa1ceba=_0x389ffd*_0x614564+_0x5dc3cd*_0x59ca5b+_0x31efde*_0x36f5ce+_0x1e58cb*_0x17a419;_0xa1ceba<0x0&&(_0xa1ceba=-_0xa1ceba,_0x614564=-_0x614564,_0x59ca5b=-_0x59ca5b,_0x36f5ce=-_0x36f5ce,_0x17a419=-_0x17a419);let _0x3d620b,_0x414ea4;return _0x414ea4=0x1-_0xa1ceba>_0x4e5402?(_0x223408=Math[_0x393212(0x311)](_0xa1ceba),_0x13c7c8=Math['sin'](_0x223408),_0x3d620b=Math[_0x393212(0x413)]((0x1-_0x4d50ae)*_0x223408)/_0x13c7c8,Math['sin'](_0x4d50ae*_0x223408)/_0x13c7c8):(_0x3d620b=0x1-_0x4d50ae,_0x4d50ae),_0x12216d[0x0]=_0x3d620b*_0x389ffd+_0x414ea4*_0x614564,_0x12216d[0x1]=_0x3d620b*_0x5dc3cd+_0x414ea4*_0x59ca5b,_0x12216d[0x2]=_0x3d620b*_0x31efde+_0x414ea4*_0x36f5ce,_0x12216d[0x3]=_0x3d620b*_0x1e58cb+_0x414ea4*_0x17a419,_0x12216d;}function _0x26376b(_0x2a6f0d,_0x60c0c3){return _0x60c0c3=null!=_0x60c0c3?_0x60c0c3:new _0xf7b8c1(0x4),(_0x60c0c3[0x0]=_0x2a6f0d[0x0],_0x60c0c3[0x1]=_0x2a6f0d[0x1],_0x60c0c3[0x2]=_0x2a6f0d[0x2],_0x60c0c3[0x3]=_0x2a6f0d[0x3],_0x60c0c3);}var _0x4c68d2=_0x26376b;function _0x110fae(_0x547b89,_0x39ca7b,_0x3a9980){return _0x3a9980=null!=_0x3a9980?_0x3a9980:new _0xf7b8c1(0x4),(_0x3a9980[0x0]=_0x547b89[0x0]-_0x39ca7b[0x0],_0x3a9980[0x1]=_0x547b89[0x1]-_0x39ca7b[0x1],_0x3a9980[0x2]=_0x547b89[0x2]-_0x39ca7b[0x2],_0x3a9980[0x3]=_0x547b89[0x3]-_0x39ca7b[0x3],_0x3a9980);}var _0x16520e=_0x110fae;function _0x9de6e(_0xe0ee56,_0x2f9a32,_0x59e6f9){return _0x59e6f9=null!=_0x59e6f9?_0x59e6f9:new _0xf7b8c1(0x4),(_0x59e6f9[0x0]=_0xe0ee56[0x0]*_0x2f9a32,_0x59e6f9[0x1]=_0xe0ee56[0x1]*_0x2f9a32,_0x59e6f9[0x2]=_0xe0ee56[0x2]*_0x2f9a32,_0x59e6f9[0x3]=_0xe0ee56[0x3]*_0x2f9a32,_0x59e6f9);}var _0x203403=_0x9de6e;function _0x4cce93(_0x3bbc5d,_0x5ecf69){return _0x3bbc5d[0x0]*_0x5ecf69[0x0]+_0x3bbc5d[0x1]*_0x5ecf69[0x1]+_0x3bbc5d[0x2]*_0x5ecf69[0x2]+_0x3bbc5d[0x3]*_0x5ecf69[0x3];}function _0x4fc862(_0x140f9c){var _0x38e775=a0_0x40ed,_0x22ea89=_0x140f9c[0x0],_0x4d9571=_0x140f9c[0x1],_0x4fc617=_0x140f9c[0x2],_0x140f9c=_0x140f9c[0x3];return Math[_0x38e775(0x297)](_0x22ea89*_0x22ea89+_0x4d9571*_0x4d9571+_0x4fc617*_0x4fc617+_0x140f9c*_0x140f9c);}var _0x5724bb=_0x4fc862;function _0x4d3c99(_0x5d6b45){var _0x2e0c43=_0x5d6b45[0x0],_0x43c225=_0x5d6b45[0x1],_0x2a8bed=_0x5d6b45[0x2],_0x5d6b45=_0x5d6b45[0x3];return _0x2e0c43*_0x2e0c43+_0x43c225*_0x43c225+_0x2a8bed*_0x2a8bed+_0x5d6b45*_0x5d6b45;}var _0x4ff6cd=_0x4d3c99;function _0x3f9d43(_0x564fdb,_0x3424b7){var _0x53f633=a0_0x40ed,_0x3424b7=null!=_0x3424b7?_0x3424b7:new _0xf7b8c1(0x4),_0xfab955=_0x564fdb[0x0],_0x4df3cf=_0x564fdb[0x1],_0x488c55=_0x564fdb[0x2],_0x564fdb=_0x564fdb[0x3],_0x5069b5=Math[_0x53f633(0x297)](_0xfab955*_0xfab955+_0x4df3cf*_0x4df3cf+_0x488c55*_0x488c55+_0x564fdb*_0x564fdb);return 0.00001<_0x5069b5?(_0x3424b7[0x0]=_0xfab955/_0x5069b5,_0x3424b7[0x1]=_0x4df3cf/_0x5069b5,_0x3424b7[0x2]=_0x488c55/_0x5069b5,_0x3424b7[0x3]=_0x564fdb/_0x5069b5):(_0x3424b7[0x0]=0x0,_0x3424b7[0x1]=0x0,_0x3424b7[0x2]=0x0,_0x3424b7[0x3]=0x1),_0x3424b7;}let _0x3210ac=_0x133a57[_0x5ef280(0x327)](),_0x53c40c=_0x133a57['create'](),_0x4bc01f=_0x133a57[_0x5ef280(0x327)](),_0x27f805=new _0xf7b8c1(0x4),_0xd1e051=new _0xf7b8c1(0x4);return{'create':_0xfcb979,'fromValues':_0x398519,'set':function(_0x45e6da,_0x541315,_0x2098de,_0x35aaf9,_0x42c806){return _0x42c806=null!=_0x42c806?_0x42c806:new _0xf7b8c1(0x4),(_0x42c806[0x0]=_0x45e6da,_0x42c806[0x1]=_0x541315,_0x42c806[0x2]=_0x2098de,_0x42c806[0x3]=_0x35aaf9,_0x42c806);},'fromAxisAngle':_0x1b4420,'toAxisAngle':function(_0xb024d3,_0x1b5b0c){var _0x22ff65=_0x5ef280,_0x1b5b0c=null!=_0x1b5b0c?_0x1b5b0c:_0x133a57['create'](0x3),_0x119b69=0x2*Math[_0x22ff65(0x311)](_0xb024d3[0x3]),_0x5c01d8=Math['sin'](0.5*_0x119b69);return _0x5c01d8>_0x4e5402?(_0x1b5b0c[0x0]=_0xb024d3[0x0]/_0x5c01d8,_0x1b5b0c[0x1]=_0xb024d3[0x1]/_0x5c01d8,_0x1b5b0c[0x2]=_0xb024d3[0x2]/_0x5c01d8):(_0x1b5b0c[0x0]=0x1,_0x1b5b0c[0x1]=0x0,_0x1b5b0c[0x2]=0x0),{'angle':_0x119b69,'axis':_0x1b5b0c};},'angle':function(_0x3138c6,_0x1f31a9){var _0x386762=_0x5ef280;return _0x3138c6=_0x4cce93(_0x3138c6,_0x1f31a9),Math[_0x386762(0x311)](0x2*_0x3138c6*_0x3138c6-0x1);},'multiply':_0x510a32,'mul':_0x38c93a,'rotateX':function(_0x2f9360,_0x360574,_0x540f73){var _0xe11e3a=_0x5ef280,_0x540f73=null!=_0x540f73?_0x540f73:new _0xf7b8c1(0x4),_0x360574=0.5*_0x360574,_0x286cff=_0x2f9360[0x0],_0x1c5fde=_0x2f9360[0x1],_0x154476=_0x2f9360[0x2],_0x2f9360=_0x2f9360[0x3],_0x49bb4f=Math[_0xe11e3a(0x413)](_0x360574),_0x360574=Math['cos'](_0x360574);return _0x540f73[0x0]=_0x286cff*_0x360574+_0x2f9360*_0x49bb4f,_0x540f73[0x1]=_0x1c5fde*_0x360574+_0x154476*_0x49bb4f,_0x540f73[0x2]=_0x154476*_0x360574-_0x1c5fde*_0x49bb4f,_0x540f73[0x3]=_0x2f9360*_0x360574-_0x286cff*_0x49bb4f,_0x540f73;},'rotateY':function(_0x434cb2,_0x15d6bb,_0x41fda9){var _0x4cd775=_0x5ef280,_0x41fda9=null!=_0x41fda9?_0x41fda9:new _0xf7b8c1(0x4),_0x15d6bb=0.5*_0x15d6bb,_0x134b97=_0x434cb2[0x0],_0x39e991=_0x434cb2[0x1],_0x4488ef=_0x434cb2[0x2],_0x434cb2=_0x434cb2[0x3],_0x46b1e1=Math[_0x4cd775(0x413)](_0x15d6bb),_0x15d6bb=Math[_0x4cd775(0x399)](_0x15d6bb);return _0x41fda9[0x0]=_0x134b97*_0x15d6bb-_0x4488ef*_0x46b1e1,_0x41fda9[0x1]=_0x39e991*_0x15d6bb+_0x434cb2*_0x46b1e1,_0x41fda9[0x2]=_0x4488ef*_0x15d6bb+_0x134b97*_0x46b1e1,_0x41fda9[0x3]=_0x434cb2*_0x15d6bb-_0x39e991*_0x46b1e1,_0x41fda9;},'rotateZ':function(_0xe8d134,_0x40e954,_0x23848d){var _0x2e079c=_0x5ef280,_0x23848d=null!=_0x23848d?_0x23848d:new _0xf7b8c1(0x4),_0x40e954=0.5*_0x40e954,_0x14a8c1=_0xe8d134[0x0],_0x435344=_0xe8d134[0x1],_0x1bf600=_0xe8d134[0x2],_0xe8d134=_0xe8d134[0x3],_0x4077bb=Math[_0x2e079c(0x413)](_0x40e954),_0x40e954=Math[_0x2e079c(0x399)](_0x40e954);return _0x23848d[0x0]=_0x14a8c1*_0x40e954+_0x435344*_0x4077bb,_0x23848d[0x1]=_0x435344*_0x40e954-_0x14a8c1*_0x4077bb,_0x23848d[0x2]=_0x1bf600*_0x40e954+_0xe8d134*_0x4077bb,_0x23848d[0x3]=_0xe8d134*_0x40e954-_0x1bf600*_0x4077bb,_0x23848d;},'slerp':_0x3df77c,'inverse':function(_0x573a3d,_0x49bd8d){var _0x49bd8d=null!=_0x49bd8d?_0x49bd8d:new _0xf7b8c1(0x4),_0x29584a=_0x573a3d[0x0],_0x47e135=_0x573a3d[0x1],_0x4ed0d9=_0x573a3d[0x2],_0x573a3d=_0x573a3d[0x3],_0x1c98ea=_0x29584a*_0x29584a+_0x47e135*_0x47e135+_0x4ed0d9*_0x4ed0d9+_0x573a3d*_0x573a3d,_0x1c98ea=_0x1c98ea?0x1/_0x1c98ea:0x0;return _0x49bd8d[0x0]=-_0x29584a*_0x1c98ea,_0x49bd8d[0x1]=-_0x47e135*_0x1c98ea,_0x49bd8d[0x2]=-_0x4ed0d9*_0x1c98ea,_0x49bd8d[0x3]=_0x573a3d*_0x1c98ea,_0x49bd8d;},'conjugate':function(_0x9d9e39,_0x4cd610){return _0x4cd610=null!=_0x4cd610?_0x4cd610:new _0xf7b8c1(0x4),(_0x4cd610[0x0]=-_0x9d9e39[0x0],_0x4cd610[0x1]=-_0x9d9e39[0x1],_0x4cd610[0x2]=-_0x9d9e39[0x2],_0x4cd610[0x3]=_0x9d9e39[0x3],_0x4cd610);},'fromMat':function(_0x440d5e,_0x5e890b){var _0x554037=_0x5ef280,_0x5e890b=null!=_0x5e890b?_0x5e890b:new _0xf7b8c1(0x4),_0x34af32=_0x440d5e[0x0]+_0x440d5e[0x5]+_0x440d5e[0xa];if(0x0<_0x34af32)_0x34af32=Math[_0x554037(0x297)](_0x34af32+0x1),_0x34af32=(_0x5e890b[0x3]=0.5*_0x34af32,0.5/_0x34af32),(_0x5e890b[0x0]=(_0x440d5e[0x6]-_0x440d5e[0x9])*_0x34af32,_0x5e890b[0x1]=(_0x440d5e[0x8]-_0x440d5e[0x2])*_0x34af32,_0x5e890b[0x2]=(_0x440d5e[0x1]-_0x440d5e[0x4])*_0x34af32);else{let _0x4bbe78=0x0;_0x440d5e[0x5]>_0x440d5e[0x0]&&(_0x4bbe78=0x1);var _0x34af32=((_0x4bbe78=_0x440d5e[0xa]>_0x440d5e[0x4*_0x4bbe78+_0x4bbe78]?0x2:_0x4bbe78)+0x1)%0x3,_0x317f61=(_0x4bbe78+0x2)%0x3,_0x354ed0=Math[_0x554037(0x297)](_0x440d5e[0x4*_0x4bbe78+_0x4bbe78]-_0x440d5e[0x4*_0x34af32+_0x34af32]-_0x440d5e[0x4*_0x317f61+_0x317f61]+0x1),_0x354ed0=(_0x5e890b[_0x4bbe78]=0.5*_0x354ed0,0.5/_0x354ed0);_0x5e890b[0x3]=(_0x440d5e[0x4*_0x34af32+_0x317f61]-_0x440d5e[0x4*_0x317f61+_0x34af32])*_0x354ed0,_0x5e890b[_0x34af32]=(_0x440d5e[0x4*_0x34af32+_0x4bbe78]+_0x440d5e[0x4*_0x4bbe78+_0x34af32])*_0x354ed0,_0x5e890b[_0x317f61]=(_0x440d5e[0x4*_0x317f61+_0x4bbe78]+_0x440d5e[0x4*_0x4bbe78+_0x317f61])*_0x354ed0;}return _0x5e890b;},'fromEuler':function(_0x3d9499,_0x17e664,_0x3733e3,_0x2e0652,_0x44e5db){var _0x58bb58=_0x5ef280,_0xe220f0=null!=_0x44e5db?_0x44e5db:new _0xf7b8c1(0x4),_0x44e5db=0.5*_0x3d9499,_0x3d9499=0.5*_0x17e664,_0x17e664=0.5*_0x3733e3,_0x19f1a9=Math[_0x58bb58(0x413)](_0x44e5db),_0x15ab1f=Math[_0x58bb58(0x399)](_0x44e5db),_0x3d150c=Math['sin'](_0x3d9499),_0x31f9a1=Math[_0x58bb58(0x399)](_0x3d9499),_0x4a5887=Math['sin'](_0x17e664),_0x37bd58=Math[_0x58bb58(0x399)](_0x17e664);switch(_0x2e0652){case _0x58bb58(0x1c6):_0xe220f0[0x0]=_0x19f1a9*_0x31f9a1*_0x37bd58+_0x15ab1f*_0x3d150c*_0x4a5887,_0xe220f0[0x1]=_0x15ab1f*_0x3d150c*_0x37bd58-_0x19f1a9*_0x31f9a1*_0x4a5887,_0xe220f0[0x2]=_0x15ab1f*_0x31f9a1*_0x4a5887+_0x19f1a9*_0x3d150c*_0x37bd58,_0xe220f0[0x3]=_0x15ab1f*_0x31f9a1*_0x37bd58-_0x19f1a9*_0x3d150c*_0x4a5887;break;case _0x58bb58(0x224):_0xe220f0[0x0]=_0x19f1a9*_0x31f9a1*_0x37bd58-_0x15ab1f*_0x3d150c*_0x4a5887,_0xe220f0[0x1]=_0x15ab1f*_0x3d150c*_0x37bd58-_0x19f1a9*_0x31f9a1*_0x4a5887,_0xe220f0[0x2]=_0x15ab1f*_0x31f9a1*_0x4a5887+_0x19f1a9*_0x3d150c*_0x37bd58,_0xe220f0[0x3]=_0x15ab1f*_0x31f9a1*_0x37bd58+_0x19f1a9*_0x3d150c*_0x4a5887;break;case _0x58bb58(0x2db):_0xe220f0[0x0]=_0x19f1a9*_0x31f9a1*_0x37bd58+_0x15ab1f*_0x3d150c*_0x4a5887,_0xe220f0[0x1]=_0x15ab1f*_0x3d150c*_0x37bd58-_0x19f1a9*_0x31f9a1*_0x4a5887,_0xe220f0[0x2]=_0x15ab1f*_0x31f9a1*_0x4a5887-_0x19f1a9*_0x3d150c*_0x37bd58,_0xe220f0[0x3]=_0x15ab1f*_0x31f9a1*_0x37bd58+_0x19f1a9*_0x3d150c*_0x4a5887;break;case _0x58bb58(0x30e):_0xe220f0[0x0]=_0x19f1a9*_0x31f9a1*_0x37bd58+_0x15ab1f*_0x3d150c*_0x4a5887,_0xe220f0[0x1]=_0x15ab1f*_0x3d150c*_0x37bd58+_0x19f1a9*_0x31f9a1*_0x4a5887,_0xe220f0[0x2]=_0x15ab1f*_0x31f9a1*_0x4a5887-_0x19f1a9*_0x3d150c*_0x37bd58,_0xe220f0[0x3]=_0x15ab1f*_0x31f9a1*_0x37bd58-_0x19f1a9*_0x3d150c*_0x4a5887;break;case _0x58bb58(0x2dc):_0xe220f0[0x0]=_0x19f1a9*_0x31f9a1*_0x37bd58-_0x15ab1f*_0x3d150c*_0x4a5887,_0xe220f0[0x1]=_0x15ab1f*_0x3d150c*_0x37bd58+_0x19f1a9*_0x31f9a1*_0x4a5887,_0xe220f0[0x2]=_0x15ab1f*_0x31f9a1*_0x4a5887+_0x19f1a9*_0x3d150c*_0x37bd58,_0xe220f0[0x3]=_0x15ab1f*_0x31f9a1*_0x37bd58-_0x19f1a9*_0x3d150c*_0x4a5887;break;case'zyx':_0xe220f0[0x0]=_0x19f1a9*_0x31f9a1*_0x37bd58-_0x15ab1f*_0x3d150c*_0x4a5887,_0xe220f0[0x1]=_0x15ab1f*_0x3d150c*_0x37bd58+_0x19f1a9*_0x31f9a1*_0x4a5887,_0xe220f0[0x2]=_0x15ab1f*_0x31f9a1*_0x4a5887-_0x19f1a9*_0x3d150c*_0x37bd58,_0xe220f0[0x3]=_0x15ab1f*_0x31f9a1*_0x37bd58+_0x19f1a9*_0x3d150c*_0x4a5887;break;default:throw new Error(_0x58bb58(0x257)+_0x2e0652);}return _0xe220f0;},'copy':_0x26376b,'clone':_0x4c68d2,'add':function(_0x29889f,_0x1855d6,_0x3c9c1a){return _0x3c9c1a=null!=_0x3c9c1a?_0x3c9c1a:new _0xf7b8c1(0x4),(_0x3c9c1a[0x0]=_0x29889f[0x0]+_0x1855d6[0x0],_0x3c9c1a[0x1]=_0x29889f[0x1]+_0x1855d6[0x1],_0x3c9c1a[0x2]=_0x29889f[0x2]+_0x1855d6[0x2],_0x3c9c1a[0x3]=_0x29889f[0x3]+_0x1855d6[0x3],_0x3c9c1a);},'subtract':_0x110fae,'sub':_0x16520e,'mulScalar':_0x9de6e,'scale':_0x203403,'divScalar':function(_0x45be9e,_0x47d28a,_0x4d351e){return _0x4d351e=null!=_0x4d351e?_0x4d351e:new _0xf7b8c1(0x4),(_0x4d351e[0x0]=_0x45be9e[0x0]/_0x47d28a,_0x4d351e[0x1]=_0x45be9e[0x1]/_0x47d28a,_0x4d351e[0x2]=_0x45be9e[0x2]/_0x47d28a,_0x4d351e[0x3]=_0x45be9e[0x3]/_0x47d28a,_0x4d351e);},'dot':_0x4cce93,'lerp':function(_0x25b1ff,_0x4bd182,_0x55d8ee,_0x3a14ad){return _0x3a14ad=null!=_0x3a14ad?_0x3a14ad:new _0xf7b8c1(0x4),(_0x3a14ad[0x0]=_0x25b1ff[0x0]+_0x55d8ee*(_0x4bd182[0x0]-_0x25b1ff[0x0]),_0x3a14ad[0x1]=_0x25b1ff[0x1]+_0x55d8ee*(_0x4bd182[0x1]-_0x25b1ff[0x1]),_0x3a14ad[0x2]=_0x25b1ff[0x2]+_0x55d8ee*(_0x4bd182[0x2]-_0x25b1ff[0x2]),_0x3a14ad[0x3]=_0x25b1ff[0x3]+_0x55d8ee*(_0x4bd182[0x3]-_0x25b1ff[0x3]),_0x3a14ad);},'length':_0x4fc862,'len':_0x5724bb,'lengthSq':_0x4d3c99,'lenSq':_0x4ff6cd,'normalize':_0x3f9d43,'equalsApproximately':function(_0x5187a4,_0x33d0e4){var _0x30370e=_0x5ef280;return Math[_0x30370e(0x32b)](_0x5187a4[0x0]-_0x33d0e4[0x0])<_0x4e5402&&Math['abs'](_0x5187a4[0x1]-_0x33d0e4[0x1])<_0x4e5402&&Math[_0x30370e(0x32b)](_0x5187a4[0x2]-_0x33d0e4[0x2])<_0x4e5402&&Math[_0x30370e(0x32b)](_0x5187a4[0x3]-_0x33d0e4[0x3])<_0x4e5402;},'equals':function(_0x4be8ae,_0x586092){return _0x4be8ae[0x0]===_0x586092[0x0]&&_0x4be8ae[0x1]===_0x586092[0x1]&&_0x4be8ae[0x2]===_0x586092[0x2]&&_0x4be8ae[0x3]===_0x586092[0x3];},'identity':function(_0x38d863){return _0x38d863=null!=_0x38d863?_0x38d863:new _0xf7b8c1(0x4),(_0x38d863[0x0]=0x0,_0x38d863[0x1]=0x0,_0x38d863[0x2]=0x0,_0x38d863[0x3]=0x1,_0x38d863);},'rotationTo':function(_0x2f469b,_0x2bb80b,_0x32038d){var _0x20bd09=_0x5ef280,_0x32038d=null!=_0x32038d?_0x32038d:new _0xf7b8c1(0x4),_0x3b2fdf=_0x133a57[_0x20bd09(0x247)](_0x2f469b,_0x2bb80b);return _0x3b2fdf<-0.999999?(_0x133a57[_0x20bd09(0x21e)](_0x53c40c,_0x2f469b,_0x3210ac),_0x133a57[_0x20bd09(0x366)](_0x3210ac)<0.000001&&_0x133a57[_0x20bd09(0x21e)](_0x4bc01f,_0x2f469b,_0x3210ac),_0x133a57[_0x20bd09(0x43d)](_0x3210ac,_0x3210ac),_0x1b4420(_0x3210ac,Math['PI'],_0x32038d),_0x32038d):0.999999<_0x3b2fdf?(_0x32038d[0x0]=0x0,_0x32038d[0x1]=0x0,_0x32038d[0x2]=0x0,_0x32038d[0x3]=0x1,_0x32038d):(_0x133a57[_0x20bd09(0x21e)](_0x2f469b,_0x2bb80b,_0x3210ac),_0x32038d[0x0]=_0x3210ac[0x0],_0x32038d[0x1]=_0x3210ac[0x1],_0x32038d[0x2]=_0x3210ac[0x2],_0x32038d[0x3]=0x1+_0x3b2fdf,_0x3f9d43(_0x32038d,_0x32038d));},'sqlerp':function(_0x417636,_0x509c3b,_0x1c0848,_0x92f1d4,_0x4726da,_0x48e725){return _0x48e725=null!=_0x48e725?_0x48e725:new _0xf7b8c1(0x4),(_0x3df77c(_0x417636,_0x92f1d4,_0x4726da,_0x27f805),_0x3df77c(_0x509c3b,_0x1c0848,_0x4726da,_0xd1e051),_0x3df77c(_0x27f805,_0xd1e051,0x2*_0x4726da*(0x1-_0x4726da),_0x48e725),_0x48e725);}};})(_0x41cf27),_0x4e2fea['set'](_0x41cf27,_0xaa0fb4)),_0xaa0fb4;})(_0x23ba51),'vec2':_0x4dd6bd(_0x4e07e1),'vec3':_0x112527(_0x4d4530),'vec4':(_0x251b61=>{var _0x149854=a0_0x40ed;let _0xf26467=_0xe2b28f[_0x149854(0x1d7)](_0x251b61);return _0xf26467||(_0xf26467=(_0x476938=_0x251b61,{'create':_0x2dc0c9,'fromValues':_0x2dc0c9,'set':function(_0x452370,_0xf7986e,_0x2e5b64,_0x5baac1,_0x2766a5){return _0x2766a5=null!=_0x2766a5?_0x2766a5:new _0x476938(0x4),(_0x2766a5[0x0]=_0x452370,_0x2766a5[0x1]=_0xf7986e,_0x2766a5[0x2]=_0x2e5b64,_0x2766a5[0x3]=_0x5baac1,_0x2766a5);},'ceil':function(_0x1733a3,_0x58841f){var _0x27fb4d=_0x149854;return _0x58841f=null!=_0x58841f?_0x58841f:new _0x476938(0x4),(_0x58841f[0x0]=Math[_0x27fb4d(0x228)](_0x1733a3[0x0]),_0x58841f[0x1]=Math[_0x27fb4d(0x228)](_0x1733a3[0x1]),_0x58841f[0x2]=Math[_0x27fb4d(0x228)](_0x1733a3[0x2]),_0x58841f[0x3]=Math[_0x27fb4d(0x228)](_0x1733a3[0x3]),_0x58841f);},'floor':function(_0xc5954b,_0x1ceb97){var _0xb7b3ac=_0x149854;return _0x1ceb97=null!=_0x1ceb97?_0x1ceb97:new _0x476938(0x4),(_0x1ceb97[0x0]=Math[_0xb7b3ac(0x262)](_0xc5954b[0x0]),_0x1ceb97[0x1]=Math[_0xb7b3ac(0x262)](_0xc5954b[0x1]),_0x1ceb97[0x2]=Math['floor'](_0xc5954b[0x2]),_0x1ceb97[0x3]=Math[_0xb7b3ac(0x262)](_0xc5954b[0x3]),_0x1ceb97);},'round':function(_0x13a73b,_0x1097f4){var _0x519e7a=_0x149854;return _0x1097f4=null!=_0x1097f4?_0x1097f4:new _0x476938(0x4),(_0x1097f4[0x0]=Math['round'](_0x13a73b[0x0]),_0x1097f4[0x1]=Math['round'](_0x13a73b[0x1]),_0x1097f4[0x2]=Math[_0x519e7a(0x31f)](_0x13a73b[0x2]),_0x1097f4[0x3]=Math[_0x519e7a(0x31f)](_0x13a73b[0x3]),_0x1097f4);},'clamp':function(_0x477b0a,_0x129a2e=0x0,_0x62dadb=0x1,_0xdfb340){var _0x1c8aaf=_0x149854;return _0xdfb340=null!=_0xdfb340?_0xdfb340:new _0x476938(0x4),(_0xdfb340[0x0]=Math['min'](_0x62dadb,Math['max'](_0x129a2e,_0x477b0a[0x0])),_0xdfb340[0x1]=Math[_0x1c8aaf(0x22a)](_0x62dadb,Math[_0x1c8aaf(0x266)](_0x129a2e,_0x477b0a[0x1])),_0xdfb340[0x2]=Math['min'](_0x62dadb,Math[_0x1c8aaf(0x266)](_0x129a2e,_0x477b0a[0x2])),_0xdfb340[0x3]=Math[_0x1c8aaf(0x22a)](_0x62dadb,Math['max'](_0x129a2e,_0x477b0a[0x3])),_0xdfb340);},'add':function(_0x1029b9,_0x4ff37c,_0x30e85a){return _0x30e85a=null!=_0x30e85a?_0x30e85a:new _0x476938(0x4),(_0x30e85a[0x0]=_0x1029b9[0x0]+_0x4ff37c[0x0],_0x30e85a[0x1]=_0x1029b9[0x1]+_0x4ff37c[0x1],_0x30e85a[0x2]=_0x1029b9[0x2]+_0x4ff37c[0x2],_0x30e85a[0x3]=_0x1029b9[0x3]+_0x4ff37c[0x3],_0x30e85a);},'addScaled':function(_0x31abba,_0x4da284,_0x277625,_0x521b3f){return _0x521b3f=null!=_0x521b3f?_0x521b3f:new _0x476938(0x4),(_0x521b3f[0x0]=_0x31abba[0x0]+_0x4da284[0x0]*_0x277625,_0x521b3f[0x1]=_0x31abba[0x1]+_0x4da284[0x1]*_0x277625,_0x521b3f[0x2]=_0x31abba[0x2]+_0x4da284[0x2]*_0x277625,_0x521b3f[0x3]=_0x31abba[0x3]+_0x4da284[0x3]*_0x277625,_0x521b3f);},'subtract':_0x5528f5,'sub':_0x5528f5,'equalsApproximately':function(_0x3ae0b1,_0x1d23e3){var _0x4c85d8=_0x149854;return Math[_0x4c85d8(0x32b)](_0x3ae0b1[0x0]-_0x1d23e3[0x0])<_0x4e5402&&Math['abs'](_0x3ae0b1[0x1]-_0x1d23e3[0x1])<_0x4e5402&&Math[_0x4c85d8(0x32b)](_0x3ae0b1[0x2]-_0x1d23e3[0x2])<_0x4e5402&&Math[_0x4c85d8(0x32b)](_0x3ae0b1[0x3]-_0x1d23e3[0x3])<_0x4e5402;},'equals':function(_0x5d45ac,_0x427e97){return _0x5d45ac[0x0]===_0x427e97[0x0]&&_0x5d45ac[0x1]===_0x427e97[0x1]&&_0x5d45ac[0x2]===_0x427e97[0x2]&&_0x5d45ac[0x3]===_0x427e97[0x3];},'lerp':_0xce0bfb,'lerpV':function(_0xef99c7,_0x14328b,_0x590ddd,_0x4db003){return _0x4db003=null!=_0x4db003?_0x4db003:new _0x476938(0x4),(_0x4db003[0x0]=_0xef99c7[0x0]+_0x590ddd[0x0]*(_0x14328b[0x0]-_0xef99c7[0x0]),_0x4db003[0x1]=_0xef99c7[0x1]+_0x590ddd[0x1]*(_0x14328b[0x1]-_0xef99c7[0x1]),_0x4db003[0x2]=_0xef99c7[0x2]+_0x590ddd[0x2]*(_0x14328b[0x2]-_0xef99c7[0x2]),_0x4db003[0x3]=_0xef99c7[0x3]+_0x590ddd[0x3]*(_0x14328b[0x3]-_0xef99c7[0x3]),_0x4db003);},'max':function(_0x467ec0,_0x39c1d4,_0x4d0586){var _0x3cd75e=_0x149854;return _0x4d0586=null!=_0x4d0586?_0x4d0586:new _0x476938(0x4),(_0x4d0586[0x0]=Math['max'](_0x467ec0[0x0],_0x39c1d4[0x0]),_0x4d0586[0x1]=Math[_0x3cd75e(0x266)](_0x467ec0[0x1],_0x39c1d4[0x1]),_0x4d0586[0x2]=Math[_0x3cd75e(0x266)](_0x467ec0[0x2],_0x39c1d4[0x2]),_0x4d0586[0x3]=Math[_0x3cd75e(0x266)](_0x467ec0[0x3],_0x39c1d4[0x3]),_0x4d0586);},'min':function(_0x564443,_0x14ac2d,_0x4fcbb0){var _0x542e8b=_0x149854;return _0x4fcbb0=null!=_0x4fcbb0?_0x4fcbb0:new _0x476938(0x4),(_0x4fcbb0[0x0]=Math[_0x542e8b(0x22a)](_0x564443[0x0],_0x14ac2d[0x0]),_0x4fcbb0[0x1]=Math['min'](_0x564443[0x1],_0x14ac2d[0x1]),_0x4fcbb0[0x2]=Math[_0x542e8b(0x22a)](_0x564443[0x2],_0x14ac2d[0x2]),_0x4fcbb0[0x3]=Math[_0x542e8b(0x22a)](_0x564443[0x3],_0x14ac2d[0x3]),_0x4fcbb0);},'mulScalar':_0x415ed0,'scale':_0x415ed0,'divScalar':function(_0x57d47f,_0x42c2f4,_0x358716){return _0x358716=null!=_0x358716?_0x358716:new _0x476938(0x4),(_0x358716[0x0]=_0x57d47f[0x0]/_0x42c2f4,_0x358716[0x1]=_0x57d47f[0x1]/_0x42c2f4,_0x358716[0x2]=_0x57d47f[0x2]/_0x42c2f4,_0x358716[0x3]=_0x57d47f[0x3]/_0x42c2f4,_0x358716);},'inverse':_0x2b8bc4,'invert':_0x2b8bc4,'dot':function(_0x679181,_0x5759eb){return _0x679181[0x0]*_0x5759eb[0x0]+_0x679181[0x1]*_0x5759eb[0x1]+_0x679181[0x2]*_0x5759eb[0x2]+_0x679181[0x3]*_0x5759eb[0x3];},'length':_0x13f2ad,'len':_0x13f2ad,'lengthSq':_0xc82e1b,'lenSq':_0xc82e1b,'distance':_0xde755c,'dist':_0xde755c,'distanceSq':_0x3de630,'distSq':_0x3de630,'normalize':_0x239ea2,'negate':function(_0x1046ce,_0x28d8b4){return _0x28d8b4=null!=_0x28d8b4?_0x28d8b4:new _0x476938(0x4),(_0x28d8b4[0x0]=-_0x1046ce[0x0],_0x28d8b4[0x1]=-_0x1046ce[0x1],_0x28d8b4[0x2]=-_0x1046ce[0x2],_0x28d8b4[0x3]=-_0x1046ce[0x3],_0x28d8b4);},'copy':_0x172f07,'clone':_0x172f07,'multiply':_0x3fb342,'mul':_0x3fb342,'divide':_0x4f5237,'div':_0x4f5237,'zero':function(_0x57e8ef){return _0x57e8ef=null!=_0x57e8ef?_0x57e8ef:new _0x476938(0x4),(_0x57e8ef[0x0]=0x0,_0x57e8ef[0x1]=0x0,_0x57e8ef[0x2]=0x0,_0x57e8ef[0x3]=0x0,_0x57e8ef);},'transformMat4':function(_0x584ea5,_0x402dfa,_0xa1b027){var _0xa1b027=null!=_0xa1b027?_0xa1b027:new _0x476938(0x4),_0x644409=_0x584ea5[0x0],_0x10db6a=_0x584ea5[0x1],_0x384242=_0x584ea5[0x2],_0x584ea5=_0x584ea5[0x3];return _0xa1b027[0x0]=_0x402dfa[0x0]*_0x644409+_0x402dfa[0x4]*_0x10db6a+_0x402dfa[0x8]*_0x384242+_0x402dfa[0xc]*_0x584ea5,_0xa1b027[0x1]=_0x402dfa[0x1]*_0x644409+_0x402dfa[0x5]*_0x10db6a+_0x402dfa[0x9]*_0x384242+_0x402dfa[0xd]*_0x584ea5,_0xa1b027[0x2]=_0x402dfa[0x2]*_0x644409+_0x402dfa[0x6]*_0x10db6a+_0x402dfa[0xa]*_0x384242+_0x402dfa[0xe]*_0x584ea5,_0xa1b027[0x3]=_0x402dfa[0x3]*_0x644409+_0x402dfa[0x7]*_0x10db6a+_0x402dfa[0xb]*_0x384242+_0x402dfa[0xf]*_0x584ea5,_0xa1b027;},'setLength':_0x41562a,'truncate':function(_0x9e39c,_0x2fb9eb,_0x544dcc){return _0x544dcc=null!=_0x544dcc?_0x544dcc:new _0x476938(0x4),_0x13f2ad(_0x9e39c)>_0x2fb9eb?_0x41562a(_0x9e39c,_0x2fb9eb,_0x544dcc):_0x172f07(_0x9e39c,_0x544dcc);},'midpoint':function(_0x1fe9b4,_0x46a6d2,_0x1ef0d8){return _0xce0bfb(_0x1fe9b4,_0x46a6d2,0.5,null!=_0x1ef0d8?_0x1ef0d8:new _0x476938(0x4));}}),_0xe2b28f[_0x149854(0x37f)](_0x251b61,_0xf26467)),_0xf26467;function _0x2dc0c9(_0x5eb672,_0x38fcec,_0x5f68,_0x587d72){var _0x2e8659=new _0x476938(0x4);return void 0x0!==_0x5eb672&&(_0x2e8659[0x0]=_0x5eb672,void 0x0!==_0x38fcec)&&(_0x2e8659[0x1]=_0x38fcec,void 0x0!==_0x5f68)&&(_0x2e8659[0x2]=_0x5f68,void 0x0!==_0x587d72)&&(_0x2e8659[0x3]=_0x587d72),_0x2e8659;}function _0x5528f5(_0xe5c631,_0x4d6f0f,_0x41b9cd){return _0x41b9cd=null!=_0x41b9cd?_0x41b9cd:new _0x476938(0x4),(_0x41b9cd[0x0]=_0xe5c631[0x0]-_0x4d6f0f[0x0],_0x41b9cd[0x1]=_0xe5c631[0x1]-_0x4d6f0f[0x1],_0x41b9cd[0x2]=_0xe5c631[0x2]-_0x4d6f0f[0x2],_0x41b9cd[0x3]=_0xe5c631[0x3]-_0x4d6f0f[0x3],_0x41b9cd);}function _0xce0bfb(_0x188c7f,_0x21e235,_0x4d136c,_0x391e14){return _0x391e14=null!=_0x391e14?_0x391e14:new _0x476938(0x4),(_0x391e14[0x0]=_0x188c7f[0x0]+_0x4d136c*(_0x21e235[0x0]-_0x188c7f[0x0]),_0x391e14[0x1]=_0x188c7f[0x1]+_0x4d136c*(_0x21e235[0x1]-_0x188c7f[0x1]),_0x391e14[0x2]=_0x188c7f[0x2]+_0x4d136c*(_0x21e235[0x2]-_0x188c7f[0x2]),_0x391e14[0x3]=_0x188c7f[0x3]+_0x4d136c*(_0x21e235[0x3]-_0x188c7f[0x3]),_0x391e14);}function _0x415ed0(_0x179d7e,_0x112914,_0x3dcdd3){return _0x3dcdd3=null!=_0x3dcdd3?_0x3dcdd3:new _0x476938(0x4),(_0x3dcdd3[0x0]=_0x179d7e[0x0]*_0x112914,_0x3dcdd3[0x1]=_0x179d7e[0x1]*_0x112914,_0x3dcdd3[0x2]=_0x179d7e[0x2]*_0x112914,_0x3dcdd3[0x3]=_0x179d7e[0x3]*_0x112914,_0x3dcdd3);}function _0x2b8bc4(_0x57c059,_0x8cc25c){return _0x8cc25c=null!=_0x8cc25c?_0x8cc25c:new _0x476938(0x4),(_0x8cc25c[0x0]=0x1/_0x57c059[0x0],_0x8cc25c[0x1]=0x1/_0x57c059[0x1],_0x8cc25c[0x2]=0x1/_0x57c059[0x2],_0x8cc25c[0x3]=0x1/_0x57c059[0x3],_0x8cc25c);}function _0x13f2ad(_0x2eee2d){var _0xdbc166=_0x149854,_0x593c40=_0x2eee2d[0x0],_0xa33dd4=_0x2eee2d[0x1],_0x3f2d46=_0x2eee2d[0x2],_0x2eee2d=_0x2eee2d[0x3];return Math[_0xdbc166(0x297)](_0x593c40*_0x593c40+_0xa33dd4*_0xa33dd4+_0x3f2d46*_0x3f2d46+_0x2eee2d*_0x2eee2d);}function _0xc82e1b(_0x339a3c){var _0x4a184f=_0x339a3c[0x0],_0x5c3b12=_0x339a3c[0x1],_0x37af4d=_0x339a3c[0x2],_0x339a3c=_0x339a3c[0x3];return _0x4a184f*_0x4a184f+_0x5c3b12*_0x5c3b12+_0x37af4d*_0x37af4d+_0x339a3c*_0x339a3c;}function _0xde755c(_0x168e1d,_0x224564){var _0x14acad=_0x149854,_0x50ff5f=_0x168e1d[0x0]-_0x224564[0x0],_0x442af6=_0x168e1d[0x1]-_0x224564[0x1],_0x49fbf6=_0x168e1d[0x2]-_0x224564[0x2],_0x168e1d=_0x168e1d[0x3]-_0x224564[0x3];return Math[_0x14acad(0x297)](_0x50ff5f*_0x50ff5f+_0x442af6*_0x442af6+_0x49fbf6*_0x49fbf6+_0x168e1d*_0x168e1d);}function _0x3de630(_0x3d7332,_0x49399b){var _0x236f77=_0x3d7332[0x0]-_0x49399b[0x0],_0x1a76c2=_0x3d7332[0x1]-_0x49399b[0x1],_0xcbc4a5=_0x3d7332[0x2]-_0x49399b[0x2],_0x3d7332=_0x3d7332[0x3]-_0x49399b[0x3];return _0x236f77*_0x236f77+_0x1a76c2*_0x1a76c2+_0xcbc4a5*_0xcbc4a5+_0x3d7332*_0x3d7332;}function _0x239ea2(_0x3ae8ae,_0x2e9c72){var _0x2b42ac=_0x149854,_0x2e9c72=null!=_0x2e9c72?_0x2e9c72:new _0x476938(0x4),_0x4329f0=_0x3ae8ae[0x0],_0x1be5fd=_0x3ae8ae[0x1],_0x2408d3=_0x3ae8ae[0x2],_0x3ae8ae=_0x3ae8ae[0x3],_0x3eefc2=Math[_0x2b42ac(0x297)](_0x4329f0*_0x4329f0+_0x1be5fd*_0x1be5fd+_0x2408d3*_0x2408d3+_0x3ae8ae*_0x3ae8ae);return 0.00001<_0x3eefc2?(_0x2e9c72[0x0]=_0x4329f0/_0x3eefc2,_0x2e9c72[0x1]=_0x1be5fd/_0x3eefc2,_0x2e9c72[0x2]=_0x2408d3/_0x3eefc2,_0x2e9c72[0x3]=_0x3ae8ae/_0x3eefc2):(_0x2e9c72[0x0]=0x0,_0x2e9c72[0x1]=0x0,_0x2e9c72[0x2]=0x0,_0x2e9c72[0x3]=0x0),_0x2e9c72;}function _0x172f07(_0x3c971,_0x4bfc39){return _0x4bfc39=null!=_0x4bfc39?_0x4bfc39:new _0x476938(0x4),(_0x4bfc39[0x0]=_0x3c971[0x0],_0x4bfc39[0x1]=_0x3c971[0x1],_0x4bfc39[0x2]=_0x3c971[0x2],_0x4bfc39[0x3]=_0x3c971[0x3],_0x4bfc39);}function _0x3fb342(_0x34d540,_0x5dbe5e,_0x2985e0){return _0x2985e0=null!=_0x2985e0?_0x2985e0:new _0x476938(0x4),(_0x2985e0[0x0]=_0x34d540[0x0]*_0x5dbe5e[0x0],_0x2985e0[0x1]=_0x34d540[0x1]*_0x5dbe5e[0x1],_0x2985e0[0x2]=_0x34d540[0x2]*_0x5dbe5e[0x2],_0x2985e0[0x3]=_0x34d540[0x3]*_0x5dbe5e[0x3],_0x2985e0);}function _0x4f5237(_0x30ef27,_0x2968fc,_0x59b3ab){return _0x59b3ab=null!=_0x59b3ab?_0x59b3ab:new _0x476938(0x4),(_0x59b3ab[0x0]=_0x30ef27[0x0]/_0x2968fc[0x0],_0x59b3ab[0x1]=_0x30ef27[0x1]/_0x2968fc[0x1],_0x59b3ab[0x2]=_0x30ef27[0x2]/_0x2968fc[0x2],_0x59b3ab[0x3]=_0x30ef27[0x3]/_0x2968fc[0x3],_0x59b3ab);}function _0x41562a(_0x2554a0,_0x28fa1f,_0x37fb4f){return _0x37fb4f=null!=_0x37fb4f?_0x37fb4f:new _0x476938(0x4),(_0x239ea2(_0x2554a0,_0x37fb4f),_0x415ed0(_0x37fb4f,_0x28fa1f,_0x37fb4f));}var _0x476938;})(_0x24a32e)};}let {}=_0x22476c(Float32Array,Float32Array,Float32Array,Float32Array,Float32Array,Float32Array),{mat4:_0x4ec6f9,quat:_0x28d774,vec2:_0x5775e1,vec3:_0x11221,vec4:_0x5355af}=_0x22476c(Float64Array,Float64Array,Float64Array,Float64Array,Float64Array,Float64Array),{}=_0x22476c(_0x592230,Array,Array,Array,Array,Array),_0x119838={'code':_0xe79d2f(0x23c)},_0x48558f={'code':_0xe79d2f(0x2af)},_0x457b76={'code':_0xe79d2f(0x351)},_0x126892={'code':_0xe79d2f(0x355)},_0x1eb5d3={'code':'\x0d\x0a@group(0)\x20@binding(0)\x20var<uniform>\x20scene:\x20SceneInfoStruct;\x0d\x0a@group(0)\x20@binding(1)\x20var<uniform>\x20lightInfo:\x20LightInfoStruct;\x0d\x0a@group(0)\x20@binding(2)\x20var<storage,read>\x20modelData:\x20array<f32>;\x0d\x0a@group(0)\x20@binding(3)\x20var<storage,read>\x20instanceData:\x20array<f32>;\x0d\x0a@group(0)\x20@binding(4)\x20var<storage,read>\x20meshData:\x20array<f32>;\x0d\x0a@group(0)\x20@binding(5)\x20var<storage,read>\x20meshLodData:\x20array<f32>;\x0d\x0a@group(1)\x20@binding(0)\x20var<storage,read>\x20renderIndex:\x20array<u32>;\x0d\x0a\x0d\x0astruct\x20Model\x20{\x0d\x0a\x20\x20\x20\x20id:\x20u32,\x0d\x0a\x20\x20\x20\x20transform:\x20mat4x4<f32>,\x0d\x0a\x20\x20\x20\x20status:\x20u32,\x0d\x0a};\x0d\x0a\x0d\x0afn\x20getModel(offset:u32)\x20->\x20Model\x20{\x0d\x0a\x20\x20\x20\x20var\x20model\x20:\x20Model;\x0d\x0a\x20\x20\x20\x20model.id\x20=\x20bitcast<u32>(modelData[offset\x20+\x2016]);\x0d\x0a\x0d\x0a\x20\x20\x20\x20model.transform\x20=\x20mat4x4<f32>(\x0d\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20modelData[offset],modelData[offset\x20+\x201],modelData[offset\x20+\x202],modelData[offset\x20+\x203],\x0d\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20modelData[offset\x20+\x204],modelData[offset\x20+\x205],modelData[offset\x20+\x206],modelData[offset\x20+\x207],\x0d\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20modelData[offset\x20+\x208],modelData[offset\x20+\x209],modelData[offset\x20+\x2010],modelData[offset\x20+\x2011],\x0d\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20modelData[offset\x20+\x2012],modelData[offset\x20+\x2013],modelData[offset\x20+\x2014],modelData[offset\x20+\x2015]);\x0d\x0a\x0d\x0a\x20\x20\x20\x20model.status\x20=\x20bitcast<u32>(modelData[offset\x20+\x2017]);\x0d\x0a\x0d\x0a\x20\x20\x20\x20return\x20model;\x0d\x0a}\x0d\x0a\x0d\x0astruct\x20Instance\x20{\x0d\x0a\x20\x20\x20\x20id:\x20u32,\x0d\x0a\x20\x20\x20\x20transform:\x20mat4x4<f32>,\x0d\x0a\x20\x20\x20\x20modelPtr:\x20u32,\x0d\x0a\x20\x20\x20\x20meshLodPtr:\x20u32,\x0d\x0a\x20\x20\x20\x20status:\x20u32,\x0d\x0a\x20\x20\x20\x20materialPtr:\x20u32,\x0d\x0a};\x0d\x0a\x0d\x0afn\x20getInstance(offset:u32)\x20->\x20Instance\x20{\x0d\x0a\x20\x20\x20\x20var\x20ins\x20:\x20Instance;\x0d\x0a\x0d\x0a\x20\x20\x20\x20ins.modelPtr\x20=\x20bitcast<u32>(instanceData[offset]);\x0d\x0a\x20\x20\x20\x20ins.id\x20=\x20bitcast<u32>(instanceData[offset\x20+\x201]);\x0d\x0a\x0d\x0a\x20\x20\x20\x20ins.transform\x20=\x20mat4x4<f32>(\x0d\x0a\x20\x20\x20\x20instanceData[offset\x20+\x203],instanceData[offset\x20+\x204],instanceData[offset\x20+\x205],0,\x0d\x0a\x20\x20\x20\x20instanceData[offset\x20+\x206],instanceData[offset\x20+\x207],instanceData[offset\x20+\x208],0,\x0d\x0a\x20\x20\x20\x20instanceData[offset\x20+\x209],instanceData[offset\x20+\x2010],instanceData[offset\x20+\x2011],0,\x0d\x0a\x20\x20\x20\x20instanceData[offset\x20+\x2012],instanceData[offset\x20+\x2013],instanceData[offset\x20+\x2014],1);\x0d\x0a\x0d\x0a\x20\x20\x20\x20ins.meshLodPtr\x20=\x20bitcast<u32>(instanceData[offset\x20+\x2025]);\x0d\x0a\x20\x20\x20\x20ins.status\x20=\x20bitcast<u32>(instanceData[offset\x20+\x2022]);\x0d\x0a\x20\x20\x20\x20ins.materialPtr\x20=\x20bitcast<u32>(instanceData[offset\x20+\x2023]);\x0d\x0a\x0d\x0a\x20\x20\x20\x20return\x20ins;\x0d\x0a}\x0d\x0a\x0d\x0astruct\x20MeshLodInfo\x20{\x0d\x0a\x20\x20\x20\x20meshId:\x20u32,\x0d\x0a\x20\x20\x20\x20density:\x20f32,\x0d\x0a\x20\x20\x20\x20materialPtr:\x20u32,\x0d\x0a\x20\x20\x20\x20verticesCount:\x20u32,\x0d\x0a\x20\x20\x20\x20meshPtr:\x20u32,\x0d\x0a};\x0d\x0a\x0d\x0afn\x20getMeshLodInfo(meshLodPtr:u32)\x20->\x20MeshLodInfo\x20{\x0d\x0a\x0d\x0a\x20\x20\x20\x20var\x20meshLodInfo\x20:\x20MeshLodInfo;\x0d\x0a\x0d\x0a//\x20\x20\x20\x20meshLodInfo.meshId\x20=\x20bitcast<u32>(meshLodData[meshLodPtr]);\x0d\x0a//\x20\x20\x20\x20meshLodInfo.density\x20=\x20meshLodData[meshLodPtr\x20+\x201];\x0d\x0a\x20\x20\x20\x20meshLodInfo.materialPtr\x20=\x20bitcast<u32>(meshLodData[meshLodPtr\x20+\x202]);\x0d\x0a//\x20\x20\x20\x20meshLodInfo.verticesCount\x20=\x20bitcast<u32>(meshLodData[meshLodPtr\x20+\x203]);\x0d\x0a\x20\x20\x20\x20meshLodInfo.meshPtr\x20=\x20bitcast<u32>(meshLodData[meshLodPtr\x20+\x204]);\x0d\x0a\x0d\x0a\x20\x20\x20\x20return\x20meshLodInfo;\x0d\x0a\x0d\x0a}\x0d\x0a\x0d\x0astruct\x20Position\x20{\x0d\x0a\x20\x20\x20\x20position:\x20vec3<f32>,\x0d\x0a\x20\x20\x20\x20normal:\x20vec3<f32>,\x0d\x0a\x20\x20\x20\x20uv:\x20vec2<f32>,\x0d\x0a};\x0d\x0a\x0d\x0afn\x20getPosition(offset:u32,vertexIndex:u32)\x20->\x20Position\x20{\x0d\x0a\x20\x20\x20\x20var\x20pos\x20:\x20Position;\x0d\x0a\x20\x20\x20\x20var\x20vertexIndexTemp\x20=\x20vertexIndex\x20*\x203;\x0d\x0a\x20\x20\x20\x20var\x20positionOffset\x20=\x20bitcast<u32>(meshData[offset\x20+\x20vertexIndexTemp]);\x0d\x0a\x20\x20\x20\x20var\x20normalOffset\x20=\x20bitcast<u32>(meshData[offset\x20+\x20vertexIndexTemp\x20+\x201]);\x0d\x0a\x20\x20\x20\x20var\x20uvOffset\x20=\x20bitcast<u32>(meshData[offset\x20+\x20vertexIndexTemp\x20+\x202]);\x0d\x0a\x0d\x0a\x20\x20\x20\x20pos.position\x20=\x20vec3(meshData[offset\x20+\x20positionOffset],meshData[offset\x20+\x20positionOffset\x20+\x201],meshData[offset\x20+\x20positionOffset\x20+\x202]);\x0d\x0a\x20\x20\x20\x20pos.normal\x20=\x20vec3(meshData[offset\x20+\x20normalOffset],meshData[offset\x20+\x20normalOffset\x20+\x201],meshData[offset\x20+\x20normalOffset\x20+\x202]);\x0d\x0a\x20\x20\x20\x20pos.uv\x20=\x20vec2(meshData[offset\x20+\x20uvOffset],meshData[offset\x20+\x20uvOffset\x20+\x201]);\x0d\x0a\x0d\x0a\x20\x20\x20\x20return\x20pos;\x0d\x0a}\x0d\x0a\x0d\x0astruct\x20VertexInput\x20{\x0d\x0a\x20\x20@builtin(vertex_index)\x20vertexIndex\x20:\x20u32,\x0d\x0a\x20\x20@builtin(instance_index)\x20instanceIndex\x20:\x20u32\x0d\x0a}\x0d\x0astruct\x20VertexOutput\x20{\x0d\x0a\x20\x20@builtin(position)\x20position:\x20vec4<f32>,\x0d\x0a\x20\x20@location(0)\x20@interpolate(flat)\x20instancePtr:\x20u32,\x0d\x0a\x20\x20@location(1)\x20normal:\x20vec3<f32>,\x0d\x0a\x20\x20@location(2)\x20zSM:\x20f32,\x0d\x0a};\x0d\x0a\x0d\x0a@vertex\x0d\x0afn\x20vert_main(input\x20:VertexInput)\x20->\x20VertexOutput\x20{\x0d\x0a\x0d\x0a\x20\x20\x20\x20//\x20instancePtr,vertexIndex\x0d\x0a\x20\x20\x20\x20let\x20ri\x20=\x20vec2<u32>(input.instanceIndex,input.vertexIndex);\x0d\x0a\x20\x20\x20\x20//\x20let\x20ri\x20=\x20getRenderIndex(input);\x0d\x0a\x0d\x0a\x20\x20\x20\x20var\x20output:\x20VertexOutput;\x0d\x0a\x20\x20\x20\x20output.instancePtr\x20=\x20ri[0];\x0d\x0a\x0d\x0a\x20\x20\x20\x20let\x20ins\x20=\x20getInstance(ri[0]);\x0d\x0a\x20\x20\x20\x20let\x20model\x20=\x20getModel(ins.modelPtr);\x0d\x0a\x0d\x0a\x20\x20\x20\x20let\x20meshLodInfo\x20=\x20getMeshLodInfo(ins.meshLodPtr);\x0d\x0a\x20\x20\x20\x20let\x20pos\x20=\x20getPosition(meshLodInfo.meshPtr,ri[1]);\x0d\x0a\x0d\x0a\x20\x20\x20\x20output.position\x20=\x20lightInfo.lightViewProjMatrix\x20*\x20model.transform\x20*\x20ins.transform\x20*\x20vec4(pos.position,1);\x0d\x0a\x0d\x0a\x0d\x0a\x20\x20\x20\x20let\x20model_transform3x3\x20=\x20mat3x3<f32>(model.transform[0].xyz,model.transform[1].xyz,model.transform[2].xyz);\x0d\x0a\x20\x20\x20\x20let\x20ins_transform3x3\x20=\x20mat3x3<f32>(ins.transform[0].xyz,ins.transform[1].xyz,ins.transform[2].xyz);\x0d\x0a\x0d\x0a\x20\x20\x20\x20output.normal\x20=\x20model_transform3x3\x20*\x20ins_transform3x3\x20*\x20pos.normal;\x0d\x0a\x20\x20\x20\x20return\x20output;\x0d\x0a}\x0d\x0a\x0d\x0astruct\x20FragmentOutput\x20{\x0d\x0a//\x20\x20@builtin(frag_depth)\x20depth:\x20f32,\x0d\x0a\x20\x20@location(0)\x20instancePtr\x20:\x20u32,\x0d\x0a}\x0d\x0a\x0d\x0a@fragment\x0d\x0afn\x20frag_main(input\x20:\x20VertexOutput)\x20->\x20FragmentOutput\x20{\x0d\x0a\x0d\x0a\x20\x20\x20\x20var\x20output\x20:\x20FragmentOutput;\x0d\x0a\x20\x20\x20\x20output.instancePtr\x20=\x20input.instancePtr;\x0d\x0a\x20\x20\x20\x20return\x20output;\x0d\x0a}\x0d\x0a\x0d\x0a\x0d\x0a'},_0x1a8648={'code':'\x0d\x0a@group(0)\x20@binding(0)\x20var<storage,read>\x20updateData:\x20array<u32>;\x0d\x0a@group(0)\x20@binding(1)\x20var<storage,read_write>\x20meshLodData:\x20array<u32>;\x0d\x0a\x0d\x0a\x0d\x0astruct\x20InputData\x20{\x0d\x0a\x20\x20\x20@builtin(local_invocation_id)\x20local_id:\x20vec3<u32>,\x0d\x0a\x20\x20\x20@builtin(local_invocation_index)\x20local_index:\x20u32,\x0d\x0a\x20\x20\x20@builtin(global_invocation_id)\x20global_id:\x20vec3<u32>,\x0d\x0a}\x0d\x0a\x0d\x0aoverride\x20perWorkgroup\x20:\x20u32;\x0d\x0a\x0d\x0a@compute\x20@workgroup_size(perWorkgroup)\x0d\x0afn\x20main(input:\x20InputData)\x20{\x0d\x0a\x20\x20\x20\x20let\x20i\x20=\x20input.global_id.x\x20*\x202;\x0d\x0a\x20\x20\x20\x20if(updateData[0]\x20>\x20i){\x0d\x0a\x20\x20\x20\x20\x20\x20\x20\x20meshLodData[updateData[i+1u]]\x20=\x20updateData[i+2u];\x0d\x0a\x20\x20\x20\x20}\x0d\x0a}\x0d\x0a'},_0x5ccf92={'code':_0xe79d2f(0x386)},_0x1504ec={'code':'\x0d\x0a@group(0)\x20@binding(0)\x20var<storage,read_write>\x20lightBodiesSpaceAdd:\x20array<u32>;\x0d\x0a@group(0)\x20@binding(1)\x20var<storage,read_write>\x20lightBodiesSpace:\x20array<atomic<u32>>;\x0d\x0a\x0d\x0astruct\x20InputData\x20{\x0d\x0a\x20\x20\x20@builtin(local_invocation_id)\x20local_id:\x20vec3<u32>,\x0d\x0a\x20\x20\x20@builtin(local_invocation_index)\x20local_index:\x20u32,\x0d\x0a\x20\x20\x20@builtin(global_invocation_id)\x20global_id:\x20vec3<u32>,\x0d\x0a}\x0d\x0a\x0d\x0aoverride\x20spaceTotalCount\x20:\x20u32;\x0d\x0aoverride\x20lightBodiesSize\x20:\x20u32;\x0d\x0a\x0d\x0a@compute\x20@workgroup_size(64)\x0d\x0afn\x20main(input:\x20InputData)\x20{\x0d\x0a\x0d\x0a\x20\x20\x20\x20if(input.global_id.x\x20<\x201\x20||\x20input.global_id.x\x20*\x202\x20>\x20lightBodiesSpaceAdd[0]\x20||\x20lightBodiesSpaceAdd[input.global_id.x\x20*\x202]\x20==\x200){\x0d\x0a\x20\x20\x20\x20\x20\x20\x20\x20return\x20;\x0d\x0a\x20\x20\x20\x20}\x0d\x0a\x20\x20\x20\x20let\x20p_offset\x20=\x20lightBodiesSpaceAdd[input.global_id.x\x20*\x202];\x0d\x0a\x20\x20\x20\x20let\x20b1\x20=\x20lightBodiesSpaceAdd[input.global_id.x\x20*\x202\x20+\x201];\x0d\x0a\x20\x20\x20\x20let\x20c_offset\x20=\x20p_offset\x20+\x20b1;\x0d\x0a\x20\x20\x20\x20if\x20((atomicOr(&lightBodiesSpace[c_offset],\x201u)&1)\x20==\x200)\x20{\x0d\x0a\x20\x20\x20\x20\x20\x20\x20\x20var\x20i_offset\x20=\x200u;\x0d\x0a\x20\x20\x20\x20\x20\x20\x20\x20var\x20loopMaxCount\x20=\x201000u;\x0d\x0a\x20\x20\x20\x20\x20\x20\x20\x20loop\x20{\x0d\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20i_offset\x20=\x20atomicAdd(&lightBodiesSpace[0],\x20lightBodiesSize);\x0d\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20if\x20spaceTotalCount\x20<\x20i_offset{\x0d\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20atomicMin(&lightBodiesSpace[0],\x202000u);\x0d\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20}else\x20if(p_offset\x20!=\x20i_offset\x0d\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20&&\x20(atomicLoad(&lightBodiesSpace[i_offset\x20\x20])&1)\x20==\x200\x0d\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20&&\x20(atomicLoad(&lightBodiesSpace[i_offset+1])&1)\x20==\x200\x0d\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20&&\x20(atomicLoad(&lightBodiesSpace[i_offset+2])&1)\x20==\x200\x0d\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20&&\x20(atomicLoad(&lightBodiesSpace[i_offset+3])&1)\x20==\x200\x0d\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20&&\x20(atomicLoad(&lightBodiesSpace[i_offset+4])&1)\x20==\x200\x0d\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20&&\x20(atomicLoad(&lightBodiesSpace[i_offset+5])&1)\x20==\x200\x0d\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20&&\x20(atomicLoad(&lightBodiesSpace[i_offset+6])&1)\x20==\x200\x0d\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20&&\x20(atomicLoad(&lightBodiesSpace[i_offset+7])&1)\x20==\x200){\x0d\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20//\x20鍘熷鐖秈d鐨勫紩鐢ㄦ敼鍐欎负0\x0d\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20let\x20parentId\x20=\x20atomicLoad(&lightBodiesSpace[i_offset+8]);\x0d\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20if(parentId\x20!=\x200){\x0d\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20atomicStore(&lightBodiesSpace[parentId],0);\x0d\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20}\x0d\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20atomicStore(&lightBodiesSpace[i_offset\x20\x20],0);\x0d\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20atomicStore(&lightBodiesSpace[i_offset+1],0);\x0d\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20atomicStore(&lightBodiesSpace[i_offset+2],0);\x0d\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20atomicStore(&lightBodiesSpace[i_offset+3],0);\x0d\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20atomicStore(&lightBodiesSpace[i_offset+4],0);\x0d\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20atomicStore(&lightBodiesSpace[i_offset+5],0);\x0d\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20atomicStore(&lightBodiesSpace[i_offset+6],0);\x0d\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20atomicStore(&lightBodiesSpace[i_offset+7],0);\x0d\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20//\x20鍐欏叆鐖秈d\x0d\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20atomicStore(&lightBodiesSpace[i_offset+8],p_offset);\x0d\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20atomicStore(&lightBodiesSpace[i_offset+9],b1\x20<<\x2029u);\x0d\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20atomicStore(&lightBodiesSpace[i_offset+10],0);\x0d\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20atomicStore(&lightBodiesSpace[i_offset+11],0);\x0d\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20atomicStore(&lightBodiesSpace[i_offset+12],0);\x0d\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20atomicStore(&lightBodiesSpace[i_offset+13],0);\x0d\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20atomicStore(&lightBodiesSpace[i_offset+14],0);\x0d\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20atomicStore(&lightBodiesSpace[i_offset+15],0);\x0d\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20atomicStore(&lightBodiesSpace[i_offset+16],0);\x0d\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20atomicStore(&lightBodiesSpace[i_offset+17],0);\x0d\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20atomicStore(&lightBodiesSpace[i_offset+18],0);\x0d\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20atomicStore(&lightBodiesSpace[i_offset+19],0);\x0d\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20break;\x0d\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20}\x0d\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20loopMaxCount--;\x0d\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20if\x20(loopMaxCount\x20==\x200)\x20{\x0d\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20i_offset\x20=\x200u;\x0d\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20break;\x0d\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20}\x0d\x0a\x20\x20\x20\x20\x20\x20\x20\x20}\x0d\x0a\x20\x20\x20\x20\x20\x20\x20\x20if(i_offset\x20==\x200){\x0d\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20atomicAnd(&lightBodiesSpace[c_offset],\x204294967294u);\x0d\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20return\x20;\x0d\x0a\x20\x20\x20\x20\x20\x20\x20\x20}else{\x0d\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20atomicStore(&lightBodiesSpace[c_offset],\x20(i_offset\x20<<\x201)\x20|\x201);\x0d\x0a\x20\x20\x20\x20\x20\x20\x20\x20}\x0d\x0a\x20\x20\x20\x20}\x0d\x0a\x0d\x0a\x0d\x0a}\x0d\x0a\x0d\x0a////\x20u32鐨�1065353216\x20绛変簬\x20f32\x20鐨刓x201.0\x0d\x0a//atomicStore(&lightBodiesSpace[i_offset+2],1065353216);'},_0x3d1ff9={'code':_0xe79d2f(0x1cd)},_0x2a6a10={'code':_0xe79d2f(0x1d9)},_0x3ba714={'code':_0xe79d2f(0x212)},_0x10e789={'code':_0xe79d2f(0x225)},_0x12afc0={'code':_0xe79d2f(0x1c9)},_0x14a031={'code':_0xe79d2f(0x1e9)},_0x2f9133={'code':'const\x20pi\x20=\x203.14159265359;\x0d\x0a\x0d\x0a//\x20A\x20psuedo\x20random\x20number.\x20Initialized\x20with\x20init_rand(),\x20updated\x20with\x20rand().\x0d\x0avar<private>\x20rnd\x20:\x20vec3u;\x0d\x0a\x0d\x0a//\x20Initializes\x20the\x20random\x20number\x20generator.\x0d\x0afn\x20init_rand(invocation_id\x20:\x20vec3u,\x20seed\x20:\x20vec3u)\x20{\x0d\x0a//\x20\x20const\x20A\x20=\x20vec3(1741651\x20*\x201009,\x0d\x0a//\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20140893\x20\x20*\x201609\x20*\x2013,\x0d\x0a//\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x206521\x20\x20\x20\x20*\x20983\x20\x20*\x207\x20*\x202);\x0d\x0a\x20\x20const\x20A\x20=\x20vec3(1757325859u,\x0d\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x202947058881u,\x0d\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x2089742002u);\x0d\x0a\x20\x20rnd\x20=\x20(invocation_id\x20*\x20A)\x20^\x20seed;\x0d\x0a}\x0d\x0a\x0d\x0a//\x20杩斿洖\x200\x20鍒癨x201\x20涔嬮棿鐨勯殢鏈烘暟銆俓x0d\x0afn\x20rand()\x20->\x20f32\x20{\x0d\x0a//\x20\x20const\x20C\x20=\x20vec3(60493\x20\x20*\x209377,\x0d\x0a//\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x2011279\x20\x20*\x202539\x20*\x2023,\x0d\x0a//\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x207919\x20\x20\x20*\x20631\x20\x20*\x205\x20*\x203);\x0d\x0a\x20\x20const\x20C\x20=\x20vec3(567242861u,\x0d\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20658659763u,\x0d\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x2074953335u);\x0d\x0a\x0d\x0a\x20\x20rnd\x20=\x20(rnd\x20*\x20C)\x20^\x20(rnd.yzx\x20>>\x20vec3(4u));\x0d\x0a\x20\x20return\x20f32(rnd.x\x20^\x20rnd.y)\x20/\x20f32(0xffffffff);\x0d\x0a}\x0d\x0a\x0d\x0a//\x20杩斿洖浠x20(0,0,0)\x20涓轰腑蹇冪殑鍗曚綅鐞冧綋鍐呯殑闅忔満鐐广�俓x0d\x0afn\x20rand_unit_sphere()\x20->\x20vec3f\x20{\x0d\x0a\x20\x20\x20\x20var\x20u\x20=\x20rand();\x0d\x0a\x20\x20\x20\x20var\x20v\x20=\x20rand();\x0d\x0a\x20\x20\x20\x20var\x20theta\x20=\x20u\x20*\x202.0\x20*\x20pi;\x0d\x0a\x20\x20\x20\x20var\x20phi\x20=\x20acos(2.0\x20*\x20v\x20-\x201.0);\x0d\x0a\x20\x20\x20\x20var\x20r\x20=\x20pow(rand(),\x201.0/3.0);\x0d\x0a\x20\x20\x20\x20var\x20sin_theta\x20=\x20sin(theta);\x0d\x0a\x20\x20\x20\x20var\x20cos_theta\x20=\x20cos(theta);\x0d\x0a\x20\x20\x20\x20var\x20sin_phi\x20=\x20sin(phi);\x0d\x0a\x20\x20\x20\x20var\x20cos_phi\x20=\x20cos(phi);\x0d\x0a\x20\x20\x20\x20var\x20x\x20=\x20r\x20*\x20sin_phi\x20*\x20sin_theta;\x0d\x0a\x20\x20\x20\x20var\x20y\x20=\x20r\x20*\x20sin_phi\x20*\x20cos_theta;\x0d\x0a\x20\x20\x20\x20var\x20z\x20=\x20r\x20*\x20cos_phi;\x0d\x0a\x20\x20\x20\x20return\x20vec3f(x,\x20y,\x20z);\x0d\x0a}\x0d\x0a\x0d\x0afn\x20rand_concentric_disk()\x20->\x20vec2f\x20{\x0d\x0a\x20\x20\x20\x20let\x20u\x20=\x20vec2f(rand(),\x20rand());\x0d\x0a\x20\x20\x20\x20let\x20uOffset\x20=\x202.f\x20*\x20u\x20-\x20vec2f(1,\x201);\x0d\x0a\x0d\x0a\x20\x20\x20\x20if\x20(uOffset.x\x20==\x200\x20&&\x20uOffset.y\x20==\x200){\x0d\x0a\x20\x20\x20\x20\x20\x20\x20\x20return\x20vec2f(0,\x200);\x0d\x0a\x20\x20\x20\x20}\x0d\x0a\x0d\x0a\x20\x20\x20\x20var\x20theta\x20=\x200.0;\x0d\x0a\x20\x20\x20\x20var\x20r\x20=\x200.0;\x0d\x0a\x20\x20\x20\x20if\x20(abs(uOffset.x)\x20>\x20abs(uOffset.y))\x20{\x0d\x0a\x20\x20\x20\x20\x20\x20\x20\x20r\x20=\x20uOffset.x;\x0d\x0a\x20\x20\x20\x20\x20\x20\x20\x20theta\x20=\x20(pi\x20/\x204)\x20*\x20(uOffset.y\x20/\x20uOffset.x);\x0d\x0a\x20\x20\x20\x20}\x20else\x20{\x0d\x0a\x20\x20\x20\x20\x20\x20\x20\x20r\x20=\x20uOffset.y;\x0d\x0a\x20\x20\x20\x20\x20\x20\x20\x20theta\x20=\x20(pi\x20/\x202)\x20-\x20(pi\x20/\x204)\x20*\x20(uOffset.x\x20/\x20uOffset.y);\x0d\x0a\x20\x20\x20\x20}\x0d\x0a\x20\x20\x20\x20return\x20r\x20*\x20vec2f(cos(theta),\x20sin(theta));\x0d\x0a}\x0d\x0a\x0d\x0afn\x20rand_cosine_weighted_hemisphere()\x20->\x20vec3f\x20{\x0d\x0a\x20\x20\x20\x20let\x20d\x20=\x20rand_concentric_disk();\x0d\x0a\x20\x20\x20\x20let\x20z\x20=\x20sqrt(max(0.0,\x201.0\x20-\x20d.x\x20*\x20d.x\x20-\x20d.y\x20*\x20d.y));\x0d\x0a\x20\x20\x20\x20return\x20vec3f(d.x,\x20d.y,\x20z);\x0d\x0a}\x0d\x0a\x0d\x0a//\x20鏋勫缓浠嶼杞村埌鐩爣娉曠嚎鐨勫潗鏍囩郴杞崲鐭╅樀\x0d\x0afn\x20construct_coordinate_system(n:\x20vec3<f32>)\x20->\x20mat3x3<f32>\x20{\x0d\x0a\x20\x20\x20\x20var\x20N\x20=\x20n;\x0d\x0a\x20\x20\x20\x20//\x20鎵惧埌涓嶯鏈�涓嶇浉鍏崇殑鍚戦噺\x0d\x0a\x20\x20\x20\x20var\x20helperVec\x20=\x20vec3<f32>(1,\x200,\x200);\x0d\x0a\x20\x20\x20\x20if\x20(abs(N.x)\x20>\x20abs(N.z))\x20{\x0d\x0a\x20\x20\x20\x20\x20\x20\x20\x20helperVec\x20=\x20vec3<f32>(0,\x200,\x201);\x0d\x0a\x20\x20\x20\x20}\x0d\x0a\x20\x20\x20\x20//\x20浣跨敤鍙変箻鏋勫缓姝d氦鍩篭x0d\x0a\x20\x20\x20\x20var\x20T\x20=\x20normalize(cross(helperVec,\x20N));\x0d\x0a\x20\x20\x20\x20var\x20B\x20=\x20cross(N,\x20T);\x0d\x0a\x20\x20\x20\x20return\x20mat3x3<f32>(T,\x20B,\x20N);\x0d\x0a}\x0d\x0a\x0d\x0a//\x20鑾峰彇娉曠嚎鏂瑰悜鍗婄悆鍐呯殑涓�涓殢鏈烘柟鍚慭x0d\x0afn\x20random_direction_in_hemisphere(normal:\x20vec3<f32>)\x20->\x20vec3<f32>\x20{\x0d\x0a\x20\x20\x20\x20//\x20鑾峰彇浣欏鸡鍔犳潈鐨勫崐鐞冨唴鐨勯殢鏈烘柟鍚戯紙榛樿浠杞翠负娉曠嚎锛塡x0d\x0a\x20\x20\x20\x20let\x20randomDir\x20=\x20rand_cosine_weighted_hemisphere();\x0d\x0a\x20\x20\x20\x20//\x20鏋勫缓浠庨粯璁ゅ崐鐞冨埌瀹為檯娉曠嚎鏂瑰悜鐨勮浆鎹㈢煩闃礬x0d\x0a\x20\x20\x20\x20let\x20transform\x20=\x20construct_coordinate_system(normal);\x0d\x0a\x20\x20\x20\x20//\x20灏嗛殢鏈烘柟鍚戣浆鎹㈠埌浠ュ疄闄呮硶绾夸负涓績鐨勫崐鐞冨唴\x0d\x0a\x20\x20\x20\x20return\x20normalize(transform\x20*\x20randomDir);\x0d\x0a}\x0d\x0a\x0d\x0a//\x20灏嗙粰瀹氭柟鍚戣浆鎹㈠埌浠ュ疄闄呮硶绾夸负涓績鐨勫崐鐞冨唴\x0d\x0afn\x20direction_in_hemisphere(normal:\x20vec3<f32>,dir:\x20vec3<f32>)\x20->\x20vec3<f32>\x20{\x0d\x0a\x20\x20\x20\x20//\x20鏋勫缓浠庨粯璁ゅ崐鐞冨埌瀹為檯娉曠嚎鏂瑰悜鐨勮浆鎹㈢煩闃礬x0d\x0a\x20\x20\x20\x20let\x20transform\x20=\x20construct_coordinate_system(normal);\x0d\x0a\x20\x20\x20\x20//\x20灏嗙粰瀹氭柟鍚戣浆鎹㈠埌浠ュ疄闄呮硶绾夸负涓績鐨勫崐鐞冨唴\x0d\x0a\x20\x20\x20\x20return\x20normalize(transform\x20*\x20dir);\x0d\x0a}\x0d\x0a\x0d\x0a\x0d\x0a//\x20杩斿洖缁欏畾瑙掑害鍦嗛敟鍐呯殑闅忔満鏂瑰悜\x0d\x0afn\x20random_direction_in_cone(cone_angle:\x20f32)\x20->\x20vec3<f32>\x20{\x0d\x0a\x20\x20\x20\x20var\x20u\x20=\x20rand();\x0d\x0a\x20\x20\x20\x20var\x20v\x20=\x20rand();\x0d\x0a\x20\x20\x20\x20var\x20theta\x20=\x20u\x20*\x202.0\x20*\x20pi;\x0d\x0a\x20\x20\x20\x20var\x20phi\x20=\x20acos(1.0\x20-\x20v\x20*\x20(1.0\x20-\x20cos(cone_angle)));\x0d\x0a\x20\x20\x20\x20var\x20sin_phi\x20=\x20sin(phi);\x0d\x0a\x20\x20\x20\x20var\x20cos_phi\x20=\x20cos(phi);\x0d\x0a\x20\x20\x20\x20var\x20x\x20=\x20sin_phi\x20*\x20cos(theta);\x0d\x0a\x20\x20\x20\x20var\x20y\x20=\x20sin_phi\x20*\x20sin(theta);\x0d\x0a\x20\x20\x20\x20var\x20z\x20=\x20cos_phi;\x0d\x0a\x20\x20\x20\x20return\x20vec3<f32>(x,\x20y,\x20z);\x0d\x0a}\x0d\x0a\x0d\x0a//\x20鍦嗛敟浣撳唴浜х敓闅忔満鏂瑰悜锛岃鏂瑰悜涔熷洿缁曠粰瀹氭硶绾垮畾鍚慭x0d\x0a//\x203.14159265359\x20/\x20180.0\x20*\x2045.0\x20=\x200.7853981633975\x0d\x0a//\x203.14159265359\x20/\x20180.0\x20*\x2075.0\x20=\x201.3089969389958334\x0d\x0a//\x203.14159265359\x20/\x20180.0\x20*\x20120.0\x20=\x202.0943951023933334\x0d\x0afn\x20random_direction_in_cone_with_normal(cone_angle:\x20f32,\x20normal:\x20vec3<f32>)\x20->\x20vec3<f32>\x20{\x0d\x0a\x20\x20\x20\x20//\x201.\x20鐢熸垚鍦嗛敟鍐呯殑闅忔満鏂瑰悜锛堜笌榛樿鐨刏杞村榻愶級\x0d\x0a\x20\x20\x20\x20let\x20randomDir\x20=\x20random_direction_in_cone(cone_angle);\x0d\x0a\x0d\x0a\x20\x20\x20\x20//\x202.\x20鏋勫缓浠庨粯璁杞村埌缁欏畾娉曠嚎鐨勫潗鏍囩郴杞崲鐭╅樀\x0d\x0a\x20\x20\x20\x20let\x20transform\x20=\x20construct_coordinate_system(normal);\x0d\x0a\x0d\x0a\x20\x20\x20\x20//\x203.\x20灏嗛殢鏈烘柟鍚戜粠榛樿鍧愭爣绯昏浆鎹㈠埌鐩爣娉曠嚎鐨勫潗鏍囩郴\x0d\x0a\x20\x20\x20\x20return\x20normalize(transform\x20*\x20randomDir);\x0d\x0a}\x0d\x0a\x0d\x0a\x0d\x0aconst\x20radians\x20=\x20pi\x20/\x20180.0;\x0d\x0aconst\x20coneAngle\x20=\x2015.0\x20*\x20radians;\x0d\x0a//\x20杩斿洖鍥寸粫鍙嶅皠鏂瑰悜鐨刓x2015\x20搴﹀渾閿ュ唴鐨勯殢鏈烘柟鍚慭x0d\x0afn\x20random_direction_in_reflection_cone(reflection_dir:\x20vec3<f32>)\x20->\x20vec3<f32>\x20{\x0d\x0a\x20\x20\x20\x20//\x20鑾峰彇鍦嗛敟鍐呯殑闅忔満鏂瑰悜锛堥粯璁ゅ渾閿ヤ笌\x20Z\x20杞村榻愶級\x0d\x0a\x20\x20\x20\x20let\x20randomDir\x20=\x20random_direction_in_cone(coneAngle);\x0d\x0a\x20\x20\x20\x20//\x20浠庡弽灏勬柟鍚戞瀯寤哄潗鏍囩郴\x0d\x0a\x20\x20\x20\x20let\x20transform\x20=\x20construct_coordinate_system(reflection_dir);\x0d\x0a\x20\x20\x20\x20//\x20鍙樻崲闅忔満鏂瑰悜浠ヤ笌鍙嶅皠鏂瑰悜瀵归綈\x0d\x0a\x20\x20\x20\x20return\x20normalize(transform\x20*\x20randomDir);\x0d\x0a}'},_0x1ca0f4={'code':'\x0d\x0a\x0d\x0a\x0d\x0afn\x20nextStep2(bn:\x20u32,pos:\x20vec3<u32>,pos_n:\x20vec3<f32>,dirOrigin:\x20vec3<f32>)\x20->\x20f32{\x0d\x0a\x0d\x0a\x20\x20\x20\x20let\x20mask\x20=\x20(1u\x20<<\x20bn)\x20-\x201u;\x0d\x0a\x20\x20\x20\x20let\x20yu\x20=\x20(pos\x20&\x20vec3<u32>(mask));\x0d\x0a\x0d\x0a\x20\x20\x20\x20var\x20t0\x20=\x200.0;\x0d\x0a\x20\x20\x20\x20if(dirOrigin[0]\x20==\x200){\x0d\x0a\x20\x20\x20\x20\x20\x20\x20\x20t0\x20=\x2010000000.0;\x0d\x0a\x20\x20\x20\x20}\x20if(dirOrigin[0]\x20<\x200){\x0d\x0a\x20\x20\x20\x20\x20\x20\x20\x20t0\x20=\x20f32(select(yu[0],mask\x20-\x20yu[0],pos_n[0]\x20<\x200))\x20/\x20-dirOrigin[0];\x0d\x0a\x20\x20\x20\x20}else{\x0d\x0a\x20\x20\x20\x20\x20\x20\x20\x20t0\x20=\x20f32(select(mask\x20-\x20yu[0],yu[0],pos_n[0]\x20<\x200))\x20/\x20dirOrigin[0];\x0d\x0a\x20\x20\x20\x20}\x0d\x0a\x0d\x0a\x20\x20\x20\x20var\x20t1\x20=\x200.0;\x0d\x0a\x20\x20\x20\x20if(dirOrigin[1]\x20==\x200){\x0d\x0a\x20\x20\x20\x20\x20\x20\x20\x20t1\x20=\x2010000000.0;\x0d\x0a\x20\x20\x20\x20}\x20if(dirOrigin[1]\x20<\x200){\x0d\x0a\x20\x20\x20\x20\x20\x20\x20\x20t1\x20=\x20f32(select(yu[1],mask\x20-\x20yu[1],pos_n[1]\x20<\x200))\x20/\x20-dirOrigin[1];\x0d\x0a\x20\x20\x20\x20}else{\x0d\x0a\x20\x20\x20\x20\x20\x20\x20\x20t1\x20=\x20f32(select(mask\x20-\x20yu[1],yu[1],pos_n[1]\x20<\x200))\x20/\x20dirOrigin[1];\x0d\x0a\x20\x20\x20\x20}\x0d\x0a\x0d\x0a\x20\x20\x20\x20var\x20t2\x20=\x200.0;\x0d\x0a\x20\x20\x20\x20if(dirOrigin[2]\x20==\x200){\x0d\x0a\x20\x20\x20\x20\x20\x20\x20\x20t2\x20=\x2010000000.0;\x0d\x0a\x20\x20\x20\x20}\x20if(dirOrigin[2]\x20<\x200){\x0d\x0a\x20\x20\x20\x20\x20\x20\x20\x20t2\x20=\x20f32(select(yu[2],mask\x20-\x20yu[2],pos_n[2]\x20<\x200))\x20/\x20-dirOrigin[2];\x0d\x0a\x20\x20\x20\x20}else{\x0d\x0a\x20\x20\x20\x20\x20\x20\x20\x20t2\x20=\x20f32(select(mask\x20-\x20yu[2],yu[2],pos_n[2]\x20<\x200))\x20/\x20dirOrigin[2];\x0d\x0a\x20\x20\x20\x20}\x0d\x0a\x0d\x0a\x20\x20\x20\x20return\x20max(min(t0,min(t1,t2)),1.0);\x0d\x0a}\x0d\x0a\x0d\x0a\x0d\x0afn\x20nextStep(bn:\x20u32,\x20pos:\x20vec3<u32>,\x20pos_n:\x20vec3<f32>,\x20dirOrigin:\x20vec3<f32>)\x20->\x20f32\x20{\x0d\x0a\x20\x20\x20\x20let\x20mask\x20=\x20(1u\x20<<\x20bn)\x20-\x201u;\x0d\x0a\x20\x20\x20\x20let\x20vec3_mask\x20=\x20vec3<u32>(mask);\x0d\x0a\x20\x20\x20\x20if(all(pos_n\x20<\x20vec3<f32>(vec3_mask))){\x0d\x0a\x20\x20\x20\x20\x20\x20\x20\x20return\x20f32(mask);\x0d\x0a\x20\x20\x20\x20}\x0d\x0a\x0d\x0a\x20\x20\x20\x20let\x20yu\x20=\x20pos\x20&\x20vec3_mask;\x0d\x0a\x0d\x0a\x20\x20\x20\x20let\x20temp\x20=\x20select(vec3_mask\x20-\x20yu,\x20yu,\x20dirOrigin\x20<\x20vec3<f32>(0.0));\x0d\x0a\x20\x20\x20\x20let\x20numerator\x20=\x20select(temp,\x20vec3_mask\x20-\x20temp,\x20pos_n\x20<\x20vec3<f32>(0.0));\x0d\x0a\x20\x20\x20\x20let\x20t\x20=\x20vec3<f32>(numerator)\x20/\x20abs(dirOrigin);\x0d\x0a\x0d\x0a\x20\x20\x20\x20let\x20t_final\x20=\x20select(t,\x20vec3<f32>(10000000.0),\x20dirOrigin\x20==\x20vec3<f32>(0.0));\x0d\x0a\x0d\x0a\x20\x20\x20\x20return\x20max(min(t_final.x,\x20min(t_final.y,\x20t_final.z)),\x201.0);\x0d\x0a}\x0d\x0a\x0d\x0a\x0d\x0astruct\x20HitInfo\x20{\x0d\x0a\x20\x20\x20\x20targetPrt:\x20u32,\x0d\x0a\x20\x20\x20\x20targetPonstion:\x20vec3<f32>,\x0d\x0a};\x0d\x0a\x0d\x0afn\x20lightFire(posOrigin:\x20vec3<f32>,\x20dirOrigin:\x20vec3<f32>\x20,\x20oneStepLength:\x20f32)\x20->\x20HitInfo\x20{\x0d\x0a\x20\x20\x20\x20var\x20hit\x20:\x20HitInfo;\x0d\x0a\x20\x20\x20\x20var\x20stepLength\x20=\x20vec3<f32>(dirOrigin\x20*\x20oneStepLength);\x0d\x0a\x20\x20\x20\x20var\x20pos_n\x20=\x20posOrigin\x20+\x20dirOrigin\x20*\x20stepLength\x20+\x200.001;\x0d\x0a\x20\x20\x20\x20var\x20bzf\x20=\x20vec3<u32>(pos_n.xyz\x20>\x20vec3<f32>(0));\x0d\x0a\x20\x20\x20\x20var\x20p_offset\x20=\x20lightBodiesSpace[1u\x20+\x20(bzf[0]\x20|\x20(bzf[1]\x20<<\x201u)\x20|\x20(bzf[2]\x20<<\x202u))]\x20>>\x201u;\x0d\x0a\x20\x20\x20\x20var\x20bn\x20=\x2026u;\x0d\x0a\x20\x20\x20\x20var\x20stepCount\x20=\x200u;\x0d\x0a\x0d\x0a\x20\x20\x20\x20loop\x20{\x0d\x0a\x20\x20\x20\x20\x20\x20\x20\x20let\x20pos\x20=\x20vec3<u32>(abs(pos_n));\x0d\x0a\x20\x20\x20\x20\x20\x20\x20\x20let\x20b1\x20=\x20((pos.x\x20>>\x20bn)\x20&\x201u)\x20|\x20(((pos.y\x20>>\x20bn)\x20&\x201u)\x20<<\x201u)\x20|\x20(((pos.z\x20>>\x20bn)\x20&\x201u)\x20<<\x202u);\x0d\x0a\x20\x20\x20\x20\x20\x20\x20\x20let\x20prt_status\x20=\x20lightBodiesSpace[p_offset\x20+\x20b1];\x0d\x0a\x20\x20\x20\x20\x20\x20\x20\x20if((prt_status&1)\x20==\x201){\x0d\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20p_offset\x20=\x20prt_status\x20>>\x201;\x0d\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20if(bn\x20==\x200){\x0d\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20let\x20normal_lightBodies\x20=\x20unpack4x8snorm(lightBodiesSpace[p_offset\x20+\x2013]).xyz;\x0d\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20if(dot(dirOrigin,normal_lightBodies.xyz)\x20>\x200.999){\x0d\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20//濡傛灉娉曠嚎鏂瑰悜涓�鑷村垯缁х画姝ヨ繘,瑙e喅鍗曢潰婕忓厜闂\x0d\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20stepLength\x20+=\x20dirOrigin\x20*\x204;\x0d\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20pos_n\x20=\x20posOrigin\x20+\x20stepLength\x20+\x200.001;\x0d\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20bzf\x20=\x20vec3<u32>(pos_n.xyz\x20>\x20vec3<f32>(0));\x0d\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20p_offset\x20=\x20lightBodiesSpace[1u\x20+\x20(bzf[0]\x20|\x20(bzf[1]\x20<<\x201u)\x20|\x20(bzf[2]\x20<<\x202u))]\x20>>\x201u;\x0d\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20bn\x20=\x2026u;\x0d\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20continue;\x0d\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20}else{\x0d\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20hit.targetPrt\x20=\x20p_offset;\x0d\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20hit.targetPonstion\x20=\x20pos_n;\x0d\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20break;\x0d\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20}\x0d\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20}\x0d\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20bn--;\x0d\x0a\x20\x20\x20\x20\x20\x20\x20\x20}else{\x0d\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20if((lightBodiesSpace[p_offset]&1)\x20==\x200\x0d\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20&&\x20(lightBodiesSpace[p_offset+1]&1)\x20==\x200\x0d\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20&&\x20(lightBodiesSpace[p_offset+2]&1)\x20==\x200\x0d\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20&&\x20(lightBodiesSpace[p_offset+3]&1)\x20==\x200\x0d\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20&&\x20(lightBodiesSpace[p_offset+4]&1)\x20==\x200\x0d\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20&&\x20(lightBodiesSpace[p_offset+5]&1)\x20==\x200\x0d\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20&&\x20(lightBodiesSpace[p_offset+6]&1)\x20==\x200\x0d\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20&&\x20(lightBodiesSpace[p_offset+7]&1)\x20==\x200){\x0d\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20if(bn\x20!=\x2026){\x0d\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20hit.targetPrt\x20=\x20p_offset;\x0d\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20hit.targetPonstion\x20=\x20pos_n;\x0d\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20}\x0d\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20break;\x0d\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20}\x0d\x0a\x0d\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20let\x20step\x20=\x20nextStep(bn,pos,pos_n,dirOrigin);\x0d\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20stepLength\x20+=\x20dirOrigin\x20*\x20step;\x0d\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20pos_n\x20=\x20posOrigin\x20+\x20stepLength\x20+\x200.001;\x0d\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20if(any(abs(posOrigin\x20-\x20pos_n)\x20>\x20vec3<f32>(2000))){\x0d\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20break;\x0d\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20}\x0d\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20stepCount++;\x0d\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20if(stepCount\x20>\x202000){\x0d\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20break;\x0d\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20}\x0d\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20bzf\x20=\x20vec3<u32>(pos_n.xyz\x20>\x20vec3<f32>(0));\x0d\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20p_offset\x20=\x20lightBodiesSpace[1u\x20+\x20(bzf[0]\x20|\x20(bzf[1]\x20<<\x201u)\x20|\x20(bzf[2]\x20<<\x202u))]\x20>>\x201u;\x0d\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20bn\x20=\x2026u;\x0d\x0a\x20\x20\x20\x20\x20\x20\x20\x20}\x0d\x0a\x20\x20\x20\x20}\x0d\x0a\x20\x20\x20\x20return\x20hit;\x0d\x0a}\x0d\x0a\x0d\x0afn\x20prtToPos(targetPrt\x20:\x20u32)\x20->\x20vec3<f32>\x20{\x0d\x0a\x20\x20\x20\x20var\x20temp_p\x20=\x20targetPrt;\x0d\x0a\x20\x20\x20\x20var\x20newPos\x20=\x20vec3<u32>(0u);\x0d\x0a\x20\x20\x20\x20var\x20newPosF32\x20=\x20vec3<f32>(0);\x0d\x0a\x20\x20\x20\x20var\x20b0\x20=\x200u;\x0d\x0a\x20\x20\x20\x20var\x20b1\x20=\x20lightBodiesSpace[temp_p\x20+\x209]\x20>>\x2029;\x0d\x0a\x20\x20\x20\x20loop\x20{\x0d\x0a\x20\x20\x20\x20\x20\x20\x20\x20let\x20p1\x20=\x20lightBodiesSpace[temp_p\x20+\x208];\x0d\x0a\x20\x20\x20\x20\x20\x20\x20\x20if\x20p1\x20<\x2010u\x20{\x0d\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20let\x20p1_1\x20=\x20(p1\x20-\x201);\x0d\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20newPosF32\x20=\x20vec3<f32>(newPos)\x20*\x20select(vec3<f32>(-1.0),vec3<f32>(1.0),vec3<u32>((p1_1)\x20&\x201u,(p1_1\x20>>\x201u)\x20&\x201u,(p1_1\x20>>\x202u)\x20&\x201u)\x20==\x20vec3<u32>(1u));\x0d\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20break;\x0d\x0a\x20\x20\x20\x20\x20\x20\x20\x20}\x0d\x0a\x20\x20\x20\x20\x20\x20\x20\x20newPos.x\x20|=\x20(((b1)\x20&\x201u)\x20<<\x20b0);\x0d\x0a\x20\x20\x20\x20\x20\x20\x20\x20newPos.y\x20|=\x20(((b1\x20>>\x201u)\x20&\x201u)\x20<<\x20b0);\x0d\x0a\x20\x20\x20\x20\x20\x20\x20\x20newPos.z\x20|=\x20(((b1\x20>>\x202u)\x20&\x201u)\x20<<\x20b0);\x0d\x0a\x0d\x0a\x20\x20\x20\x20\x20\x20\x20\x20b0++;\x0d\x0a\x20\x20\x20\x20\x20\x20\x20\x20temp_p\x20=\x20p1;\x0d\x0a\x20\x20\x20\x20\x20\x20\x20\x20b1\x20=\x20lightBodiesSpace[temp_p\x20+\x209]\x20>>\x2029;\x0d\x0a\x20\x20\x20\x20}\x0d\x0a\x20\x20\x20\x20return\x20newPosF32;\x0d\x0a}\x0d\x0a\x0d\x0a//\x20鍒ゆ柇灏勭嚎鏄惁涓庤酱瀵归綈姝f柟浣撶浉浜x0d\x0a//\x20O锛氬皠绾跨殑鍘熺偣锛堣捣鐐癸級銆俓x0d\x0a//\x20D锛氬皠绾跨殑鏂瑰悜锛堝崟浣嶅悜閲忥級銆俓x0d\x0a//\x20C锛氭鏂逛綋鐨勪腑蹇冪偣銆俓x0d\x0a//\x20s锛氭鏂逛綋鐨勮竟闀裤�俓x0d\x0afn\x20rayAABBIntersection(O:\x20vec3f,\x20D:\x20vec3f,\x20C:\x20vec3f,\x20s:\x20f32)\x20->\x20bool\x20{\x0d\x0a\x20\x20\x20\x20let\x20half_s\x20=\x20s\x20/\x202.0;\x0d\x0a\x20\x20\x20\x20let\x20AABB_min\x20=\x20C\x20-\x20half_s;\x0d\x0a\x20\x20\x20\x20let\x20AABB_max\x20=\x20C\x20+\x20half_s;\x0d\x0a\x0d\x0a\x20\x20\x20\x20//\x20Check\x20for\x20D[i]\x20==\x200\x20and\x20O[i]\x20outside\x20AABB\x20on\x20that\x20axis\x0d\x0a\x20\x20\x20\x20if\x20(any((D\x20==\x20vec3<f32>(0.0))\x20&\x20((O\x20<\x20AABB_min)\x20|\x20(O\x20>\x20AABB_max))))\x20{\x0d\x0a\x20\x20\x20\x20\x20\x20\x20\x20return\x20false;\x0d\x0a\x20\x20\x20\x20}\x0d\x0a\x0d\x0a\x20\x20\x20\x20//\x20Compute\x20t1\x20and\x20t2\x0d\x0a\x20\x20\x20\x20let\x20t1\x20=\x20(AABB_min\x20-\x20O)\x20/\x20D;\x0d\x0a\x20\x20\x20\x20let\x20t2\x20=\x20(AABB_max\x20-\x20O)\x20/\x20D;\x0d\x0a\x0d\x0a\x20\x20\x20\x20//\x20Compute\x20t_enter\x20and\x20t_exit\x0d\x0a\x20\x20\x20\x20let\x20t_enter\x20=\x20min(t1,\x20t2);\x0d\x0a\x20\x20\x20\x20let\x20t_exit\x20=\x20max(t1,\x20t2);\x0d\x0a\x0d\x0a\x20\x20\x20\x20//\x20Compute\x20t_min\x20and\x20t_max\x0d\x0a\x20\x20\x20\x20var\x20t_min\x20=\x20max(t_enter.x,\x20max(t_enter.y,\x20t_enter.z));\x0d\x0a\x20\x20\x20\x20var\x20t_max\x20=\x20min(t_exit.x,\x20min(t_exit.y,\x20t_exit.z));\x0d\x0a\x0d\x0a\x20\x20\x20\x20//\x20Check\x20intersection\x0d\x0a\x20\x20\x20\x20return\x20t_max\x20>=\x200.0\x20&&\x20t_min\x20<=\x20t_max;\x0d\x0a}\x0d\x0a\x0d\x0a'},_0x57385a={'code':'struct\x20Params\x20{\x0d\x0a\x20\x20filterDim\x20:\x20i32,\x0d\x0a\x20\x20blockDim\x20:\x20u32,\x0d\x0a}\x0d\x0a\x0d\x0a@group(0)\x20@binding(0)\x20var\x20samp\x20:\x20sampler;\x0d\x0a@group(0)\x20@binding(1)\x20var<uniform>\x20params\x20:\x20Params;\x0d\x0a@group(1)\x20@binding(1)\x20var\x20inputTex\x20:\x20texture_2d<f32>;\x0d\x0a@group(1)\x20@binding(2)\x20var\x20outputTex\x20:\x20texture_storage_2d<rgba8unorm,\x20write>;\x0d\x0a\x0d\x0astruct\x20Flip\x20{\x0d\x0a\x20\x20value\x20:\x20u32,\x0d\x0a}\x0d\x0a@group(1)\x20@binding(3)\x20var<uniform>\x20flip\x20:\x20Flip;\x0d\x0a\x0d\x0a//\x20This\x20shader\x20blurs\x20the\x20input\x20texture\x20in\x20one\x20direction,\x20depending\x20on\x20whether\x0d\x0a//\x20|flip.value|\x20is\x200\x20or\x201.\x0d\x0a//\x20It\x20does\x20so\x20by\x20running\x20(128\x20/\x204)\x20threads\x20per\x20workgroup\x20to\x20load\x20128\x0d\x0a//\x20texels\x20into\x204\x20rows\x20of\x20shared\x20memory.\x20Each\x20thread\x20loads\x20a\x0d\x0a//\x204\x20x\x204\x20block\x20of\x20texels\x20to\x20take\x20advantage\x20of\x20the\x20texture\x20sampling\x0d\x0a//\x20hardware.\x0d\x0a//\x20Then,\x20each\x20thread\x20computes\x20the\x20blur\x20result\x20by\x20averaging\x20the\x20adjacent\x20texel\x20values\x0d\x0a//\x20in\x20shared\x20memory.\x0d\x0a//\x20Because\x20we\x27re\x20operating\x20on\x20a\x20subset\x20of\x20the\x20texture,\x20we\x20cannot\x20compute\x20all\x20of\x20the\x0d\x0a//\x20results\x20since\x20not\x20all\x20of\x20the\x20neighbors\x20are\x20available\x20in\x20shared\x20memory.\x0d\x0a//\x20Specifically,\x20with\x20128\x20x\x20128\x20tiles,\x20we\x20can\x20only\x20compute\x20and\x20write\x20out\x0d\x0a//\x20square\x20blocks\x20of\x20size\x20128\x20-\x20(filterSize\x20-\x201).\x20We\x20compute\x20the\x20number\x20of\x20blocks\x0d\x0a//\x20needed\x20in\x20Javascript\x20and\x20dispatch\x20that\x20amount.\x0d\x0a\x0d\x0avar<workgroup>\x20tile\x20:\x20array<array<vec3f,\x20128>,\x204>;\x0d\x0a\x0d\x0a@compute\x20@workgroup_size(32,\x201,\x201)\x0d\x0afn\x20main(\x0d\x0a\x20\x20@builtin(workgroup_id)\x20WorkGroupID\x20:\x20vec3u,\x0d\x0a\x20\x20@builtin(local_invocation_id)\x20LocalInvocationID\x20:\x20vec3u\x0d\x0a)\x20{\x0d\x0a\x20\x20let\x20filterOffset\x20=\x20(params.filterDim\x20-\x201)\x20/\x202;\x0d\x0a\x20\x20let\x20dims\x20=\x20vec2i(textureDimensions(inputTex,\x200));\x0d\x0a\x20\x20let\x20baseIndex\x20=\x20vec2i(WorkGroupID.xy\x20*\x20vec2(params.blockDim,\x204)\x20+\x0d\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20LocalInvocationID.xy\x20*\x20vec2(4,\x201))\x0d\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20-\x20vec2(filterOffset,\x200);\x0d\x0a\x0d\x0a\x20\x20for\x20(var\x20r\x20=\x200;\x20r\x20<\x204;\x20r++)\x20{\x0d\x0a\x20\x20\x20\x20for\x20(var\x20c\x20=\x200;\x20c\x20<\x204;\x20c++)\x20{\x0d\x0a\x20\x20\x20\x20\x20\x20var\x20loadIndex\x20=\x20baseIndex\x20+\x20vec2(c,\x20r);\x0d\x0a\x20\x20\x20\x20\x20\x20if\x20(flip.value\x20!=\x200u)\x20{\x0d\x0a\x20\x20\x20\x20\x20\x20\x20\x20loadIndex\x20=\x20loadIndex.yx;\x0d\x0a\x20\x20\x20\x20\x20\x20}\x0d\x0a\x0d\x0a\x20\x20\x20\x20\x20\x20tile[r][4\x20*\x20LocalInvocationID.x\x20+\x20u32(c)]\x20=\x20textureSampleLevel(\x0d\x0a\x20\x20\x20\x20\x20\x20\x20\x20inputTex,\x0d\x0a\x20\x20\x20\x20\x20\x20\x20\x20samp,\x0d\x0a\x20\x20\x20\x20\x20\x20\x20\x20(vec2f(loadIndex)\x20+\x20vec2f(0.25,\x200.25))\x20/\x20vec2f(dims),\x0d\x0a\x20\x20\x20\x20\x20\x20\x20\x200.0\x0d\x0a\x20\x20\x20\x20\x20\x20).rgb;\x0d\x0a\x20\x20\x20\x20}\x0d\x0a\x20\x20}\x0d\x0a\x0d\x0a\x20\x20workgroupBarrier();\x0d\x0a\x0d\x0a\x20\x20for\x20(var\x20r\x20=\x200;\x20r\x20<\x204;\x20r++)\x20{\x0d\x0a\x20\x20\x20\x20for\x20(var\x20c\x20=\x200;\x20c\x20<\x204;\x20c++)\x20{\x0d\x0a\x20\x20\x20\x20\x20\x20var\x20writeIndex\x20=\x20baseIndex\x20+\x20vec2(c,\x20r);\x0d\x0a\x20\x20\x20\x20\x20\x20if\x20(flip.value\x20!=\x200)\x20{\x0d\x0a\x20\x20\x20\x20\x20\x20\x20\x20writeIndex\x20=\x20writeIndex.yx;\x0d\x0a\x20\x20\x20\x20\x20\x20}\x0d\x0a\x0d\x0a\x20\x20\x20\x20\x20\x20let\x20center\x20=\x20i32(4\x20*\x20LocalInvocationID.x)\x20+\x20c;\x0d\x0a\x20\x20\x20\x20\x20\x20if\x20(center\x20>=\x20filterOffset\x20&&\x0d\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20center\x20<\x20128\x20-\x20filterOffset\x20&&\x0d\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20all(writeIndex\x20<\x20dims))\x20{\x0d\x0a\x20\x20\x20\x20\x20\x20\x20\x20var\x20acc\x20=\x20vec3(0.0,\x200.0,\x200.0);\x0d\x0a\x20\x20\x20\x20\x20\x20\x20\x20for\x20(var\x20f\x20=\x200;\x20f\x20<\x20params.filterDim;\x20f++)\x20{\x0d\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20var\x20i\x20=\x20center\x20+\x20f\x20-\x20filterOffset;\x0d\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20acc\x20=\x20acc\x20+\x20(1.0\x20/\x20f32(params.filterDim))\x20*\x20tile[r][i];\x0d\x0a\x20\x20\x20\x20\x20\x20\x20\x20}\x0d\x0a\x20\x20\x20\x20\x20\x20\x20\x20textureStore(outputTex,\x20writeIndex,\x20vec4(acc,\x201.0));\x0d\x0a\x20\x20\x20\x20\x20\x20}\x0d\x0a\x20\x20\x20\x20}\x0d\x0a\x20\x20}\x0d\x0a}\x0d\x0a'},_0x4e7a6d={'code':_0xe79d2f(0x2f6)},_0x1c47bd={'code':'\x0d\x0a@group(0)\x20@binding(0)\x20var\x20samplerLinear\x20:\x20sampler;\x0d\x0a@group(0)\x20@binding(1)\x20var\x20samplerNearest\x20:\x20sampler;\x0d\x0a@group(0)\x20@binding(2)\x20var\x20shadowMap:\x20texture_depth_2d_array;\x0d\x0a\x0d\x0astruct\x20VertexInput\x20{\x0d\x0a\x20\x20@builtin(instance_index)\x20instanceIndex\x20:\x20u32,\x0d\x0a\x20\x20@builtin(vertex_index)\x20vertexIndex\x20:\x20u32\x0d\x0a}\x0d\x0astruct\x20VertexOutput\x20{\x0d\x0a\x20\x20@builtin(position)\x20position:\x20vec4<f32>,\x0d\x0a\x20\x20@location(0)\x20fragUV\x20:\x20vec2f,\x0d\x0a};\x0d\x0a\x0d\x0a@vertex\x0d\x0afn\x20vert_main(input\x20:VertexInput)\x20->\x20VertexOutput\x20{\x0d\x0a\x0d\x0a\x20\x20\x20\x20const\x20pos\x20=\x20array<vec2<f32>,6>(\x0d\x0a\x20\x20\x20\x20vec2<f32>(-1.0,\x20\x201.0),\x0d\x0a\x20\x20\x20\x20vec2<f32>(-1.0,\x20\x20-1.0),\x0d\x0a\x20\x20\x20\x20vec2<f32>(1.0,\x20\x201.0),\x0d\x0a\x0d\x0a\x20\x20\x20\x20vec2<f32>(1.0,\x20\x201.0),\x0d\x0a\x20\x20\x20\x20vec2<f32>(-1.0,\x20\x20-1.0),\x0d\x0a\x20\x20\x20\x20vec2<f32>(1.0,\x20\x20-1.0),\x0d\x0a\x20\x20\x20\x20);\x0d\x0a\x0d\x0a\x20\x20\x20\x20const\x20uv\x20=\x20array<vec2<f32>,6>(\x0d\x0a\x20\x20\x20\x20vec2<f32>(0,\x20\x200),\x0d\x0a\x20\x20\x20\x20vec2<f32>(0,\x20\x201),\x0d\x0a\x20\x20\x20\x20vec2<f32>(1,\x20\x200),\x0d\x0a\x0d\x0a\x20\x20\x20\x20vec2<f32>(1,\x20\x200),\x0d\x0a\x20\x20\x20\x20vec2<f32>(0,\x20\x201),\x0d\x0a\x20\x20\x20\x20vec2<f32>(1,\x20\x201),\x0d\x0a\x20\x20\x20\x20);\x0d\x0a\x0d\x0a\x20\x20\x20\x20var\x20output\x20:\x20VertexOutput;\x0d\x0a\x20\x20\x20\x20output.position\x20=\x20vec4(pos[input.vertexIndex],\x200.0,\x201.0);\x0d\x0a\x20\x20\x20\x20output.fragUV\x20=\x20uv[input.vertexIndex];\x0d\x0a\x20\x20\x20\x20return\x20output;\x0d\x0a}\x0d\x0a\x0d\x0astruct\x20FragmentOutput\x20{\x0d\x0a\x20\x20@location(0)\x20albedo\x20:\x20vec4<f32>,\x0d\x0a}\x0d\x0a\x0d\x0a@fragment\x0d\x0afn\x20frag_main(input\x20:\x20VertexOutput)\x20->\x20FragmentOutput\x20{\x0d\x0a\x20\x20\x20\x20var\x20output\x20:\x20FragmentOutput;\x0d\x0a\x20\x20\x20\x20let\x20depth\x20=\x20textureSample(shadowMap,\x20samplerNearest,\x20input.fragUV,0);\x0d\x0a\x20\x20\x20\x20output.albedo\x20=\x20vec4(depth,depth,depth,1);\x0d\x0a\x20\x20\x20\x20return\x20output;\x0d\x0a\x0d\x0a}\x0d\x0a'},_0xbb8b4a={'code':_0xe79d2f(0x1da)},_0x3f7abb={'code':_0xe79d2f(0x1da)},_0xc53e2d={'code':_0xe79d2f(0x1da)},_0xfac7e0={'code':_0xe79d2f(0x217)},_0x17da49={'code':'\x0d\x0astruct\x20SelfUniform\x20{\x0d\x0a\x20\x20\x20\x20view:\x20mat4x4<f32>,\x0d\x0a\x20\x20\x20\x20projection:\x20mat4x4<f32>,\x0d\x0a\x20\x20\x20\x20invProjectionMatrix:\x20mat4x4<f32>,\x0d\x0a\x20\x20\x20\x20projectToPixelMatrix:\x20mat4x4<f32>,\x0d\x0a\x20\x20\x20\x20nearPlaneZ:\x20f32,\x0d\x0a\x20\x20\x20\x20farPlaneZ:\x20f32,\x0d\x0a\x20\x20\x20\x20stepSize:\x20f32,\x0d\x0a\x20\x20\x20\x20maxSteps:\x20f32,\x0d\x0a\x20\x20\x20\x20thickness:\x20f32,\x0d\x0a\x20\x20\x20\x20roughnessFactor:\x20f32,\x0d\x0a\x20\x20\x20\x20maxRoughness:\x20f32,\x0d\x0a\x20\x20\x20\x20maxDistance:\x20f32,\x0d\x0a\x20\x20\x20\x20selfCollisionNumSkip:\x20f32,\x0d\x0a\x20\x20\x20\x20blend:\x20f32,\x0d\x0a\x20\x20\x20\x20//\x20宸ヤ綔缁勭殑闅忔満绉嶅瓙\x0d\x0a\x20\x20\x20\x20seed1:u32,\x0d\x0a\x20\x20\x20\x20seed2:u32,\x0d\x0a\x20\x20\x20\x20seed3:u32,\x0d\x0a};\x0d\x0a\x0d\x0a@group(0)\x20@binding(0)\x20var<uniform>\x20selfUniform\x20:\x20SelfUniform;\x0d\x0a@group(0)\x20@binding(2)\x20var\x20prev_SSPData\x20:\x20texture_storage_2d<rgba32float,read>;\x0d\x0a@group(0)\x20@binding(3)\x20var\x20packData\x20:\x20texture_storage_2d<rgba32uint,read>;\x0d\x0a@group(0)\x20@binding(4)\x20var\x20depthTexture:\x20texture_depth_2d;\x0d\x0a@group(0)\x20@binding(5)\x20var\x20texSampler:\x20sampler;\x0d\x0a@group(0)\x20@binding(6)\x20var\x20inputTexture:\x20texture_2d<f32>;\x0d\x0a@group(0)\x20@binding(7)\x20var\x20accumulatedTexture:\x20texture_2d<f32>;\x0d\x0a@group(0)\x20@binding(8)\x20var\x20outputTexture:\x20texture_storage_2d<rgba32float,\x20write>;\x0d\x0a\x0d\x0a\x0d\x0a\x0d\x0astruct\x20InputData\x20{\x0d\x0a\x20\x20\x20@builtin(local_invocation_id)\x20local_id:\x20vec3<u32>,\x0d\x0a\x20\x20\x20@builtin(local_invocation_index)\x20local_index:\x20u32,\x0d\x0a\x20\x20\x20@builtin(global_invocation_id)\x20global_id:\x20vec3<u32>,\x0d\x0a}\x0d\x0a@compute\x20@workgroup_size(16,16)\x0d\x0afn\x20main(input:\x20InputData)\x20{\x0d\x0a\x0d\x0a\x20\x20\x20\x20let\x20texSizeU\x20=\x20textureDimensions(depthTexture);\x0d\x0a\x20\x20\x20\x20if(any(texSizeU\x20<\x20input.global_id.xy)){\x0d\x0a\x20\x20\x20\x20\x20\x20\x20\x20return\x20;\x0d\x0a\x20\x20\x20\x20}\x0d\x0a\x20\x20\x20\x20let\x20texSize\x20=\x20vec2<f32>(texSizeU);\x0d\x0a\x0d\x0a\x20\x20\x20\x20textureStore(outputTexture,\x20input.global_id.xy,\x20vec4<f32>(0.0));\x0d\x0a\x0d\x0a\x20\x20\x20\x20let\x20packData_t\x20=\x20textureLoad(packData,input.global_id.xy);\x0d\x0a\x0d\x0a\x20\x20\x20\x20let\x20srme\x20=\x20unpack4x8unorm(packData_t.z);\x0d\x0a\x20\x20\x20\x20let\x20roughness\x20=\x20srme.g;\x0d\x0a\x20\x20\x20\x20//\x20绮楃硻搴﹁繃婊x0d\x0a\x20\x20\x20\x20if\x20(roughness\x20>\x20selfUniform.maxRoughness)\x20{\x0d\x0a\x20\x20\x20\x20\x20\x20\x20\x20return;\x0d\x0a\x20\x20\x20\x20}\x0d\x0a\x0d\x0a\x0d\x0a\x20\x20\x20\x20init_rand(input.global_id,vec3(selfUniform.seed1,selfUniform.seed2,selfUniform.seed3));\x0d\x0a\x0d\x0a\x20\x20\x20\x20var\x20csNormal\x20=\x20unpack4x8snorm(packData_t.x).xyz;\x0d\x0a\x20\x20\x20\x20csNormal\x20=\x20normalize((selfUniform.view\x20*\x20\x20vec4f(csNormal,\x200.0)).xyz);\x0d\x0a\x20\x20\x20\x20csNormal.y\x20=\x20-csNormal.y;\x0d\x0a\x0d\x0a\x20\x20\x20\x20var\x20depth\x20=\x20textureLoad(depthTexture,\x20input.global_id.xy,\x200);\x0d\x0a\x20\x20\x20\x20depth\x20=\x20linearizeDepth(depth,\x20selfUniform.nearPlaneZ,\x20selfUniform.farPlaneZ);\x0d\x0a\x0d\x0a\x20\x20\x20\x20let\x20uv\x20=\x20vec2<f32>(input.global_id.xy)\x20/\x20texSize;\x0d\x0a\x20\x20\x20\x20let\x20csPosition:\x20vec3f\x20=\x20computeViewPosFromUVDepth(uv,\x20depth,\x20selfUniform.projection,\x20selfUniform.invProjectionMatrix);\x0d\x0a\x0d\x0a\x20\x20\x20\x20let\x20csViewDirection:\x20vec3f\x20=\x20normalize(csPosition);\x0d\x0a\x0d\x0a\x20\x20\x20\x20let\x20csReflectedVector:\x20vec3f\x20=\x20reflect(csViewDirection,\x20csNormal);\x0d\x0a\x0d\x0a\x20\x20\x20\x20var\x20rayHasHit:\x20bool\x20=\x20false;\x0d\x0a\x20\x20\x20\x20var\x20startPixel:\x20vec2f;\x0d\x0a\x20\x20\x20\x20var\x20hitPixel:\x20vec2f;\x0d\x0a\x20\x20\x20\x20var\x20hitPoint:\x20vec3f;\x0d\x0a\x20\x20\x20\x20var\x20numIterations:\x20f32;\x0d\x0a\x20\x20\x20\x20//#ifdef\x20SSRAYTRACE_DEBUG\x0d\x0a\x20\x20\x20\x20//\x20\x20\x20\x20let\x20debugColor:\x20vec3f;\x0d\x0a\x20\x20\x20\x20//#endif\x0d\x0a\x0d\x0a\x20\x20\x20\x20var\x20csDirection\x20=\x20random_direction_in_hemisphere(csReflectedVector);\x0d\x0a\x20\x20\x20\x20csDirection\x20=\x20mix(csReflectedVector,csDirection,roughness\x20*\x20selfUniform.roughnessFactor);\x0d\x0a\x0d\x0a\x20\x20\x20\x20let\x20uv2:\x20vec2f\x20=\x20vec2f(input.global_id.xy);\x0d\x0a\x20\x20\x20\x20let\x20jitter:\x20f32\x20=\x20(((uv2.x\x20+\x20uv2.y)\x20*\x200.25)%(1.0));\x20//\x20jittering\x20to\x20hide\x20artefacts\x20when\x20stepSize\x20is\x20>\x201\x0d\x0a\x0d\x0a\x20\x20\x20\x20rayHasHit\x20=\x20traceScreenSpaceRay1(\x0d\x0a\x20\x20\x20\x20\x20\x20\x20\x20csPosition,\x0d\x0a\x20\x20\x20\x20\x20\x20\x20\x20normalize(csDirection),\x0d\x0a\x20\x20\x20\x20\x20\x20\x20\x20selfUniform.projectToPixelMatrix,\x0d\x0a\x20\x20\x20\x20\x20\x20\x20\x20depthTexture,\x0d\x0a\x20\x20\x20\x20\x20\x20\x20\x20texSize,\x0d\x0a\x20\x20\x20\x20//\x20\x20\x20\x20#ifdef\x20SSRAYTRACE_USE_BACK_DEPTHBUFFER\x0d\x0a\x20\x20\x20\x20//\x20\x20\x20\x20\x20\x20\x20\x20backDepthSampler,\x0d\x0a\x20\x20\x20\x20//\x20\x20\x20\x20\x20\x20\x20\x20selfUniform.backSizeFactor,\x0d\x0a\x20\x20\x20\x20//\x20\x20\x20\x20#endif\x0d\x0a\x20\x20\x20\x20\x20\x20\x20\x20selfUniform.thickness,\x0d\x0a\x20\x20\x20\x20\x20\x20\x20\x20selfUniform.nearPlaneZ,\x0d\x0a\x20\x20\x20\x20\x20\x20\x20\x20selfUniform.farPlaneZ,\x0d\x0a\x20\x20\x20\x20\x20\x20\x20\x20selfUniform.stepSize,\x0d\x0a\x20\x20\x20\x20\x20\x20\x20\x20jitter,\x0d\x0a\x20\x20\x20\x20\x20\x20\x20\x20selfUniform.maxSteps,\x0d\x0a\x20\x20\x20\x20\x20\x20\x20\x20selfUniform.maxDistance,\x0d\x0a\x20\x20\x20\x20\x20\x20\x20\x20selfUniform.selfCollisionNumSkip,\x0d\x0a\x20\x20\x20\x20\x20\x20\x20\x20&startPixel,\x0d\x0a\x20\x20\x20\x20\x20\x20\x20\x20&hitPixel,\x0d\x0a\x20\x20\x20\x20\x20\x20\x20\x20&hitPoint,\x0d\x0a\x20\x20\x20\x20\x20\x20\x20\x20&numIterations\x0d\x0a\x20\x20\x20\x20//#ifdef\x20SSRAYTRACE_DEBUG\x0d\x0a\x20\x20\x20\x20//\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20,&debugColor\x0d\x0a\x20\x20\x20\x20//#endif\x0d\x0a\x20\x20\x20\x20\x20\x20\x20\x20);\x0d\x0a\x0d\x0a\x20\x20\x20\x20var\x20inputColor\x20=\x20vec4f(0,0,0,0);\x0d\x0a\x20\x20\x20\x20if(rayHasHit){\x0d\x0a\x20\x20\x20\x20\x20\x20\x20\x20inputColor\x20=\x20textureSampleLevel(inputTexture,\x20texSampler,\x20hitPixel.xy\x20/\x20texSize,\x200.0);\x0d\x0a\x20\x20\x20\x20}\x0d\x0a\x0d\x0a\x0d\x0a\x20\x20\x20\x20let\x20velocityParam\x20=\x20textureLoad(prev_SSPData,\x20\x20input.global_id.xy);\x0d\x0a\x20\x20\x20\x20var\x20pos1\x20=\x20velocityParam.xy\x20/\x20velocityParam.w\x20*\x200.5\x20+\x200.5;\x0d\x0a\x20\x20\x20\x20pos1.y\x20=\x201\x20-\x20pos1.y;\x0d\x0a\x0d\x0a\x20\x20\x20\x20let\x20accumulatedColor\x20=\x20textureSampleLevel(accumulatedTexture,\x20texSampler,pos1,\x200.0).rgb;\x0d\x0a\x0d\x0a\x20\x20\x20\x20let\x20outputColor\x20=\x20mix(inputColor.rgb,\x20accumulatedColor,\x20selfUniform.blend);\x0d\x0a\x20\x20\x20\x20textureStore(outputTexture,\x20input.global_id.xy,\x20vec4<f32>(outputColor.rgb,\x201));\x0d\x0a\x0d\x0a\x0d\x0a}\x0d\x0a\x0d\x0afn\x20linearizeDepth(depth:\x20f32,\x20near:\x20f32,\x20far:\x20f32)\x20->\x20f32\x20{\x0d\x0a\x20\x20\x20\x20//\x20闈炲弽鍚戞繁搴x0d\x0a//\x20\x20\x20\x20return\x20-(near\x20*\x20far)\x20/\x20(far\x20-\x20depth\x20*\x20(far\x20-\x20near));\x0d\x0a\x20\x20\x20\x20//\x20鍙嶅悜娣卞害\x0d\x0a\x20\x20\x20\x20return\x20-(near\x20*\x20far)\x20/\x20(near\x20-\x20depth\x20*\x20(near\x20-\x20far));\x0d\x0a}\x0d\x0a\x0d\x0afn\x20traceScreenSpaceRay1(\x0d\x0a\x20\x20\x20\x20csOrigin:\x20vec3f,\x0d\x0a\x20\x20\x20\x20csDirection:\x20vec3f,\x0d\x0a\x20\x20\x20\x20projectToPixelMatrix:\x20mat4x4<f32>,\x0d\x0a\x20\x20\x20\x20depthTexture:\x20texture_depth_2d,\x0d\x0a\x20\x20\x20\x20depthTextureSize:\x20vec2f,\x0d\x0a//#ifdef\x20SSRAYTRACE_USE_BACK_DEPTHBUFFER\x0d\x0a//\x20\x20\x20\x20csZBackBuffer:\x20texture_2d<f32>,\x0d\x0a//\x20\x20\x20\x20csZBackSizeFactor:\x20f32,\x0d\x0a//#endif\x0d\x0a\x20\x20\x20\x20csZThickness:\x20f32,\x0d\x0a\x20\x20\x20\x20nearPlaneZ:\x20f32,\x0d\x0a\x20\x20\x20\x20farPlaneZ:\x20f32,\x0d\x0a\x20\x20\x20\x20stride:\x20f32,\x0d\x0a\x20\x20\x20\x20jitterFraction:\x20f32,\x0d\x0a\x20\x20\x20\x20maxSteps:\x20f32,\x0d\x0a\x20\x20\x20\x20maxRayTraceDistance:\x20f32,\x0d\x0a\x20\x20\x20\x20selfCollisionNumSkip:\x20f32,\x0d\x0a\x20\x20\x20\x20startPixel:\x20ptr<function,\x20vec2f>,\x0d\x0a\x20\x20\x20\x20hitPixel:\x20ptr<function,\x20vec2f>,\x0d\x0a\x20\x20\x20\x20csHitPoint:\x20ptr<function,\x20vec3f>,\x0d\x0a\x20\x20\x20\x20numIterations:\x20ptr<function,\x20f32>\x0d\x0a//#ifdef\x20SSRAYTRACE_DEBUG\x0d\x0a//\x20\x20\x20\x20,debugColor:\x20ptr<function,\x20vec3f>\x0d\x0a//#endif\x0d\x0a)\x20->\x20bool\x0d\x0a{\x0d\x0a\x20\x20\x20\x20let\x20rayLength:\x20f32\x20=\x20select(maxRayTraceDistance,\x20(-nearPlaneZ\x20-\x20csOrigin.z)\x20/\x20csDirection.z,\x20(csOrigin.z\x20+\x20csDirection.z\x20*\x20maxRayTraceDistance)\x20>\x20-nearPlaneZ);\x0d\x0a\x0d\x0a\x0d\x0a\x20\x20\x20\x20let\x20csEndPoint:\x20vec3f\x20=\x20csOrigin\x20+\x20csDirection\x20*\x20rayLength;\x0d\x0a\x0d\x0a\x20\x20\x20\x20//\x20Initialize\x20to\x20off\x20screen\x0d\x0a\x20\x20\x20\x20*hitPixel\x20=\x20\x20vec2f(-1.0,\x20-1.0);\x0d\x0a\x0d\x0a\x20\x20\x20\x20//\x20Project\x20into\x20screen\x20space\x0d\x0a\x20\x20\x20\x20let\x20H0:\x20vec4f\x20=\x20projectToPixelMatrix\x20*\x20\x20vec4f(csOrigin,\x201.0);\x0d\x0a\x20\x20\x20\x20let\x20H1:\x20vec4f\x20=\x20projectToPixelMatrix\x20*\x20\x20vec4f(csEndPoint,\x201.0);\x0d\x0a\x0d\x0a\x20\x20\x20\x20//\x20There\x20are\x20a\x20lot\x20of\x20divisions\x20by\x20w\x20that\x20can\x20be\x20turned\x20into\x20multiplications\x0d\x0a\x20\x20\x20\x20//\x20at\x20some\x20minor\x20precision\x20loss...and\x20we\x20need\x20to\x20interpolate\x20these\x201/w\x20values\x0d\x0a\x20\x20\x20\x20//\x20anyway.\x0d\x0a\x20\x20\x20\x20//\x0d\x0a\x20\x20\x20\x20//\x20Because\x20the\x20caller\x20was\x20required\x20to\x20clip\x20to\x20the\x20near\x20plane,\x0d\x0a\x20\x20\x20\x20//\x20this\x20homogeneous\x20division\x20(projecting\x20from\x204D\x20to\x202D)\x20is\x20guaranteed\x0d\x0a\x20\x20\x20\x20//\x20to\x20succeed.\x0d\x0a\x20\x20\x20\x20var\x20k0:\x20f32\x20=\x201.0\x20/\x20H0.w;\x0d\x0a\x20\x20\x20\x20var\x20k1:\x20f32\x20=\x201.0\x20/\x20H1.w;\x0d\x0a\x0d\x0a\x20\x20\x20\x20//\x20Switch\x20the\x20original\x20points\x20to\x20values\x20that\x20interpolate\x20linearly\x20in\x202D\x0d\x0a\x20\x20\x20\x20var\x20Q0:\x20vec3f\x20=\x20csOrigin\x20*\x20k0;\x0d\x0a\x20\x20\x20\x20var\x20Q1:\x20vec3f\x20=\x20csEndPoint\x20*\x20k1;\x0d\x0a\x0d\x0a\x20\x20\x20\x20//\x20Screen-space\x20endpoints\x0d\x0a\x20\x20\x20\x20var\x20P0:\x20vec2f\x20=\x20H0.xy\x20*\x20k0;\x0d\x0a\x20\x20\x20\x20var\x20P1:\x20vec2f\x20=\x20H1.xy\x20*\x20k1;\x0d\x0a\x0d\x0a//#ifdef\x20SSRAYTRACE_CLIP_TO_FRUSTUM\x0d\x0a\x20\x20\x20\x20let\x20xMax:\x20f32\x20=\x20depthTextureSize.x\x20-\x200.5;\x0d\x0a\x20\x20\x20\x20let\x20xMin\x20=\x200.5;\x0d\x0a\x20\x20\x20\x20let\x20yMax\x20=\x20depthTextureSize.y\x20-\x200.5;\x0d\x0a\x20\x20\x20\x20let\x20yMin\x20=\x200.5;\x0d\x0a\x20\x20\x20\x20var\x20alpha:\x20f32\x20=\x200.0;\x0d\x0a\x0d\x0a\x20\x20\x20\x20//\x20Assume\x20P0\x20is\x20in\x20the\x20viewport\x20(P1\x20-\x20P0\x20is\x20never\x20zero\x20when\x20clipping)\x0d\x0a\x20\x20\x20\x20if\x20((P1.y\x20>\x20yMax)\x20||\x20(P1.y\x20<\x20yMin))\x20{\x0d\x0a\x20\x20\x20\x20\x20\x20\x20\x20alpha\x20=\x20(P1.y\x20-\x20select(yMin,\x20yMax,\x20(P1.y\x20>\x20yMax)))\x20/\x20(P1.y\x20-\x20P0.y);\x0d\x0a\x20\x20\x20\x20}\x0d\x0a\x0d\x0a\x20\x20\x20\x20if\x20((P1.x\x20>\x20xMax)\x20||\x20(P1.x\x20<\x20xMin))\x20{\x0d\x0a\x20\x20\x20\x20\x20\x20\x20\x20alpha\x20=\x20max(alpha,\x20(P1.x\x20-\x20select(xMin,\x20xMax,\x20(P1.x\x20>\x20xMax)))\x20/\x20(P1.x\x20-\x20P0.x));\x0d\x0a\x20\x20\x20\x20}\x0d\x0a\x0d\x0a\x20\x20\x20\x20P1\x20=\x20mix(P1,\x20P0,\x20alpha);\x20k1\x20=\x20mix(k1,\x20k0,\x20alpha);\x20Q1\x20=\x20mix(Q1,\x20Q0,\x20alpha);\x0d\x0a//#endif\x0d\x0a\x0d\x0a\x20\x20\x20\x20//\x20If\x20the\x20line\x20is\x20degenerate,\x20make\x20it\x20cover\x20at\x20least\x20one\x20pixel\x0d\x0a\x20\x20\x20\x20//\x20to\x20avar\x20handling:\x20voidnull\x20zero-pixel\x20extent\x20as\x20a\x20special\x20case\x20later\x0d\x0a\x0d\x0a\x0d\x0a\x20\x20\x20\x20let\x20P0_subtract_P1\x20=\x20P0\x20-\x20P1;\x0d\x0a\x20\x20\x20\x20let\x20distanceSquared\x20=\x20\x20dot(P0_subtract_P1,\x20P0_subtract_P1);\x0d\x0a\x0d\x0a\x20\x20\x20\x20P1\x20+=\x20\x20vec2f(select(0.0,\x200.01,\x20distanceSquared\x20<\x200.0001));\x0d\x0a\x0d\x0a\x20\x20\x20\x20var\x20delta:\x20vec2f\x20=\x20P1\x20-\x20P0;\x0d\x0a\x0d\x0a\x20\x20\x20\x20//\x20Permute\x20so\x20that\x20the\x20primary\x20iteration\x20is\x20in\x20x\x20to\x20reduce\x0d\x0a\x20\x20\x20\x20//\x20large\x20branches\x20later\x0d\x0a\x20\x20\x20\x20var\x20permute:\x20bool\x20=\x20false;\x0d\x0a\x20\x20\x20\x20if\x20(abs(delta.x)\x20<\x20abs(delta.y))\x20{\x0d\x0a\x09\x09//\x20More-vertical\x20line.\x20Create\x20a\x20permutation\x20that\x20swaps\x20x\x20and\x20y\x20in\x20the\x20output\x0d\x0a\x20\x20\x20\x20\x20\x20\x20\x20permute\x20=\x20true;\x0d\x0a\x0d\x0a\x20\x20\x20\x20\x20\x20\x20\x20//\x20Directly\x20swizzle\x20the\x20inputs\x0d\x0a\x20\x20\x20\x20\x20\x20\x20\x20delta\x20=\x20delta.yx;\x0d\x0a\x20\x20\x20\x20\x20\x20\x20\x20P0\x20=\x20P0.yx;\x0d\x0a\x20\x20\x20\x20\x20\x20\x20\x20P1\x20=\x20P1.yx;\x0d\x0a\x20\x20\x20\x20}\x0d\x0a\x0d\x0a\x09//\x20From\x20now\x20on,\x20\x22x\x22\x20is\x20the\x20primary\x20iteration\x20direction\x20and\x20\x22y\x22\x20is\x20the\x20secondary\x20one\x0d\x0a\x0d\x0a\x20\x20\x20\x20let\x20stepDirection:\x20f32\x20=\x20sign(delta.x);\x0d\x0a\x20\x20\x20\x20let\x20invdx:\x20f32\x20=\x20stepDirection\x20/\x20delta.x;\x0d\x0a\x20\x20\x20\x20var\x20dP:\x20vec2f\x20=\x20\x20vec2f(stepDirection,\x20delta.y\x20*\x20invdx);\x0d\x0a\x0d\x0a\x20\x20\x20\x20//\x20Track\x20the\x20derivatives\x20of\x20Q\x20and\x20k\x0d\x0a\x20\x20\x20\x20var\x20dQ:\x20vec3f\x20=\x20(Q1\x20-\x20Q0)\x20*\x20invdx;\x0d\x0a\x20\x20\x20\x20var\x20dk:\x20f32\x20=\x20(k1\x20-\x20k0)\x20*\x20invdx;\x0d\x0a\x0d\x0a\x20\x20\x20\x20//\x20Because\x20we\x20test\x201/2\x20a\x20texel\x20forward\x20along\x20the\x20ray,\x20on\x20the\x20very\x20last\x20iteration\x0d\x0a\x20\x20\x20\x20//\x20the\x20interpolation\x20can\x20go\x20past\x20the\x20end\x20of\x20the\x20ray.\x20Use\x20these\x20bounds\x20to\x20clamp\x20it.\x0d\x0a\x20\x20\x20\x20let\x20zMin:\x20f32\x20=\x20min(csEndPoint.z,\x20csOrigin.z);\x0d\x0a\x20\x20\x20\x20let\x20zMax:\x20f32\x20=\x20max(csEndPoint.z,\x20csOrigin.z);\x0d\x0a\x0d\x0a\x20\x20\x20\x20//\x20Scale\x20derivatives\x20by\x20the\x20desired\x20pixel\x20stride\x0d\x0a\x20\x20\x20\x20//\x20寮�濮嬭捣姝ユ骞匼x0d\x0a\x20\x20\x20\x20let\x20start_stride\x20=\x203.0;\x0d\x0a\x20\x20\x20\x20dP\x20*=\x20start_stride;\x20dQ\x20*=\x20start_stride;\x20dk\x20*=\x20start_stride;\x0d\x0a\x0d\x0a\x20\x20\x20\x20//\x20Offset\x20the\x20starting\x20values\x20by\x20the\x20jitterFraction\x20fraction\x0d\x0a\x20\x20\x20\x20P0\x20+=\x20dP\x20*\x20jitterFraction;\x20Q0\x20+=\x20dQ\x20*\x20jitterFraction;\x20k0\x20+=\x20dk\x20*\x20jitterFraction;\x0d\x0a\x0d\x0a\x20\x20\x20\x20//\x20Track\x20ray\x20step\x20and\x20derivatives\x20in\x20a\x20let\x20to:\x20vec4f\x20parallelize\x0d\x0a\x20\x20\x20\x20var\x20pqk:\x20vec4f\x20=\x20\x20vec4f(P0,\x20Q0.z,\x20k0);\x0d\x0a\x20\x20\x20\x20var\x20dPQK:\x20vec4f\x20=\x20\x20vec4f(dP,\x20dQ.z,\x20dk);\x0d\x0a\x0d\x0a\x20\x20\x20\x20*startPixel\x20=\x20select(P0.xy,\x20P0.yx,\x20permute);\x0d\x0a\x0d\x0a\x09//\x20We\x20track\x20the\x20ray\x20depth\x20at\x20+/-\x201/2\x20pixel\x20to\x20treat\x20pixels\x20as\x20clip-space\x20solid\x0d\x0a\x09//\x20voxels.\x20Because\x20the\x20depth\x20at\x20-1/2\x20for\x20a\x20given\x20pixel\x20will\x20be\x20the\x20same\x20as\x20at\x0d\x0a\x09//\x20+1/2\x20for\x20the\x20previous\x20iteration,\x20we\x20actually\x20only\x20have\x20to\x20compute\x20one\x20value\x0d\x0a\x09//\x20per\x20iteration.\x0d\x0a\x20\x20\x20\x20var\x20prevZMaxEstimate:\x20f32\x20=\x20csOrigin.z;\x0d\x0a\x20\x20\x20\x20var\x20rayZMin:\x20f32\x20=\x20prevZMaxEstimate;\x0d\x0a\x20\x20\x20\x20var\x20rayZMax\x20=\x20prevZMaxEstimate;\x0d\x0a\x20\x20\x20\x20var\x20sceneZMax:\x20f32\x20=\x20rayZMax\x20+\x201e4;\x0d\x0a\x0d\x0a\x20\x20\x20\x20//\x20P1.x\x20is\x20never\x20modified\x20after\x20this\x20point,\x20so\x20pre-scale\x20it\x20by\x0d\x0a\x20\x20\x20\x20//\x20the\x20step\x20direction\x20for\x20a\x20signed\x20comparison\x0d\x0a\x20\x20\x20\x20let\x20end:\x20f32\x20=\x20P1.x\x20*\x20stepDirection;\x0d\x0a\x0d\x0a\x20\x20\x20\x20var\x20hit:\x20bool\x20=\x20false;\x0d\x0a\x20\x20\x20\x20var\x20stepCount:\x20f32;\x0d\x0a\x20\x20\x20\x20for\x20(stepCount\x20=\x200.0;\x0d\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20(stepCount\x20<=\x20selfCollisionNumSkip)\x20||\x0d\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20((pqk.x\x20*\x20stepDirection)\x20<=\x20end\x20&&\x0d\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20stepCount\x20<\x20maxSteps\x20&&\x0d\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20!hit\x20&&\x0d\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20sceneZMax\x20!=\x200.0);\x0d\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20pqk\x20+=\x20dPQK\x0d\x0a\x20\x20\x20\x20\x20\x20\x20\x20)\x0d\x0a\x20\x20\x20\x20{\x0d\x0a\x20\x20\x20\x20\x20\x20\x20\x20if(stepCount\x20==\x20stride){\x0d\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20dP\x20*=\x20stride;\x20dQ\x20*=\x20stride;\x20dk\x20*=\x20stride;\x0d\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20dPQK\x20=\x20\x20vec4f(dP,\x20dQ.z,\x20dk);\x0d\x0a\x20\x20\x20\x20\x20\x20\x20\x20}\x0d\x0a\x0d\x0a\x20\x20\x20\x20\x20\x20\x20\x20*hitPixel\x20=\x20select(pqk.xy,\x20pqk.yx,\x20permute);\x0d\x0a\x0d\x0a\x20\x20\x20\x20\x20\x20\x20\x20//\x20The\x20depth\x20range\x20that\x20the\x20ray\x20covers\x20within\x20this\x20loop\x0d\x0a\x20\x20\x20\x20\x20\x20\x20\x20//\x20iteration.\x20\x20Assume\x20that\x20the\x20ray\x20is\x20moving\x20in\x20increasing\x20z\x0d\x0a\x20\x20\x20\x20\x20\x20\x20\x20//\x20and\x20swap\x20if\x20backwards.\x20\x20Because\x20one\x20end\x20of\x20the\x20interval\x20is\x0d\x0a\x20\x20\x20\x20\x20\x20\x20\x20//\x20shared\x20between\x20adjacent\x20iterations,\x20we\x20track\x20the\x20previous\x0d\x0a\x20\x20\x20\x20\x20\x20\x20\x20//\x20value\x20and\x20then\x20swap\x20as\x20needed\x20to\x20ensure\x20correct\x20ordering\x0d\x0a\x20\x20\x20\x20\x20\x20\x20\x20rayZMin\x20=\x20prevZMaxEstimate;\x0d\x0a\x0d\x0a\x20\x20\x20\x20\x20\x20\x20\x20//\x20Compute\x20the\x20value\x20at\x201/2\x20pixel\x20into\x20the\x20future\x0d\x0a\x09\x09rayZMax\x20=\x20(dPQK.z\x20*\x200.5\x20+\x20pqk.z)\x20/\x20(dPQK.w\x20*\x200.5\x20+\x20pqk.w);\x0d\x0a\x20\x20\x20\x20\x20\x20\x20\x20rayZMax\x20=\x20clamp(rayZMax,\x20zMin,\x20zMax);\x0d\x0a\x20\x20\x20\x20\x20\x20\x20\x20prevZMaxEstimate\x20=\x20rayZMax;\x0d\x0a\x20\x20\x20\x20\x20\x20\x20\x20if\x20(rayZMin\x20>\x20rayZMax)\x20{\x0d\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20let\x20t:\x20f32\x20=\x20rayZMin;\x20rayZMin\x20=\x20rayZMax;\x20rayZMax\x20=\x20t;\x0d\x0a\x20\x20\x20\x20\x20\x20\x20\x20}\x0d\x0a\x0d\x0a\x0d\x0a\x20\x20\x20\x20\x20\x20\x20\x20sceneZMax\x20=\x20textureLoad(depthTexture,\x20vec2<i32>(*hitPixel),\x200);\x0d\x0a\x20\x20\x20\x20\x20\x20\x20\x20sceneZMax\x20=\x20linearizeDepth(sceneZMax,\x20nearPlaneZ,\x20farPlaneZ);\x0d\x0a\x20\x20\x20\x20\x20\x20\x20\x20hit\x20=\x20(rayZMax\x20>=\x20sceneZMax\x20-\x20csZThickness)\x20&&\x20(rayZMin\x20<=\x20sceneZMax);\x0d\x0a\x20\x20\x20\x20\x20\x20\x20\x20stepCount\x20+=\x201.0;\x0d\x0a\x20\x20\x20\x20}\x0d\x0a\x0d\x0a\x20\x20\x20\x20//\x20Undo\x20the\x20last\x20increment,\x20which\x20ran\x20after\x20the\x20test\x20variables\x0d\x0a\x20\x20\x20\x20//\x20were\x20set\x20up.\x0d\x0a\x20\x20\x20\x20pqk\x20-=\x20dPQK;\x0d\x0a\x20\x20\x20\x20stepCount\x20-=\x201.0;\x0d\x0a\x0d\x0a\x20\x20\x20\x20if\x20(((pqk.x\x20+\x20dPQK.x)\x20*\x20stepDirection)\x20>\x20end\x20||\x20(stepCount\x20+\x201.0)\x20>=\x20maxSteps\x20||\x20sceneZMax\x20==\x200.0)\x20{\x0d\x0a\x20\x20\x20\x20\x20\x20\x20\x20hit\x20=\x20false;\x0d\x0a\x20\x20\x20\x20}\x0d\x0a\x0d\x0a//#ifdef\x20SSRAYTRACE_ENABLE_REFINEMENT\x0d\x0a\x20\x20\x20\x20if\x20(stride\x20>\x201.0\x20&&\x20hit)\x20{\x0d\x0a\x20\x20\x20\x20\x20\x20\x20\x20//\x20Refine\x20the\x20hit\x20povar\x20within:\x20i32\x20the\x20last\x20large-stride\x20step\x0d\x0a\x0d\x0a\x20\x20\x20\x20\x20\x20\x20\x20//\x20Retreat\x20one\x20whole\x20stride\x20step\x20from\x20the\x20previous\x20loop\x20so\x20that\x0d\x0a\x20\x20\x20\x20\x20\x20\x20\x20//\x20we\x20can\x20re-run\x20that\x20iteration\x20at\x20finer\x20scale\x0d\x0a\x20\x20\x20\x20\x20\x20\x20\x20pqk\x20-=\x20dPQK;\x0d\x0a\x20\x20\x20\x20\x20\x20\x20\x20stepCount\x20-=\x201.0;\x0d\x0a\x0d\x0a\x20\x20\x20\x20\x20\x20\x20\x20//\x20Take\x20the\x20derivatives\x20back\x20to\x20single-pixel\x20stride\x0d\x0a\x20\x20\x20\x20\x20\x20\x20\x20let\x20invStride:\x20f32\x20=\x201.0\x20/\x20stride;\x0d\x0a\x20\x20\x20\x20\x20\x20\x20\x20dPQK\x20*=\x20invStride;\x0d\x0a\x0d\x0a\x20\x20\x20\x20\x20\x20\x20\x20//\x20For\x20this\x20test,\x20we\x20don\x27t\x20bother\x20checking\x20csZThickness\x20or\x20passing\x20the\x20end,\x20since\x20we\x20KNOW\x20there\x20will\x0d\x0a\x20\x20\x20\x20\x20\x20\x20\x20//\x20be\x20a\x20hit\x20point.\x20As\x20soon\x20as\x0d\x0a\x20\x20\x20\x20\x20\x20\x20\x20//\x20the\x20ray\x20passes\x20behind\x20an\x20object,\x20call\x20it\x20a\x20hit.\x20Advance\x20(stride\x20+\x201)\x20steps\x20to\x20fully\x20check\x20this\x0d\x0a\x20\x20\x20\x20\x20\x20\x20\x20//\x20interval\x20(we\x20could\x20skip\x20the\x20very\x20first\x20iteration,\x20but\x20then\x20we\x27d\x20need\x20identical\x20code\x20to\x20prime\x20the\x20loop)\x0d\x0a\x20\x20\x20\x20\x20\x20\x20\x20var\x20refinementStepCount:\x20f32\x20=\x200.0;\x0d\x0a\x0d\x0a\x20\x20\x20\x20\x20\x20\x20\x20//\x20This\x20is\x20the\x20current\x20sample\x20point\x27s\x20z-value,\x20taken\x20back\x20to\x20camera\x20space\x0d\x0a\x20\x20\x20\x20\x20\x20\x20\x20prevZMaxEstimate\x20=\x20pqk.z\x20/\x20pqk.w;\x0d\x0a\x20\x20\x20\x20\x20\x20\x20\x20rayZMax\x20=\x20prevZMaxEstimate;\x0d\x0a\x0d\x0a\x20\x20\x20\x20\x20\x20\x20\x20//\x20Ensure\x20that\x20the\x20FOR-loop\x20test\x20passes\x20on\x20the\x20first\x20iteration\x20since\x20we\x0d\x0a\x20\x20\x20\x20\x20\x20\x20\x20//\x20won\x27t\x20have\x20a\x20valid\x20value\x20of\x20sceneZMax\x20to\x20test.\x0d\x0a\x20\x20\x20\x20\x20\x20\x20\x20sceneZMax\x20=\x20rayZMax\x20+\x201e7;\x0d\x0a\x0d\x0a\x20\x20\x20\x20\x20\x20\x20\x20for\x20(;\x0d\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20refinementStepCount\x20<=\x201.0\x20||\x0d\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20((refinementStepCount\x20<=\x20stride\x20*\x201.4)\x20&&\x0d\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20(rayZMax\x20<\x20sceneZMax)\x20&&\x20(sceneZMax\x20!=\x200.0));\x0d\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20pqk\x20+=\x20dPQK)\x0d\x0a\x20\x20\x20\x20\x20\x20\x20\x20{\x0d\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20rayZMin\x20=\x20prevZMaxEstimate;\x0d\x0a\x0d\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20//\x20Compute\x20the\x20ray\x20camera-space\x20Z\x20value\x20at\x201/2\x20fine\x20step\x20(pixel)\x20into\x20the\x20future\x0d\x0a\x09\x09\x20\x20\x20\x20rayZMax\x20=\x20(dPQK.z\x20*\x200.5\x20+\x20pqk.z)\x20/\x20(dPQK.w\x20*\x200.5\x20+\x20pqk.w);\x0d\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20rayZMax\x20=\x20clamp(rayZMax,\x20zMin,\x20zMax);\x0d\x0a\x0d\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20prevZMaxEstimate\x20=\x20rayZMax;\x0d\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20rayZMax\x20=\x20max(rayZMax,\x20rayZMin);\x0d\x0a\x0d\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20*hitPixel\x20=\x20select(pqk.xy,\x20pqk.yx,\x20permute);\x0d\x0a\x0d\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20sceneZMax\x20=\x20textureLoad(depthTexture,\x20vec2<i32>(*hitPixel),\x200);\x0d\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20sceneZMax\x20=\x20linearizeDepth(sceneZMax,\x20nearPlaneZ,\x20farPlaneZ);\x0d\x0a\x0d\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20refinementStepCount\x20+=\x201.0;\x0d\x0a\x20\x20\x20\x20\x20\x20\x20\x20}\x0d\x0a\x0d\x0a\x20\x20\x20\x20\x20\x20\x20\x20//\x20Undo\x20the\x20last\x20increment,\x20which\x20happened\x20after\x20the\x20test\x20variables\x20were\x20set\x20up\x0d\x0a\x20\x20\x20\x20\x20\x20\x20\x20pqk\x20-=\x20dPQK;\x0d\x0a\x20\x20\x20\x20\x20\x20\x20\x20refinementStepCount\x20-=\x201.0;\x0d\x0a\x0d\x0a\x20\x20\x20\x20\x20\x20\x20\x20//\x20Count\x20the\x20refinement\x20steps\x20as\x20fractions\x20of\x20the\x20original\x20stride.\x20Save\x20a\x20register\x0d\x0a\x20\x20\x20\x20\x20\x20\x20\x20//\x20by\x20not\x20retaining\x20invStride\x20until\x20here\x0d\x0a\x20\x20\x20\x20\x20\x20\x20\x20stepCount\x20+=\x20refinementStepCount\x20/\x20stride;\x0d\x0a\x20\x20\x20\x20}\x0d\x0a//#endif\x0d\x0a\x0d\x0a\x20\x20\x20\x20Q0\x20=\x20vec3f(Q0.xy\x20+\x20dQ.xy\x20*\x20stepCount,\x20pqk.z);\x0d\x0a\x0d\x0a\x20\x20\x20\x20*csHitPoint\x20=\x20Q0\x20/\x20pqk.w;\x0d\x0a\x0d\x0a\x20\x20\x20\x20*numIterations\x20=\x20stepCount\x20+\x201.0;\x0d\x0a\x0d\x0a//#ifdef\x20SSRAYTRACE_DEBUG\x0d\x0a//\x20\x20\x20\x20if\x20(((pqk.x\x20+\x20dPQK.x)\x20*\x20stepDirection)\x20>\x20end)\x20{\x0d\x0a//\x20\x20\x20\x20\x20\x20\x20\x20//\x20Hit\x20the\x20max\x20ray\x20distance\x20->\x20blue\x0d\x0a//\x20\x20\x20\x20\x20\x20\x20\x20*debugColor\x20=\x20\x20vec3f(0,0,1);\x0d\x0a//\x20\x20\x20\x20}\x20else\x20if\x20((stepCount\x20+\x201.0)\x20>=\x20maxSteps)\x20{\x0d\x0a//\x20\x20\x20\x20\x20\x20\x20\x20//\x20Ran\x20out\x20of\x20steps\x20->\x20red\x0d\x0a//\x20\x20\x20\x20\x20\x20\x20\x20*debugColor\x20=\x20\x20vec3f(1,0,0);\x0d\x0a//\x20\x20\x20\x20}\x20else\x20if\x20(sceneZMax\x20==\x200.0)\x20{\x0d\x0a//\x20\x20\x20\x20\x20\x20\x20\x20//\x20Went\x20off\x20screen\x20->\x20yellow\x0d\x0a//\x20\x20\x20\x20\x20\x20\x20\x20*debugColor\x20=\x20\x20vec3f(1,1,0);\x0d\x0a//\x20\x20\x20\x20}\x20else\x20{\x0d\x0a//\x20\x20\x20\x20\x20\x20\x20\x20//\x20Encountered\x20a\x20valid\x20hit\x20->\x20green\x0d\x0a//\x20\x20\x20\x20\x20\x20\x20\x20*debugColor\x20=\x20\x20vec3f(0,\x20stepCount\x20/\x20maxSteps,\x200);\x0d\x0a//\x20\x20\x20\x20}\x0d\x0a//#endif\x0d\x0a\x0d\x0a\x20\x20\x20\x20return\x20hit;\x0d\x0a}\x0d\x0a\x0d\x0a/**\x0d\x0a\x20\x20\x20\x20texCoord:\x20in\x20the\x20[0,\x201]\x20range\x0d\x0a\x20\x20\x20\x20depth:\x20depth\x20in\x20view\x20space\x20(range\x20[znear,\x20zfar]])\x0d\x0a*/\x0d\x0afn\x20computeViewPosFromUVDepth(texCoord:\x20vec2f,\x20depth:\x20f32,\x20projection:\x20mat4x4<f32>,\x20invProjectionMatrix:\x20mat4x4<f32>)\x20->\x20vec3f\x20{\x0d\x0a\x20\x20\x20\x20let\x20z\x20=\x20-projection[2].z\x20-\x20projection[3].z\x20/\x20depth;\x0d\x0a\x20\x20\x20\x20let\x20ndc\x20=\x20vec4f(texCoord\x20*\x202.0\x20-\x201.0,\x20z,\x201.0);\x0d\x0a\x20\x20\x20\x20let\x20eyePos:\x20vec4f\x20=\x20invProjectionMatrix\x20*\x20ndc;\x0d\x0a\x20\x20\x20\x20let\x20result\x20=\x20eyePos.xyz\x20/\x20eyePos.w;\x0d\x0a\x20\x20\x20\x20return\x20result;\x0d\x0a}'},_0x24a0eb={'code':'\x0d\x0astruct\x20SelfUniform\x20{\x0d\x0a\x20\x20\x20\x20invProjectionMatrix:\x20mat4x4<f32>,\x0d\x0a\x20\x20\x20\x20invViewMatrix:\x20mat4x4<f32>,\x0d\x0a};\x0d\x0a\x0d\x0a@group(0)\x20@binding(0)\x20var<uniform>\x20selfUniform\x20:\x20SelfUniform;\x0d\x0a@group(0)\x20@binding(1)\x20var<uniform>\x20scene:\x20SceneInfoStruct;\x0d\x0a@group(0)\x20@binding(2)\x20var\x20finalColor_texture\x20:\x20texture_storage_2d<rgba8unorm,write>;\x0d\x0a@group(0)\x20@binding(3)\x20var\x20myTexture:\x20texture_2d_array<f32>;\x0d\x0a@group(0)\x20@binding(4)\x20var\x20mySampler:\x20sampler;\x0d\x0a\x0d\x0astruct\x20InputData\x20{\x0d\x0a\x20\x20\x20@builtin(local_invocation_id)\x20local_id:\x20vec3<u32>,\x0d\x0a\x20\x20\x20@builtin(local_invocation_index)\x20local_index:\x20u32,\x0d\x0a\x20\x20\x20@builtin(global_invocation_id)\x20global_id:\x20vec3<u32>,\x0d\x0a}\x0d\x0a\x0d\x0a@compute\x20@workgroup_size(16,16)\x0d\x0afn\x20main(input:\x20InputData)\x20{\x0d\x0a\x0d\x0a\x20\x20\x20\x20//\x20鑾峰彇绾圭悊灏哄骞舵鏌ヨ竟鐣孿x0d\x0a\x20\x20\x20\x20let\x20texSizeU\x20=\x20textureDimensions(finalColor_texture);\x0d\x0a\x20\x20\x20\x20if\x20(any(input.global_id.xy\x20>=\x20texSizeU.xy))\x20{\x0d\x0a\x20\x20\x20\x20\x20\x20\x20\x20return;\x0d\x0a\x20\x20\x20\x20}\x0d\x0a\x20\x20\x20\x20let\x20texSize\x20=\x20vec2<f32>(texSizeU.xy);\x0d\x0a\x0d\x0a\x20\x20\x20\x20//\x20璁$畻鍏夌嚎璧风偣鍜屾柟鍚慭x0d\x0a\x20\x20\x20\x20let\x20ndc_xy\x20=\x202.0\x20*\x20(vec2f(input.global_id.xy)\x20/\x20texSize)\x20-\x201.0;\x0d\x0a\x20\x20\x20\x20let\x20clip\x20=\x20vec4<f32>(ndc_xy,\x200,\x201.0);\x0d\x0a\x20\x20\x20\x20let\x20viewPos\x20=\x20scene.inverse_projectionMatrix\x20*\x20clip;\x0d\x0a\x20\x20\x20\x20let\x20worldPos\x20=\x20scene.inverse_viewMatrix\x20*\x20vec4<f32>(viewPos.xyz\x20/\x20viewPos.w,\x201.0)\x20\x20+\x20vec4(scene.accuracyOffsetX,scene.accuracyOffsetY,scene.accuracyOffsetZ,0);\x0d\x0a\x20\x20\x20\x20let\x20rayOrigin\x20=\x20scene.inverse_viewMatrix[3].xyz\x20\x20+\x20vec3(scene.accuracyOffsetX,scene.accuracyOffsetY,scene.accuracyOffsetZ);\x20\x20//\x20鐩告満浣嶇疆\x0d\x0a\x20\x20\x20\x20let\x20rayDir\x20=\x20normalize(worldPos.xyz\x20-\x20rayOrigin);\x0d\x0a\x0d\x0a\x0d\x0a\x20\x20\x20\x20let\x20texSize3d\x20=\x20vec3f(vec2f(textureDimensions(myTexture)),50);\x0d\x0a\x0d\x0a\x0d\x0a\x20\x20\x20\x20let\x20intersection\x20=\x20ray_aabb_intersection(rayOrigin,rayDir,vec3f(0),texSize3d);\x0d\x0a\x20\x20\x20\x20if(!intersection.hit){\x0d\x0a\x20\x20\x20\x20\x20\x20\x20\x20return\x20;\x0d\x0a\x20\x20\x20\x20}\x0d\x0a\x20\x20\x20\x20var\x20finalColor\x20=\x20vec3<f32>(0.0);\x0d\x0a\x20\x20\x20\x20var\x20accumulatedAlpha\x20=\x200.0;\x0d\x0a\x0d\x0a\x20\x20\x20\x20let\x20StepSize\x20=\x200.1;\x0d\x0a\x20\x20\x20\x20var\x20t\x20=\x20intersection.t_near;\x0d\x0a\x20\x20\x20\x20for\x20(var\x20i\x20=\x200u;\x20i\x20<\x201000u;\x20i++)\x20{\x0d\x0a\x20\x20\x20\x20\x20\x20\x20\x20let\x20pos\x20=\x20(rayOrigin\x20+\x20rayDir\x20*\x20t);\x0d\x0a\x0d\x0a\x20\x20\x20\x20\x20\x20\x20\x20if(all(pos\x20>\x20vec3(0.0))\x20&&\x20all(pos\x20<\x20texSize3d)){\x0d\x0a\x0d\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20let\x20texCoord\x20=\x20pos.xy\x20/\x20texSize3d.xy;\x0d\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20let\x20array_index\x20=\x20u32(pos.z);\x0d\x0a\x0d\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20let\x20temp\x20=\x20textureSampleLevel(myTexture,\x20mySampler,\x20texCoord,array_index,\x200).r;\x0d\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20if(temp\x20!=\x200){\x0d\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20let\x20sampleColor\x20=\x20transferFunction(temp,\x20-5.0,\x2035);\x0d\x0a\x0d\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20let\x20alpha\x20=\x20sampleColor.a\x20*\x20StepSize;\x0d\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20finalColor\x20+=\x20sampleColor.rgb\x20*\x20alpha\x20*\x20(1.0\x20-\x20accumulatedAlpha);\x0d\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20accumulatedAlpha\x20+=\x20alpha;\x0d\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20}\x0d\x0a\x0d\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20if(accumulatedAlpha\x20>=\x200.95)\x20{\x0d\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20break;\x0d\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20}\x0d\x0a\x20\x20\x20\x20\x20\x20\x20\x20}\x0d\x0a\x0d\x0a\x20\x20\x20\x20\x20\x20\x20\x20t\x20+=\x20StepSize;\x0d\x0a\x20\x20\x20\x20\x20\x20\x20\x20if(t\x20>\x20intersection.t_far){\x0d\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20break;\x0d\x0a\x20\x20\x20\x20\x20\x20\x20\x20}\x0d\x0a\x20\x20\x20\x20}\x0d\x0a\x0d\x0a\x20\x20\x20\x20textureStore(finalColor_texture,\x20input.global_id.xy,\x20vec4<f32>(finalColor,accumulatedAlpha));\x0d\x0a}\x0d\x0a\x0d\x0a//\x20娓╁害鍒伴鑹茬殑杞Щ鍑芥暟\x0d\x0afn\x20transferFunction(temp:\x20f32,\x20min:f32,\x20max:f32)\x20->\x20vec4<f32>\x20{\x0d\x0a\x0d\x0a\x20\x20\x20\x20//\x20褰掍竴鍖朶x20temp\x20鍒癨x20[0,\x201]\x20鍖洪棿\x0d\x0a\x20\x20\x20\x20let\x20t\x20=\x20clamp((temp\x20-\x20min)\x20/\x20(max\x20-\x20min),\x200.0,\x201.0);\x0d\x0a\x0d\x0a\x20\x20\x20\x20//\x20瀹氫箟棰滆壊杩囨浮\x0d\x0a\x20\x20\x20\x20var\x20color:\x20vec3<f32>;\x0d\x0a\x20\x20\x20\x20if\x20(t\x20<=\x200.25)\x20{\x0d\x0a\x20\x20\x20\x20\x20\x20\x20\x20//\x20钃濊壊\x20(0,0,1)\x20鍒癨x20闈掕壊\x20(0,1,1)\x0d\x0a\x20\x20\x20\x20\x20\x20\x20\x20color\x20=\x20mix(vec3<f32>(0.0,\x200.0,\x201.0),\x20vec3<f32>(0.0,\x201.0,\x201.0),\x20t\x20/\x200.25);\x0d\x0a\x20\x20\x20\x20}\x20else\x20if\x20(t\x20<=\x200.5)\x20{\x0d\x0a\x20\x20\x20\x20\x20\x20\x20\x20//\x20闈掕壊\x20(0,1,1)\x20鍒癨x20缁胯壊\x20(0,1,0)\x0d\x0a\x20\x20\x20\x20\x20\x20\x20\x20color\x20=\x20mix(vec3<f32>(0.0,\x201.0,\x201.0),\x20vec3<f32>(0.0,\x201.0,\x200.0),\x20(t\x20-\x200.25)\x20/\x200.25);\x0d\x0a\x20\x20\x20\x20}\x20else\x20if\x20(t\x20<=\x200.75)\x20{\x0d\x0a\x20\x20\x20\x20\x20\x20\x20\x20//\x20缁胯壊\x20(0,1,0)\x20鍒癨x20榛勮壊\x20(1,1,0)\x0d\x0a\x20\x20\x20\x20\x20\x20\x20\x20color\x20=\x20mix(vec3<f32>(0.0,\x201.0,\x200.0),\x20vec3<f32>(1.0,\x201.0,\x200.0),\x20(t\x20-\x200.5)\x20/\x200.25);\x0d\x0a\x20\x20\x20\x20}\x20else\x20{\x0d\x0a\x20\x20\x20\x20\x20\x20\x20\x20//\x20榛勮壊\x20(1,1,0)\x20鍒癨x20绾㈣壊\x20(1,0,0)\x0d\x0a\x20\x20\x20\x20\x20\x20\x20\x20color\x20=\x20mix(vec3<f32>(1.0,\x201.0,\x200.0),\x20vec3<f32>(1.0,\x200.0,\x200.0),\x20(t\x20-\x200.75)\x20/\x200.25);\x0d\x0a\x20\x20\x20\x20}\x0d\x0a\x0d\x0a\x20\x20\x20\x20//\x20閫忔槑搴x0d\x0a\x20\x20\x20\x20let\x20alpha\x20=\x20t\x20*\x200.9;\x20\x20//\x20鍙皟鏁磋繖涓郴鏁癨x0d\x0a\x20\x20\x20\x20return\x20vec4<f32>(color,\x20alpha);\x0d\x0a}\x0d\x0a\x0d\x0astruct\x20RayAABBIntersection\x20{\x0d\x0a\x20\x20\x20\x20hit:\x20bool,\x0d\x0a\x20\x20\x20\x20t_near:\x20f32,\x0d\x0a\x20\x20\x20\x20t_far:\x20f32,\x0d\x0a};\x0d\x0a\x0d\x0afn\x20ray_aabb_intersection(origin\x20:\x20vec3f,\x20direction\x20:\x20vec3f,minBox\x20:\x20vec3f,maxBox\x20:\x20vec3f)\x20->\x20RayAABBIntersection\x20{\x0d\x0a\x20\x20\x20\x20var\x20result:\x20RayAABBIntersection;\x0d\x0a\x0d\x0a\x20\x20\x20\x20let\x20inv_dir\x20=\x201.0\x20/\x20direction;\x0d\x0a\x20\x20\x20\x20let\x20t1\x20=\x20(minBox\x20-\x20origin)\x20*\x20inv_dir;\x0d\x0a\x20\x20\x20\x20let\x20t2\x20=\x20(maxBox\x20-\x20origin)\x20*\x20inv_dir;\x0d\x0a\x0d\x0a\x20\x20\x20\x20let\x20tmin_vec\x20=\x20min(t1,\x20t2);\x0d\x0a\x20\x20\x20\x20let\x20tmax_vec\x20=\x20max(t1,\x20t2);\x0d\x0a\x0d\x0a\x20\x20\x20\x20let\x20tmin\x20=\x20max(max(tmin_vec.x,\x20tmin_vec.y),\x20tmin_vec.z);\x0d\x0a\x20\x20\x20\x20let\x20tmax\x20=\x20min(min(tmax_vec.x,\x20tmax_vec.y),\x20tmax_vec.z);\x0d\x0a\x0d\x0a\x20\x20\x20\x20result.hit\x20=\x20(tmax\x20>=\x20tmin)\x20&&\x20(tmax\x20>=\x200.0);\x0d\x0a\x20\x20\x20\x20result.t_near\x20=\x20tmin;\x0d\x0a\x20\x20\x20\x20result.t_far\x20=\x20tmax;\x0d\x0a\x0d\x0a\x20\x20\x20\x20return\x20result;\x0d\x0a}\x0d\x0a\x0d\x0a\x0d\x0a//let\x20lon\x20=\x20缁忓害\x20[-180,\x20180)\x0d\x0a//let\x20lat\x20=\x20绾害\x20[-90,\x2090)\x0d\x0aconst\x20PI\x20=\x203.141592653589793;\x0d\x0aconst\x20a\x20=\x206378137.0;\x20//\x20妞悆璧ら亾鍗婂緞锛堥暱鍗婅酱锛塡x0d\x0aconst\x20c\x20=\x206356752.3142451793;\x20//\x20妞悆鏋佸崐寰勶紙鐭崐杞达級\x0d\x0aconst\x20A2\x20=\x2040680631590769.0;\x20//\x20a^2\x0d\x0aconst\x20C2\x20=\x2040408299984661.445;\x20//\x20c^2\x0d\x0aconst\x20inv_a\x20=\x201.0\x20/\x206378137.0;\x20//\x20棰勮绠梊x201/a\x0d\x0aconst\x20inv_b\x20=\x201.0\x20/\x206356752.3142451793;\x20//\x20棰勮绠梊x201/b\x0d\x0aconst\x20e2\x20=\x201.0\x20-\x20C2\x20/\x20A2;\x20//\x20鍋忓績鐜囧钩鏂筡x20e^2\x20=\x201\x20-\x20(c/a)^2\x0d\x0a\x0d\x0afn\x20radians_to_cartesian3(longitude:\x20f32,\x20latitude:\x20f32,\x20height:\x20f32)\x20->\x20vec3<f32>\x20{\x0d\x0a\x20\x20\x20\x20//\x20缂撳瓨涓夎鍑芥暟\x0d\x0a\x20\x20\x20\x20let\x20cosLat\x20=\x20cos(latitude);\x0d\x0a\x20\x20\x20\x20let\x20sinLat\x20=\x20sin(latitude);\x0d\x0a\x20\x20\x20\x20let\x20cos_lon\x20=\x20cos(longitude);\x0d\x0a\x20\x20\x20\x20let\x20sin_lon\x20=\x20sin(longitude);\x0d\x0a\x0d\x0a\x20\x20\x20\x20//\x20闈炲綊涓�鍖栨硶鍚戦噺\x0d\x0a\x20\x20\x20\x20let\x20n\x20=\x20vec3<f32>(\x0d\x0a\x20\x20\x20\x20\x20\x20\x20\x20cosLat\x20*\x20cos_lon,\x0d\x0a\x20\x20\x20\x20\x20\x20\x20\x20cosLat\x20*\x20sin_lon,\x0d\x0a\x20\x20\x20\x20\x20\x20\x20\x20sinLat\x0d\x0a\x20\x20\x20\x20);\x0d\x0a\x0d\x0a\x20\x20\x20\x20//\x20棰勮绠梊x20gamma\x20鐨勫钩鏂归」\x0d\x0a\x20\x20\x20\x20let\x20cos_lat_sq\x20=\x20cosLat\x20*\x20cosLat;\x0d\x0a\x20\x20\x20\x20let\x20sin_lat_sq\x20=\x20sinLat\x20*\x20sinLat;\x0d\x0a\x20\x20\x20\x20let\x20gamma\x20=\x20sqrt(A2\x20*\x20cos_lat_sq\x20+\x20C2\x20*\x20sin_lat_sq);\x0d\x0a\x20\x20\x20\x20let\x20inv_gamma\x20=\x201.0\x20/\x20gamma;\x0d\x0a\x0d\x0a\x20\x20\x20\x20//\x20鍚堝苟琛ㄩ潰鐐瑰拰楂樺害鍋忕Щ\x0d\x0a\x20\x20\x20\x20let\x20scale\x20=\x20vec3<f32>(A2\x20*\x20inv_gamma\x20+\x20height,\x20A2\x20*\x20inv_gamma\x20+\x20height,\x20C2\x20*\x20inv_gamma\x20+\x20height);\x0d\x0a\x20\x20\x20\x20return\x20n\x20*\x20scale;\x0d\x0a}\x0d\x0a\x0d\x0afn\x20cartesian3_to_radians(p:\x20vec3f)\x20->\x20vec2<f32>\x20{\x0d\x0a\x20\x20\x20\x20//\x20璁$畻缁忓害\x0d\x0a\x20\x20\x20\x20let\x20longitude\x20=\x20atan2(p.y,\x20p.x);\x0d\x0a\x20\x20\x20\x20//\x20璁$畻澶у湴绾害\x0d\x0a\x20\x20\x20\x20let\x20r\x20=\x20sqrt(p.x\x20*\x20p.x\x20+\x20p.y\x20*\x20p.y);\x20//\x20璧ら亾骞抽潰涓婄殑璺濈\x0d\x0a\x20\x20\x20\x20let\x20latitude\x20=\x20atan2(p.z,\x20r\x20*\x20(1.0\x20-\x20e2));\x20//\x20澶у湴绾害鍏紡\x0d\x0a\x0d\x0a\x20\x20\x20\x20return\x20vec2f(longitude,latitude);\x0d\x0a}\x0d\x0a\x0d\x0aconst\x20DEG_TO_RAD\x20=\x20PI\x20/\x20180.0;\x0d\x0aconst\x20RAD_TO_DEG\x20=\x20180.0\x20/\x20PI;\x0d\x0a//\x20瑙掑害杞姬搴x0d\x0afn\x20degrees_to_radians(degrees:\x20f32)\x20->\x20f32\x20{\x0d\x0a\x20\x20\x20\x20return\x20degrees\x20*\x20DEG_TO_RAD;\x0d\x0a}\x0d\x0a//\x20寮у害杞搴x0d\x0afn\x20radians_to_degrees(radians:\x20f32)\x20->\x20f32\x20{\x0d\x0a\x20\x20\x20\x20return\x20radians\x20*\x20RAD_TO_DEG;\x0d\x0a}\x0d\x0a\x0d\x0afn\x20computeNormalWGS84(latitude:\x20f32,\x20longitude:\x20f32)\x20->\x20vec3f\x20{\x0d\x0a\x20\x20\x20\x20//\x20璁$畻WGS84妞渾褰㈣〃闈笂鐨勬甯哥煝閲廫x0d\x0a\x20\x20\x20\x20let\x20cosLat\x20=\x20cos(latitude);\x0d\x0a\x20\x20\x20\x20let\x20sinLat\x20=\x20sin(latitude);\x0d\x0a\x20\x20\x20\x20let\x20cosLon\x20=\x20cos(longitude);\x0d\x0a\x20\x20\x20\x20let\x20sinLon\x20=\x20sin(longitude);\x0d\x0a\x0d\x0a\x20\x20\x20\x20//\x20姝e父鐭㈤噺鎴愬垎:\x20(cos(phi)\x20*\x20cos(lambda),\x20cos(phi)\x20*\x20sin(lambda),\x20sin(phi))\x0d\x0a\x20\x20\x20\x20//\x20WGS84鍋忓績鐜囧钩鏂筡x20(绾x200.00669438)\x0d\x0a\x20\x20\x20\x20//\x20let\x20e2\x20=\x200.00669438;\x0d\x0a\x20\x20\x20\x20//\x20(1.0\x20-\x20e2)\x20=\x200.99330562\x0d\x0a\x20\x20\x20\x20let\x20n\x20=\x20vec3f(\x0d\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20cosLat\x20*\x20cosLon,\x0d\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20cosLat\x20*\x20sinLon,\x0d\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20sinLat\x20*\x200.99330562\x0d\x0a\x20\x20\x20\x20\x20\x20\x20\x20);\x0d\x0a\x20\x20\x20\x20return\x20normalize(n);\x0d\x0a}\x0d\x0a\x0d\x0afn\x20ray_sphere_intersection(start_point:\x20vec3<f32>,\x20direction:\x20vec3<f32>)\x20->\x20vec2f\x20{\x0d\x0a\x20\x20\x20\x20//\x20棰勮绠楃缉鏀惧洜瀛怽x0d\x0a\x20\x20\x20\x20let\x20scale\x20=\x20vec3<f32>(inv_a,\x20inv_a,\x20inv_b);\x0d\x0a\x20\x20\x20\x20let\x20o_prime\x20=\x20start_point\x20*\x20scale;\x0d\x0a\x20\x20\x20\x20let\x20d_prime\x20=\x20direction\x20*\x20scale;\x0d\x0a\x0d\x0a\x20\x20\x20\x20//\x20缂撳瓨鐐圭Н缁撴灉\x0d\x0a\x20\x20\x20\x20let\x20a_prime\x20=\x20dot(d_prime,\x20d_prime);\x0d\x0a\x20\x20\x20\x20let\x20o_dot_d\x20=\x20dot(o_prime,\x20d_prime);\x0d\x0a\x20\x20\x20\x20let\x20o_dot_o\x20=\x20dot(o_prime,\x20o_prime);\x0d\x0a\x0d\x0a\x20\x20\x20\x20//\x20妫�鏌ユ棤鏁堟柟鍚戝悜閲廫x0d\x0a\x20\x20\x20\x20if\x20(a_prime\x20<\x200)\x20{\x0d\x0a\x20\x20\x20\x20\x20\x20\x20\x20return\x20vec2f(0);\x0d\x0a\x20\x20\x20\x20}\x0d\x0a\x0d\x0a\x20\x20\x20\x20//\x20璁$畻浜屾鏂圭▼绯绘暟\x0d\x0a\x20\x20\x20\x20let\x20b_prime\x20=\x202.0\x20*\x20o_dot_d;\x0d\x0a\x20\x20\x20\x20let\x20c_prime\x20=\x20o_dot_o\x20-\x201.0;\x0d\x0a\x20\x20\x20\x20let\x20discriminant\x20=\x20b_prime\x20*\x20b_prime\x20-\x204.0\x20*\x20a_prime\x20*\x20c_prime;\x0d\x0a\x0d\x0a\x20\x20\x20\x20//\x20鍒ゅ埆寮忓宸鐞哱x0d\x0a\x20\x20\x20\x20if\x20(discriminant\x20<\x20-0.0001)\x20{\x0d\x0a\x20\x20\x20\x20\x20\x20\x20\x20return\x20vec2f(0);\x0d\x0a\x20\x20\x20\x20}\x0d\x0a\x0d\x0a\x20\x20\x20\x20//\x20璁$畻\x20t\x20鍊硷紝浼樺寲鍒嗘敮閫昏緫\x0d\x0a\x20\x20\x20\x20let\x20sqrt_disc\x20=\x20sqrt(max(discriminant,\x200.0));\x0d\x0a\x20\x20\x20\x20let\x20t1\x20=\x20(-b_prime\x20-\x20sqrt_disc)\x20/\x20(2.0\x20*\x20a_prime);\x0d\x0a\x20\x20\x20\x20let\x20t2\x20=\x20(-b_prime\x20+\x20sqrt_disc)\x20/\x20(2.0\x20*\x20a_prime);\x0d\x0a\x0d\x0a\x20\x20\x20\x20return\x20vec2f(min(t1,\x20t2),max(t1,\x20t2));\x0d\x0a}\x0d\x0a\x0d\x0a'},_0x155abf={'code':_0xe79d2f(0x430)},_0x1cbca9={'code':_0xe79d2f(0x316)},_0x364b81={'code':_0xe79d2f(0x25f)},_0x366dff={'code':_0xe79d2f(0x3a4)},_0x1fc251={'code':'\x0d\x0astruct\x20SelfUniform\x20{\x0d\x0a\x20\x20\x20\x20overlayColor:\x20vec4<f32>,\x0d\x0a\x20\x20\x20\x20outlineColor:\x20vec4<f32>,\x0d\x0a};\x0d\x0a\x0d\x0a@group(0)\x20@binding(0)\x20var<uniform>\x20selfUniform\x20:\x20SelfUniform;\x0d\x0a@group(0)\x20@binding(1)\x20var\x20texSampler:\x20sampler;\x0d\x0a@group(0)\x20@binding(2)\x20var\x20inputTexture:\x20texture_storage_2d<rgba8unorm,\x20read>;\x0d\x0a@group(0)\x20@binding(3)\x20var\x20selectTexture:\x20texture_storage_2d<rgba8unorm,\x20read>;\x0d\x0a@group(0)\x20@binding(4)\x20var\x20outputTexture:\x20texture_storage_2d<rgba8unorm,\x20write>;\x0d\x0a\x0d\x0a\x0d\x0a\x0d\x0astruct\x20InputData\x20{\x0d\x0a\x20\x20\x20@builtin(local_invocation_id)\x20local_id:\x20vec3<u32>,\x0d\x0a\x20\x20\x20@builtin(local_invocation_index)\x20local_index:\x20u32,\x0d\x0a\x20\x20\x20@builtin(global_invocation_id)\x20global_id:\x20vec3<u32>,\x0d\x0a}\x0d\x0a@compute\x20@workgroup_size(16,16)\x0d\x0afn\x20main(input:\x20InputData)\x20{\x0d\x0a\x0d\x0a\x20\x20\x20\x20let\x20texSizeU\x20=\x20textureDimensions(inputTexture);\x0d\x0a\x20\x20\x20\x20if(any(texSizeU\x20<\x20input.global_id.xy)){\x0d\x0a\x20\x20\x20\x20\x20\x20\x20\x20return\x20;\x0d\x0a\x20\x20\x20\x20}\x0d\x0a\x20\x20\x20\x20let\x20texSize\x20=\x20vec2<f32>(texSizeU);\x0d\x0a\x0d\x0a\x20\x20\x20\x20let\x20orig_color\x20=\x20textureLoad(inputTexture,\x20input.global_id.xy);\x0d\x0a\x20\x20\x20\x20let\x20mCenter\x20=\x20textureLoad(selectTexture,\x20input.global_id.xy);\x0d\x0a\x20\x20\x20\x20let\x20mTop\x20=\x20textureLoad(selectTexture,\x20vec2(input.global_id.x,input.global_id.y\x20+\x201));\x0d\x0a\x20\x20\x20\x20let\x20mDown\x20=\x20textureLoad(selectTexture,\x20vec2(input.global_id.x,input.global_id.y\x20-\x201));\x0d\x0a\x20\x20\x20\x20let\x20mLeft\x20=\x20textureLoad(selectTexture,\x20vec2(input.global_id.x\x20+\x201,input.global_id.y));\x0d\x0a\x20\x20\x20\x20let\x20mRight\x20=\x20textureLoad(selectTexture,\x20vec2(input.global_id.x\x20-\x201,input.global_id.y));\x0d\x0a\x0d\x0a\x20\x20\x20\x20let\x20delta\x20=\x20(mCenter.a\x20+\x20mTop.a\x20+\x20mDown.a\x20+\x20mLeft.a\x20+\x20mRight.a)\x20/\x205;\x0d\x0a\x0d\x0a\x20\x20\x20\x20var\x20outputColor\x20=\x20orig_color.rgb;\x0d\x0a\x20\x20\x20\x20if(mCenter.a\x20>\x200.5){\x0d\x0a\x20\x20\x20\x20\x20\x20\x20\x20outputColor\x20=\x20mix(orig_color.rgb,\x20selfUniform.overlayColor.rgb,\x20selfUniform.overlayColor.a);\x0d\x0a\x20\x20\x20\x20}else\x20if(delta\x20>\x200.001){\x0d\x0a\x20\x20\x20\x20\x20\x20\x20\x20outputColor\x20=\x20mix(orig_color.rgb,\x20selfUniform.outlineColor.rgb,\x20selfUniform.outlineColor.a);\x0d\x0a\x20\x20\x20\x20}\x0d\x0a\x0d\x0a\x20\x20\x20\x20textureStore(outputTexture,\x20input.global_id.xy,\x20vec4f(outputColor.rgb,orig_color.a));\x0d\x0a\x0d\x0a}\x0d\x0a\x0d\x0a'};class _0x444c9d{constructor(_0x5728a6,_0x341086){var _0x446550=_0xe79d2f;this[_0x446550(0x439)]=0x1,this[_0x446550(0x1eb)]=[0.3,0.8,0.3,0.5],this['outlineColor']=[0x1,0x1,0x1,0.8],this['alpha_Uniform_DataView']=new Float32Array(0x10),this[_0x446550(0x409)]=new Uint32Array(this[_0x446550(0x3fc)]['buffer']),this[_0x446550(0x407)]=_0x5728a6,this[_0x446550(0x2be)]=_0x341086,this[_0x446550(0x44b)]=_0x341086[_0x446550(0x44b)],this[_0x446550(0x20d)]=this['device'][_0x446550(0x2b2)]({'size':0x4*this[_0x446550(0x3fc)][_0x446550(0x320)],'usage':GPUBufferUsage[_0x446550(0x34c)]|GPUBufferUsage[_0x446550(0x20e)]}),this[_0x446550(0x3fc)]['set'](this['overlayColor']),this['alpha_Uniform_DataView'][_0x446550(0x37f)](this[_0x446550(0x3f6)],0x4),this[_0x446550(0x44b)][_0x446550(0x2c0)]['writeBuffer'](this['alpha_Uniform_VmBuffer'],0x0,this[_0x446550(0x3fc)]),this[_0x446550(0x3f9)]=this[_0x446550(0x44b)][_0x446550(0x290)]({'size':[this[_0x446550(0x2be)][_0x446550(0x1f8)][_0x446550(0x440)]['width'],this[_0x446550(0x2be)]['context'][_0x446550(0x440)][_0x446550(0x360)],0x1],'format':_0x446550(0x27d),'usage':GPUTextureUsage['COPY_SRC']|GPUTextureUsage[_0x446550(0x2e0)]|GPUTextureUsage[_0x446550(0x1d3)]|GPUTextureUsage[_0x446550(0x3f5)]}),this[_0x446550(0x32d)]=this['device'][_0x446550(0x290)]({'size':[this[_0x446550(0x2be)][_0x446550(0x1f8)][_0x446550(0x440)]['width'],this[_0x446550(0x2be)][_0x446550(0x1f8)]['canvas'][_0x446550(0x360)],0x1],'format':_0x446550(0x1b3),'usage':GPUTextureUsage[_0x446550(0x1c0)]|GPUTextureUsage[_0x446550(0x2e0)]|GPUTextureUsage[_0x446550(0x1d3)]});let _0x4b8ddd=this[_0x446550(0x44b)][_0x446550(0x288)]({'entries':[{'binding':0x0,'visibility':GPUShaderStage[_0x446550(0x21b)],'buffer':{'type':_0x446550(0x41d)}},{'binding':0x1,'visibility':GPUShaderStage['VERTEX'],'buffer':{'type':'read-only-storage'}},{'binding':0x2,'visibility':GPUShaderStage['VERTEX'],'buffer':{'type':_0x446550(0x275)}},{'binding':0x3,'visibility':GPUShaderStage[_0x446550(0x21b)],'buffer':{'type':_0x446550(0x275)}},{'binding':0x4,'visibility':GPUShaderStage[_0x446550(0x21b)],'buffer':{'type':_0x446550(0x275)}},{'binding':0x5,'visibility':GPUShaderStage[_0x446550(0x21b)],'buffer':{'type':_0x446550(0x41d)}},{'binding':0x6,'visibility':GPUShaderStage[_0x446550(0x21b)],'buffer':{'type':_0x446550(0x275)}}]}),_0x23f9ad=(this['alpha_BingGroup']=this[_0x446550(0x44b)][_0x446550(0x362)]({'layout':_0x4b8ddd,'entries':[{'binding':0x0,'resource':{'buffer':this[_0x446550(0x2be)][_0x446550(0x42c)]}},{'binding':0x1,'resource':{'buffer':this[_0x446550(0x2be)][_0x446550(0x2a8)]}},{'binding':0x2,'resource':{'buffer':this['renderEngine'][_0x446550(0x29a)]}},{'binding':0x3,'resource':{'buffer':this['renderEngine'][_0x446550(0x444)]}},{'binding':0x4,'resource':{'buffer':this[_0x446550(0x2be)][_0x446550(0x244)]}},{'binding':0x5,'resource':{'buffer':this[_0x446550(0x20d)]}},{'binding':0x6,'resource':{'buffer':this['renderEngine']['operateVmBuffer']}}]}),this[_0x446550(0x44b)]['createBindGroupLayout']({'entries':[{'binding':0x0,'visibility':GPUShaderStage[_0x446550(0x21b)]|GPUShaderStage[_0x446550(0x271)],'buffer':{'type':_0x446550(0x275)}}]})),_0x496746=(this[_0x446550(0x3a5)]=this[_0x446550(0x44b)][_0x446550(0x362)]({'layout':_0x23f9ad,'entries':[{'binding':0x0,'resource':{'buffer':this['renderEngine'][_0x446550(0x2b0)]}}]}),this['device'][_0x446550(0x395)]({'bindGroupLayouts':this[_0x446550(0x2be)]['multiDrawIndirect']?[_0x4b8ddd]:[_0x4b8ddd,_0x23f9ad]})),_0x4a7f9f=_0x366dff[_0x446550(0x3fe)];this[_0x446550(0x2be)][_0x446550(0x40b)]?_0x4a7f9f=_0x4a7f9f[_0x446550(0x39e)](_0x446550(0x388),''):(_0x4a7f9f=_0x4a7f9f[_0x446550(0x39e)](_0x446550(0x3a1),_0x446550(0x3f1)),_0x4a7f9f+=_0x446550(0x445)),_0x5728a6=this[_0x446550(0x44b)][_0x446550(0x2d0)]({'code':_0x3d1ff9[_0x446550(0x3fe)]+_0x4a7f9f}),(this[_0x446550(0x3bb)]=this[_0x446550(0x44b)][_0x446550(0x3b6)]({'layout':_0x496746,'vertex':{'module':_0x5728a6,'entryPoint':'vert_main','buffers':[],'constants':{}},'fragment':{'module':_0x5728a6,'entryPoint':_0x446550(0x418),'targets':[{'format':this[_0x446550(0x3f9)][_0x446550(0x3d4)]}],'constants':{}},'primitive':{'topology':_0x446550(0x426),'frontFace':'ccw','cullMode':_0x446550(0x24e)},'depthStencil':{'format':this[_0x446550(0x32d)][_0x446550(0x3d4)],'depthCompare':_0x446550(0x2f1),'depthWriteEnabled':!0x0}}),this[_0x446550(0x404)]={'colorAttachments':[{'view':this[_0x446550(0x3f9)][_0x446550(0x415)](),'clearValue':{'r':0x0,'g':0x0,'b':0x0,'a':0x0},'loadOp':_0x446550(0x3cb),'storeOp':_0x446550(0x258)}],'depthStencilAttachment':{'view':this[_0x446550(0x32d)][_0x446550(0x415)](),'depthClearValue':0x0,'depthLoadOp':_0x446550(0x3cb),'depthStoreOp':_0x446550(0x258),'depthReadOnly':!0x1}},this[_0x446550(0x2be)][_0x446550(0x40b)]||((_0x341086=this['device'][_0x446550(0x3c8)]({'colorFormats':[this[_0x446550(0x3f9)]['format']],'depthStencilFormat':this['alpha_depth_Texture'][_0x446550(0x3d4)]}))[_0x446550(0x2b1)](0x0,this['alpha_BingGroup']),_0x341086[_0x446550(0x1f5)](this[_0x446550(0x3bb)]),_0x341086[_0x446550(0x2b1)](0x1,this[_0x446550(0x3a5)]),_0x341086['drawIndirect'](this['renderEngine'][_0x446550(0x32c)],0x0),this['alpha_RenderBundle']=_0x341086[_0x446550(0x443)]()),this[_0x446550(0x222)]());}[_0xe79d2f(0x3df)](_0x5423d2){var _0x172bcc=_0xe79d2f,_0x23d6f2=_0x5423d2['beginRenderPass'](this[_0x172bcc(0x404)]);this['renderEngine'][_0x172bcc(0x40b)]?(_0x23d6f2[_0x172bcc(0x2b1)](0x0,this['alpha_BingGroup']),_0x23d6f2[_0x172bcc(0x1f5)](this[_0x172bcc(0x3bb)]),_0x23d6f2['multiDrawIndirect'](this[_0x172bcc(0x2b0)],0x0,0x60000,this[_0x172bcc(0x32c)],0x0)):_0x23d6f2['executeBundles']([this[_0x172bcc(0x43b)]]),_0x23d6f2[_0x172bcc(0x1e2)](),this[_0x172bcc(0x249)](_0x5423d2);}['EdgeMergeIntend'](){var _0x3a59bb=_0xe79d2f;this['edgeMerge_color_Texture']=this[_0x3a59bb(0x44b)][_0x3a59bb(0x290)]({'size':[this['renderEngine']['context']['canvas'][_0x3a59bb(0x19c)],this[_0x3a59bb(0x2be)]['context'][_0x3a59bb(0x440)]['height'],0x1],'format':'rgba8unorm','usage':GPUTextureUsage[_0x3a59bb(0x1c0)]|GPUTextureUsage[_0x3a59bb(0x3f5)]|GPUTextureUsage[_0x3a59bb(0x1d3)]});var _0x1cc1f0=this[_0x3a59bb(0x44b)][_0x3a59bb(0x288)]({'entries':[{'binding':0x0,'visibility':GPUShaderStage['COMPUTE'],'buffer':{'type':_0x3a59bb(0x41d)}},{'binding':0x1,'visibility':GPUShaderStage[_0x3a59bb(0x210)],'sampler':{'type':_0x3a59bb(0x1bf)}},{'binding':0x2,'visibility':GPUShaderStage[_0x3a59bb(0x210)],'storageTexture':{'format':this[_0x3a59bb(0x37d)][_0x3a59bb(0x3d4)],'access':'read-only'}},{'binding':0x3,'visibility':GPUShaderStage[_0x3a59bb(0x210)],'storageTexture':{'format':this[_0x3a59bb(0x37d)][_0x3a59bb(0x3d4)],'access':_0x3a59bb(0x279)}},{'binding':0x4,'visibility':GPUShaderStage['COMPUTE'],'storageTexture':{'format':this['edgeMerge_color_Texture']['format'],'access':_0x3a59bb(0x2ca)}}]});this[_0x3a59bb(0x39c)]=this[_0x3a59bb(0x44b)][_0x3a59bb(0x362)]({'layout':_0x1cc1f0,'entries':[{'binding':0x0,'resource':{'buffer':this[_0x3a59bb(0x20d)]}},{'binding':0x1,'resource':this[_0x3a59bb(0x2be)][_0x3a59bb(0x27c)]},{'binding':0x2,'resource':this['renderEngine'][_0x3a59bb(0x1f6)][_0x3a59bb(0x415)]()},{'binding':0x3,'resource':this['alpha_color_Texture']['createView']()},{'binding':0x4,'resource':this['edgeMerge_color_Texture'][_0x3a59bb(0x415)]()}]}),this['edgeMergeComputePipeline']=this[_0x3a59bb(0x44b)][_0x3a59bb(0x44d)]({'layout':this[_0x3a59bb(0x44b)][_0x3a59bb(0x395)]({'bindGroupLayouts':[_0x1cc1f0]}),'compute':{'module':this['device'][_0x3a59bb(0x2d0)]({'code':_0x1fc251[_0x3a59bb(0x3fe)]}),'entryPoint':_0x3a59bb(0x331),'constants':{}}});}[_0xe79d2f(0x249)](_0xcdbb88){var _0x522470=_0xe79d2f,_0x2c93b5=_0xcdbb88[_0x522470(0x38f)]();_0x2c93b5[_0x522470(0x2b1)](0x0,this[_0x522470(0x39c)]),_0x2c93b5['setPipeline'](this['edgeMergeComputePipeline']),_0x2c93b5[_0x522470(0x270)](this[_0x522470(0x2be)][_0x522470(0x2f0)],this[_0x522470(0x2be)][_0x522470(0x383)]),_0x2c93b5[_0x522470(0x1e2)](),_0xcdbb88['copyTextureToTexture']({'texture':this[_0x522470(0x37d)]},{'texture':this['renderEngine'][_0x522470(0x1f6)]},{'width':this['edgeMerge_color_Texture'][_0x522470(0x19c)],'height':this[_0x522470(0x37d)][_0x522470(0x360)]});}}let _0x27b97d={'code':_0xe79d2f(0x298)};class _0x4fd0ff{constructor(_0x345533,_0x41dba3){var _0x598de3=_0xe79d2f;this[_0x598de3(0x439)]=0x1,this['overlayColor']=[0.3,0.8,0.3,0.5],this['outlineColor']=[0x1,0x1,0x1,0.8],this[_0x598de3(0x3fc)]=new Float32Array(0x10),this['alpha_Uniform_DataViewU32']=new Uint32Array(this[_0x598de3(0x3fc)]['buffer']),this[_0x598de3(0x407)]=_0x345533,this[_0x598de3(0x2be)]=_0x41dba3,this[_0x598de3(0x44b)]=_0x41dba3['device'],this[_0x598de3(0x20d)]=this['device']['createBuffer']({'size':0x4*this[_0x598de3(0x3fc)]['length'],'usage':GPUBufferUsage['UNIFORM']|GPUBufferUsage[_0x598de3(0x20e)]}),this[_0x598de3(0x3fc)]['set'](this['overlayColor']),this[_0x598de3(0x3fc)][_0x598de3(0x37f)](this[_0x598de3(0x3f6)],0x4),this[_0x598de3(0x44b)][_0x598de3(0x2c0)][_0x598de3(0x40f)](this['alpha_Uniform_VmBuffer'],0x0,this[_0x598de3(0x3fc)]),this['alpha_color_Texture']=this['device'][_0x598de3(0x290)]({'size':[this[_0x598de3(0x2be)][_0x598de3(0x1f8)][_0x598de3(0x440)][_0x598de3(0x19c)],this[_0x598de3(0x2be)][_0x598de3(0x1f8)][_0x598de3(0x440)][_0x598de3(0x360)],0x1],'format':_0x598de3(0x27d),'usage':GPUTextureUsage['COPY_SRC']|GPUTextureUsage['RENDER_ATTACHMENT']|GPUTextureUsage[_0x598de3(0x1d3)]|GPUTextureUsage[_0x598de3(0x3f5)]}),this[_0x598de3(0x32d)]=this[_0x598de3(0x44b)][_0x598de3(0x290)]({'size':[this[_0x598de3(0x2be)][_0x598de3(0x1f8)][_0x598de3(0x440)]['width'],this[_0x598de3(0x2be)][_0x598de3(0x1f8)]['canvas'][_0x598de3(0x360)],0x1],'format':'depth32float','usage':GPUTextureUsage[_0x598de3(0x1c0)]|GPUTextureUsage[_0x598de3(0x2e0)]|GPUTextureUsage['TEXTURE_BINDING']}),(_0x345533=this['device']['createBindGroupLayout']({'entries':[{'binding':0x0,'visibility':GPUShaderStage[_0x598de3(0x21b)],'buffer':{'type':'uniform'}},{'binding':0x1,'visibility':GPUShaderStage[_0x598de3(0x21b)],'buffer':{'type':_0x598de3(0x275)}},{'binding':0x2,'visibility':GPUShaderStage[_0x598de3(0x21b)],'buffer':{'type':_0x598de3(0x275)}},{'binding':0x3,'visibility':GPUShaderStage[_0x598de3(0x21b)],'buffer':{'type':_0x598de3(0x275)}},{'binding':0x4,'visibility':GPUShaderStage[_0x598de3(0x21b)],'buffer':{'type':_0x598de3(0x275)}},{'binding':0x5,'visibility':GPUShaderStage['VERTEX'],'buffer':{'type':_0x598de3(0x41d)}}]}),this[_0x598de3(0x41e)]=this[_0x598de3(0x44b)][_0x598de3(0x362)]({'layout':_0x345533,'entries':[{'binding':0x0,'resource':{'buffer':this['renderEngine'][_0x598de3(0x42c)]}},{'binding':0x1,'resource':{'buffer':this[_0x598de3(0x2be)]['modelVmBuffer']}},{'binding':0x2,'resource':{'buffer':this[_0x598de3(0x2be)][_0x598de3(0x29a)]}},{'binding':0x3,'resource':{'buffer':this[_0x598de3(0x2be)]['meshVmBuffer']}},{'binding':0x4,'resource':{'buffer':this[_0x598de3(0x2be)]['meshLodVmBuffer']}},{'binding':0x5,'resource':{'buffer':this[_0x598de3(0x20d)]}}]}),_0x41dba3=this[_0x598de3(0x44b)][_0x598de3(0x395)]({'bindGroupLayouts':[_0x345533]}),_0x345533=this[_0x598de3(0x44b)][_0x598de3(0x2d0)]({'code':_0x3d1ff9[_0x598de3(0x3fe)]+_0x27b97d['code']})),(this['alpha_Pipeline']=this[_0x598de3(0x44b)][_0x598de3(0x3b6)]({'layout':_0x41dba3,'vertex':{'module':_0x345533,'entryPoint':_0x598de3(0x2e8),'buffers':[],'constants':{}},'fragment':{'module':_0x345533,'entryPoint':_0x598de3(0x418),'targets':[{'format':this[_0x598de3(0x3f9)]['format']}],'constants':{}},'primitive':{'topology':_0x598de3(0x3bc),'frontFace':_0x598de3(0x389),'cullMode':'back'},'depthStencil':{'format':this[_0x598de3(0x32d)][_0x598de3(0x3d4)],'depthCompare':_0x598de3(0x2f1),'depthWriteEnabled':!0x0}}),this[_0x598de3(0x404)]={'colorAttachments':[{'view':this['alpha_color_Texture'][_0x598de3(0x415)](),'clearValue':{'r':0x0,'g':0x0,'b':0x0,'a':0x0},'loadOp':_0x598de3(0x3cb),'storeOp':_0x598de3(0x258)}],'depthStencilAttachment':{'view':this[_0x598de3(0x32d)][_0x598de3(0x415)](),'depthClearValue':0x0,'depthLoadOp':'clear','depthStoreOp':'store','depthReadOnly':!0x1}});}[_0xe79d2f(0x3df)](_0x50a51a){var _0x2dca0b=_0xe79d2f;0x0!==this[_0x2dca0b(0x407)]['instancesCount']&&((_0x50a51a=_0x50a51a[_0x2dca0b(0x2a3)](this[_0x2dca0b(0x404)]))[_0x2dca0b(0x2b1)](0x0,this[_0x2dca0b(0x41e)]),_0x50a51a['setPipeline'](this[_0x2dca0b(0x3bb)]),_0x50a51a['draw'](0x8*this[_0x2dca0b(0x407)][_0x2dca0b(0x42d)]),_0x50a51a[_0x2dca0b(0x1e2)]());}}class _0x18a839{constructor(_0x22ea67){var _0xc35ab1=_0xe79d2f;this['fig']=_0x22ea67,this[_0xc35ab1(0x30a)]=0x0,this[_0xc35ab1(0x2bc)]=0x0,this[_0xc35ab1(0x40b)]=!0x1,this[_0xc35ab1(0x2c6)]=!0x0,this['readTemp_noLocking']=!0x0,this[_0xc35ab1(0x3e8)]=!0x0,this[_0xc35ab1(0x3d7)]=!0x0,this[_0xc35ab1(0x345)]=!0x0,this[_0xc35ab1(0x1a9)]=0x1,this[_0xc35ab1(0x274)]=0x2,this[_0xc35ab1(0x2ff)]=0x3,this['vm_target_meshLod']=0x4,this[_0xc35ab1(0x3a6)]=0x5,this[_0xc35ab1(0x231)]=0x6,this[_0xc35ab1(0x387)]=0x7,this[_0xc35ab1(0x401)]=0x20,this[_0xc35ab1(0x324)]=new Float32Array(0x9),this[_0xc35ab1(0x31b)]=0x14,this['spaceTotalCount']=0x0,this[_0xc35ab1(0x256)]=0xa,this[_0xc35ab1(0x307)]=0xf4240,this[_0xc35ab1(0x35a)]=new ArrayBuffer(0x40),this[_0xc35ab1(0x28d)]=new Uint32Array([0xa,0x0,0x0,0x0]),this[_0xc35ab1(0x312)]=0x186a0,this[_0xc35ab1(0x393)]=Math['ceil'](this['lightBodiesAssociateCount']/0x400),this[_0xc35ab1(0x2fc)]=0xf4240,this[_0xc35ab1(0x21c)]=0x1000,this[_0xc35ab1(0x3b0)]=new Float32Array(0x80),this[_0xc35ab1(0x2b9)]=new Uint32Array(this[_0xc35ab1(0x3b0)][_0xc35ab1(0x36d)]),this[_0xc35ab1(0x333)]=0x80,this[_0xc35ab1(0x417)]=0x20,this[_0xc35ab1(0x371)]=this[_0xc35ab1(0x333)]-(this['blur_filterSize']-0x1),this['blur_batch']=[0x4,0x4],this[_0xc35ab1(0x276)]=0x0,this[_0xc35ab1(0x206)]=new Float32Array(0x4),this[_0xc35ab1(0x21d)]=new Float32Array(0x80),this['volumeRender_Uniform_DataView']=new Float32Array(0x80),this[_0xc35ab1(0x29b)]=new Float32Array(0x80),this[_0xc35ab1(0x2cf)]=new Uint32Array(this[_0xc35ab1(0x29b)]['buffer']),this['renderToCanvas_Uniform_DataView']=new Float32Array([0x1,0x1,0.1]),this[_0xc35ab1(0x2a9)]=new Uint32Array([0x1b,0x0,0x0,0x0]),this['lastPickPositionValue']=_0x11221[_0xc35ab1(0x327)](),this[_0xc35ab1(0x368)]=!0x0,this['allow_read_renderMaterial']=!0x0,this[_0xc35ab1(0x3ba)]=!0x1,navigator[_0xc35ab1(0x1b5)]['requestAdapter']({'powerPreference':'high-performance'})['then'](_0x2cf979=>{var _0xb0ff75=_0xc35ab1;if(null!==_0x2cf979){this[_0xb0ff75(0x3b3)]=_0x2cf979;var _0x586e64,_0xd48d13=Array[_0xb0ff75(0x41a)](_0x2cf979[_0xb0ff75(0x348)]||[]),_0x275d68={};for(_0x586e64 in _0x2cf979[_0xb0ff75(0x260)])_0x275d68[_0x586e64]=_0x2cf979[_0xb0ff75(0x260)][_0x586e64];_0x2cf979[_0xb0ff75(0x3a7)]({'requiredFeatures':_0xd48d13,'requiredLimits':_0x275d68})[_0xb0ff75(0x1ba)](_0x4dfd=>{var _0x180770=_0xb0ff75;this[_0x180770(0x44b)]=_0x4dfd,this[_0x180770(0x30a)]=_0x4dfd['limits']['maxTextureDimension1D'],this[_0x180770(0x3fb)]=_0x180770(0x27d),this['context']=this[_0x180770(0x407)][_0x180770(0x440)][_0x180770(0x2a6)]('webgpu'),this[_0x180770(0x1f8)][_0x180770(0x2ee)]({'device':this[_0x180770(0x44b)],'format':this[_0x180770(0x3fb)],'alphaMode':_0x180770(0x1ed),'toneMapping':{'mode':_0x180770(0x1a6)}}),this['fig'][_0x180770(0x203)]&&(this[_0x180770(0x1fa)]=this[_0x180770(0x407)][_0x180770(0x203)][_0x180770(0x2a6)](_0x180770(0x3da)),this[_0x180770(0x1fa)][_0x180770(0x2ee)]({'device':this[_0x180770(0x44b)],'format':this['presentationFormat'],'alphaMode':'premultiplied','toneMapping':{'mode':_0x180770(0x1a6)}})),this[_0x180770(0x2bc)]=this[_0x180770(0x1f8)]['canvas'][_0x180770(0x360)]*this[_0x180770(0x1f8)]['canvas'][_0x180770(0x19c)],globalThis['__ser_isDev__']&&((_0x4dfd=document['createElement'](_0x180770(0x440)))['style']=_0x180770(0x22e),document[_0x180770(0x1c7)]['appendChild'](_0x4dfd),this[_0x180770(0x31d)]=_0x4dfd[_0x180770(0x2a6)](_0x180770(0x3da)),this[_0x180770(0x31d)][_0x180770(0x440)]['width']=0x12c,this['context1'][_0x180770(0x440)]['height']=0x12c,this['context1'][_0x180770(0x2ee)]({'device':this[_0x180770(0x44b)],'format':this[_0x180770(0x3fb)],'alphaMode':_0x180770(0x1ed)}),(_0x4dfd=document[_0x180770(0x25a)](_0x180770(0x440)))[_0x180770(0x377)]='position:\x20absolute;top:\x200;right:\x200;z-index:\x201;border:\x201px\x20solid\x20white;pointer-events:\x20none;',document[_0x180770(0x1c7)][_0x180770(0x26d)](_0x4dfd),this[_0x180770(0x2dd)]=_0x4dfd[_0x180770(0x2a6)](_0x180770(0x3da)),this['context2']['canvas'][_0x180770(0x19c)]=this[_0x180770(0x1f8)][_0x180770(0x440)][_0x180770(0x19c)]/0x5,this[_0x180770(0x2dd)][_0x180770(0x440)][_0x180770(0x360)]=this[_0x180770(0x1f8)][_0x180770(0x440)]['height']/0x5,this['context2']['configure']({'device':this['device'],'format':this[_0x180770(0x3fb)],'alphaMode':_0x180770(0x1ed)}),(_0x4dfd=document[_0x180770(0x25a)](_0x180770(0x440)))[_0x180770(0x377)]='position:\x20absolute;bottom:\x200;right:\x200;z-index:\x201;border:\x201px\x20solid\x20white;pointer-events:\x20none;',document['body'][_0x180770(0x26d)](_0x4dfd),this['context3']=_0x4dfd[_0x180770(0x2a6)](_0x180770(0x3da)),this[_0x180770(0x3d0)][_0x180770(0x440)][_0x180770(0x19c)]=this[_0x180770(0x1f8)]['canvas'][_0x180770(0x19c)]/0x5,this[_0x180770(0x3d0)]['canvas'][_0x180770(0x360)]=this[_0x180770(0x1f8)][_0x180770(0x440)]['height']/0x5,this[_0x180770(0x3d0)]['configure']({'device':this[_0x180770(0x44b)],'format':this[_0x180770(0x3fb)],'alphaMode':_0x180770(0x1ed)}),(_0x4dfd=document['createElement'](_0x180770(0x440)))['style']=_0x180770(0x2cc),document[_0x180770(0x1c7)][_0x180770(0x26d)](_0x4dfd),this[_0x180770(0x291)]=_0x4dfd[_0x180770(0x2a6)]('webgpu'),this[_0x180770(0x291)][_0x180770(0x440)][_0x180770(0x19c)]=this[_0x180770(0x1f8)][_0x180770(0x440)]['width']/0x5,this['context4'][_0x180770(0x440)][_0x180770(0x360)]=this['context'][_0x180770(0x440)][_0x180770(0x360)]/0x5,this[_0x180770(0x291)][_0x180770(0x2ee)]({'device':this[_0x180770(0x44b)],'format':this['presentationFormat'],'alphaMode':_0x180770(0x1ed)}));var _0x4dfd=this[_0x180770(0x44b)]['createCommandEncoder'](),_0x346982=_0x4dfd[_0x180770(0x2a3)]({'colorAttachments':[null]});this[_0x180770(0x40b)]=!!_0x346982['multiDrawIndirect'],_0x346982['end'](),_0x4dfd[_0x180770(0x443)](),this[_0x180770(0x384)](),this[_0x180770(0x1fe)](),this[_0x180770(0x407)][_0x180770(0x295)]();});}});}[_0xe79d2f(0x384)](){var _0x2c8467=_0xe79d2f;this[_0x2c8467(0x356)]=this['device'][_0x2c8467(0x2e5)]({'magFilter':'nearest','minFilter':_0x2c8467(0x397)}),this[_0x2c8467(0x27c)]=this['device'][_0x2c8467(0x2e5)]({'magFilter':_0x2c8467(0x361),'minFilter':_0x2c8467(0x361)}),this['samplerDepth']=this[_0x2c8467(0x44b)]['createSampler']({'compare':_0x2c8467(0x2f1),'minFilter':_0x2c8467(0x361),'magFilter':_0x2c8467(0x361)}),this[_0x2c8467(0x3c2)]=this[_0x2c8467(0x44b)][_0x2c8467(0x290)]({'size':[this['maxTextureSize'],this['maxTextureSize'],0x1],'format':_0x2c8467(0x26a),'usage':GPUTextureUsage[_0x2c8467(0x1d3)]|GPUTextureUsage[_0x2c8467(0x20e)]}),this[_0x2c8467(0x3d2)]=this['device'][_0x2c8467(0x290)]({'size':[this['maxTextureSize'],this[_0x2c8467(0x30a)],0x1],'format':'bc7-rgba-unorm','usage':GPUTextureUsage[_0x2c8467(0x1d3)]|GPUTextureUsage['COPY_DST']}),this[_0x2c8467(0x309)]=this[_0x2c8467(0x44b)]['createTexture']({'size':[this[_0x2c8467(0x30a)],this[_0x2c8467(0x30a)],0x1],'format':_0x2c8467(0x26a),'usage':GPUTextureUsage[_0x2c8467(0x1d3)]|GPUTextureUsage['COPY_DST']}),this[_0x2c8467(0x1cb)]=this[_0x2c8467(0x44b)]['createBuffer']({'size':0x3200000,'usage':GPUBufferUsage[_0x2c8467(0x2ab)]|GPUBufferUsage[_0x2c8467(0x20e)]}),this[_0x2c8467(0x3bf)]=this[_0x2c8467(0x44b)][_0x2c8467(0x2b2)]({'size':0x3200000,'usage':GPUBufferUsage[_0x2c8467(0x2ab)]|GPUBufferUsage[_0x2c8467(0x20e)]}),this['readPickId_VmBuffer']=this['device']['createBuffer']({'size':0x4,'usage':GPUBufferUsage[_0x2c8467(0x2ab)]|GPUBufferUsage[_0x2c8467(0x20e)]}),this[_0x2c8467(0x306)]=this['device'][_0x2c8467(0x2b2)]({'size':0x10,'usage':GPUBufferUsage[_0x2c8467(0x2ab)]|GPUBufferUsage['COPY_DST']}),this['zeroVmBuffer']=this['device'][_0x2c8467(0x2b2)]({'size':0x3200000,'usage':GPUBufferUsage[_0x2c8467(0x1c0)]}),this['scene_VmBuffer']=this['device'][_0x2c8467(0x2b2)]({'size':this[_0x2c8467(0x407)][_0x2c8467(0x2df)][_0x2c8467(0x33d)],'usage':GPUBufferUsage['UNIFORM']|GPUBufferUsage[_0x2c8467(0x20e)]}),this[_0x2c8467(0x1c1)]=this[_0x2c8467(0x44b)][_0x2c8467(0x2b2)]({'size':0x150,'usage':GPUBufferUsage[_0x2c8467(0x34c)]|GPUBufferUsage[_0x2c8467(0x20e)]}),this[_0x2c8467(0x369)]=this[_0x2c8467(0x44b)][_0x2c8467(0x2b2)]({'size':this[_0x2c8467(0x407)][_0x2c8467(0x223)]['byteLength'],'usage':GPUBufferUsage['UNIFORM']|GPUBufferUsage['COPY_DST']|GPUBufferUsage[_0x2c8467(0x20a)]|GPUBufferUsage[_0x2c8467(0x1c0)]}),this[_0x2c8467(0x373)]=this[_0x2c8467(0x44b)][_0x2c8467(0x339)]({'type':_0x2c8467(0x3a3),'count':0xa}),this[_0x2c8467(0x2b4)]=this[_0x2c8467(0x44b)][_0x2c8467(0x2b2)]({'size':0xa*BigUint64Array['BYTES_PER_ELEMENT'],'usage':GPUBufferUsage[_0x2c8467(0x19f)]|GPUBufferUsage[_0x2c8467(0x1c0)]}),this[_0x2c8467(0x273)]=this[_0x2c8467(0x44b)][_0x2c8467(0x2b2)]({'size':0xa*BigUint64Array[_0x2c8467(0x2da)],'usage':GPUBufferUsage[_0x2c8467(0x20e)]|GPUBufferUsage[_0x2c8467(0x2ab)]}),this[_0x2c8467(0x22c)]=this[_0x2c8467(0x44b)][_0x2c8467(0x2b2)]({'size':0x600000,'usage':GPUBufferUsage[_0x2c8467(0x2ab)]|GPUBufferUsage[_0x2c8467(0x20e)]}),this['renderMaterial_read_VmBuffer']=this['device'][_0x2c8467(0x2b2)]({'size':0x600000,'usage':GPUBufferUsage[_0x2c8467(0x2ab)]|GPUBufferUsage[_0x2c8467(0x20e)]}),this['modelVmBuffer']=this[_0x2c8467(0x44b)]['createBuffer']({'size':0xa00000,'usage':GPUBufferUsage[_0x2c8467(0x20a)]|GPUBufferUsage['COPY_DST']}),this[_0x2c8467(0x29a)]=this[_0x2c8467(0x44b)][_0x2c8467(0x2b2)]({'size':0x8000000,'usage':GPUBufferUsage[_0x2c8467(0x20a)]|GPUBufferUsage[_0x2c8467(0x20e)]|GPUBufferUsage[_0x2c8467(0x1c0)]}),this[_0x2c8467(0x244)]=this[_0x2c8467(0x44b)][_0x2c8467(0x2b2)]({'size':0xa00000,'usage':GPUBufferUsage['STORAGE']|GPUBufferUsage[_0x2c8467(0x20e)]}),this['meshVmBuffer']=this[_0x2c8467(0x44b)][_0x2c8467(0x2b2)]({'size':0x1f400000,'usage':GPUBufferUsage[_0x2c8467(0x20a)]|GPUBufferUsage['COPY_SRC']|GPUBufferUsage['COPY_DST']}),this['copyVmBuffer']=this['device'][_0x2c8467(0x2b2)]({'size':0x800000,'usage':GPUBufferUsage[_0x2c8467(0x1c0)]|GPUBufferUsage[_0x2c8467(0x20e)]}),this[_0x2c8467(0x318)]=this[_0x2c8467(0x44b)]['createBuffer']({'size':0x800000,'usage':GPUBufferUsage['STORAGE']|GPUBufferUsage[_0x2c8467(0x20e)]}),this[_0x2c8467(0x451)]=this['device'][_0x2c8467(0x290)]({'size':[this['context']['canvas']['width'],this[_0x2c8467(0x1f8)][_0x2c8467(0x440)]['height'],0x1],'format':_0x2c8467(0x3fa),'usage':GPUTextureUsage[_0x2c8467(0x20e)]|GPUTextureUsage[_0x2c8467(0x2e0)]|GPUTextureUsage[_0x2c8467(0x1d3)]|GPUTextureUsage[_0x2c8467(0x3f5)]}),this[_0x2c8467(0x23b)]=this['device'][_0x2c8467(0x290)]({'size':[this[_0x2c8467(0x1f8)][_0x2c8467(0x440)][_0x2c8467(0x19c)],this[_0x2c8467(0x1f8)]['canvas']['height'],0x1],'format':_0x2c8467(0x3fa),'usage':GPUTextureUsage[_0x2c8467(0x1c0)]|GPUTextureUsage[_0x2c8467(0x2e0)]|GPUTextureUsage[_0x2c8467(0x1d3)]|GPUTextureUsage['STORAGE_BINDING']}),this[_0x2c8467(0x2b7)]=this['device'][_0x2c8467(0x2b2)]({'size':0x18,'usage':GPUBufferUsage[_0x2c8467(0x20a)]|GPUBufferUsage['COPY_DST']|GPUBufferUsage['COPY_SRC']});}[_0xe79d2f(0x1fe)](){var _0x46ac2d=_0xe79d2f;this[_0x46ac2d(0x26b)](),this[_0x46ac2d(0x33f)](),this['MakeCommandIntend'](),this[_0x46ac2d(0x38d)](),this[_0x46ac2d(0x19b)](),this[_0x46ac2d(0x1e0)](),this['LightBodiesAssociateIntend'](),this[_0x46ac2d(0x264)](),this['LightBodiesBounceOneIntend'](),this[_0x46ac2d(0x332)](),this[_0x46ac2d(0x372)](),this[_0x46ac2d(0x1e8)](),this[_0x46ac2d(0x452)](),this[_0x46ac2d(0x336)](),this[_0x46ac2d(0x408)](),this[_0x46ac2d(0x1c3)](),this[_0x46ac2d(0x407)]['cesiumWidget']&&this['RenderToCanvasIntend'](),this['selectRender']=new _0x444c9d(this[_0x46ac2d(0x407)],this),this[_0x46ac2d(0x365)]=new _0x4fd0ff(this['fig'],this),globalThis['__ser_isDev__']&&this[_0x46ac2d(0x3f2)]();}[_0xe79d2f(0x230)](_0x29c811){var _0x583856=_0xe79d2f,_0x1ca1e4=performance['now']();switch(_0x29c811['target']){case this[_0x583856(0x1a9)]:if(_0x29c811[_0x583856(0x3f8)]&&_0x29c811[_0x583856(0x233)])this[_0x583856(0x2a8)][_0x583856(0x25d)],_0x29c811[_0x583856(0x3f8)],_0x29c811['buf'][_0x583856(0x33d)],this[_0x583856(0x44b)][_0x583856(0x2c0)][_0x583856(0x40f)](this[_0x583856(0x2a8)],_0x29c811[_0x583856(0x3f8)],_0x29c811[_0x583856(0x233)]);else{if(_0x29c811[_0x583856(0x19d)]){for(var _0x38fa5f in _0x29c811[_0x583856(0x19d)])this[_0x583856(0x44b)]['queue'][_0x583856(0x40f)](this['modelVmBuffer'],~~_0x38fa5f,_0x29c811[_0x583856(0x19d)][_0x38fa5f]);}else _0x29c811[_0x583856(0x441)]&&this[_0x583856(0x44b)]['queue'][_0x583856(0x40f)](this[_0x583856(0x2a8)],_0x29c811[_0x583856(0x3f8)],new ArrayBuffer(_0x29c811[_0x583856(0x441)]));}break;case this[_0x583856(0x274)]:this['instanceVmBuffer'][_0x583856(0x25d)],_0x29c811['vmOffset'],_0x29c811[_0x583856(0x233)]['byteLength'],this[_0x583856(0x44b)][_0x583856(0x2c0)][_0x583856(0x40f)](this['instanceVmBuffer'],_0x29c811[_0x583856(0x3f8)],_0x29c811[_0x583856(0x233)]);break;case this[_0x583856(0x2ff)]:this[_0x583856(0x444)][_0x583856(0x25d)],_0x29c811[_0x583856(0x3f8)],_0x29c811[_0x583856(0x233)]['byteLength'],this[_0x583856(0x44b)]['queue']['writeBuffer'](this['meshVmBuffer'],_0x29c811[_0x583856(0x3f8)],_0x29c811[_0x583856(0x233)]);break;case this[_0x583856(0x1a3)]:this[_0x583856(0x244)][_0x583856(0x25d)],_0x29c811[_0x583856(0x3f8)],_0x29c811[_0x583856(0x233)][_0x583856(0x33d)],this[_0x583856(0x44b)][_0x583856(0x2c0)][_0x583856(0x40f)](this[_0x583856(0x244)],_0x29c811['vmOffset'],_0x29c811[_0x583856(0x233)]);break;case this['vm_target_meshLod_up']:this['updateMeshOffset_VmBuffer'][_0x583856(0x25d)],_0x29c811[_0x583856(0x233)][_0x583856(0x33d)],this['device'][_0x583856(0x2c0)][_0x583856(0x40f)](this[_0x583856(0x2c7)],0x0,_0x29c811['buf']);var _0x5b8792=this[_0x583856(0x44b)][_0x583856(0x3d5)]();this[_0x583856(0x1a5)](_0x5b8792,_0x29c811[_0x583856(0x32f)]),this[_0x583856(0x44b)][_0x583856(0x2c0)][_0x583856(0x27b)]([_0x5b8792[_0x583856(0x443)]()]);break;case this[_0x583856(0x231)]:this[_0x583856(0x44b)][_0x583856(0x2c0)]['writeTexture']({'texture':this[_0x583856(0x3c2)],'origin':_0x29c811[_0x583856(0x216)]},_0x29c811['albedo_buf'],_0x29c811[_0x583856(0x2e7)],_0x29c811['size']),_0x29c811[_0x583856(0x29f)]&&this[_0x583856(0x44b)]['queue'][_0x583856(0x1ca)]({'texture':this['normal_Texture'],'origin':_0x29c811['origin']},_0x29c811[_0x583856(0x29f)],_0x29c811[_0x583856(0x2e7)],_0x29c811[_0x583856(0x25d)]),_0x29c811[_0x583856(0x1a7)]&&this[_0x583856(0x44b)][_0x583856(0x2c0)][_0x583856(0x1ca)]({'texture':this[_0x583856(0x309)],'origin':_0x29c811[_0x583856(0x216)]},_0x29c811[_0x583856(0x1a7)],_0x29c811[_0x583856(0x2e7)],_0x29c811[_0x583856(0x25d)]);break;case this[_0x583856(0x387)]:this[_0x583856(0x318)]['size'],_0x29c811[_0x583856(0x3f8)],_0x29c811['buf'][_0x583856(0x33d)],this['device'][_0x583856(0x2c0)][_0x583856(0x40f)](this['operateVmBuffer'],_0x29c811[_0x583856(0x3f8)],_0x29c811[_0x583856(0x233)]);}_0x1ca1e4<performance[_0x583856(0x1ef)]()-0x5&&console['log'](_0x583856(0x39f),performance['now']()-_0x1ca1e4,_0x29c811[_0x583856(0x2d3)]);}['OrganizeMeshVmData'](_0xb7a3f0){var _0x3b2dd2=_0xe79d2f,_0x19affa,_0x114dc6=this[_0x3b2dd2(0x44b)][_0x3b2dd2(0x3d5)]();for(_0x19affa of _0xb7a3f0[_0x3b2dd2(0x3a9)])this[_0x3b2dd2(0x2c7)][_0x3b2dd2(0x25d)],_0x19affa[_0x3b2dd2(0x233)][_0x3b2dd2(0x33d)],this['device'][_0x3b2dd2(0x2c0)][_0x3b2dd2(0x40f)](this[_0x3b2dd2(0x2c7)],0x0,_0x19affa[_0x3b2dd2(0x233)]),this[_0x3b2dd2(0x1a5)](_0x114dc6,_0x19affa[_0x3b2dd2(0x32f)]);for(let _0x5b9e11=0x0;_0x5b9e11<_0xb7a3f0[_0x3b2dd2(0x28c)][_0x3b2dd2(0x320)];_0x5b9e11+=0x3){let _0x2ad86b=_0xb7a3f0[_0x3b2dd2(0x28c)][_0x5b9e11],_0x51422a=_0xb7a3f0[_0x3b2dd2(0x28c)][_0x5b9e11+0x1],_0x20d0a4=_0xb7a3f0['copyList'][_0x5b9e11+0x2];for(;;){if(!(_0x20d0a4>this[_0x3b2dd2(0x287)][_0x3b2dd2(0x25d)])){_0x114dc6['copyBufferToBuffer'](this[_0x3b2dd2(0x444)],_0x51422a,this[_0x3b2dd2(0x287)],0x0,_0x20d0a4),_0x114dc6['copyBufferToBuffer'](this['copyVmBuffer'],0x0,this['meshVmBuffer'],_0x2ad86b,_0x20d0a4);break;}var _0x596781=this[_0x3b2dd2(0x287)][_0x3b2dd2(0x25d)];_0x114dc6[_0x3b2dd2(0x391)](this[_0x3b2dd2(0x444)],_0x51422a,this[_0x3b2dd2(0x287)],0x0,_0x596781),_0x114dc6['copyBufferToBuffer'](this[_0x3b2dd2(0x287)],0x0,this[_0x3b2dd2(0x444)],_0x2ad86b,_0x596781),_0x51422a+=_0x596781,_0x2ad86b+=_0x596781,_0x20d0a4-=_0x596781;}}this[_0x3b2dd2(0x44b)][_0x3b2dd2(0x2c0)]['submit']([_0x114dc6[_0x3b2dd2(0x443)]()]);}[_0xe79d2f(0x26b)](){var _0x399ed7=_0xe79d2f;this[_0x399ed7(0x2bd)]=this[_0x399ed7(0x44b)][_0x399ed7(0x2b2)]({'size':0xa*Math['ceil'](0x40000)*0x4,'usage':GPUBufferUsage[_0x399ed7(0x20a)]|GPUBufferUsage[_0x399ed7(0x20e)]|GPUBufferUsage[_0x399ed7(0x1c0)]}),this[_0x399ed7(0x453)]=this[_0x399ed7(0x2bd)]['size']/0x4-0x64,this[_0x399ed7(0x44b)][_0x399ed7(0x2c0)][_0x399ed7(0x40f)](this['lightBodiesSpace_VmBuffer'],0x0,new Uint32Array([0xa*this['lightBodiesSize'],this[_0x399ed7(0x31b)]<<0x1,0x2*this[_0x399ed7(0x31b)]<<0x1,0x3*this[_0x399ed7(0x31b)]<<0x1,0x4*this[_0x399ed7(0x31b)]<<0x1,0x5*this[_0x399ed7(0x31b)]<<0x1,0x6*this['lightBodiesSize']<<0x1,0x7*this[_0x399ed7(0x31b)]<<0x1,0x8*this['lightBodiesSize']<<0x1,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x1,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x2,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x3,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x4,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x5,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x6,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x7,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x8,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0])),this[_0x399ed7(0x38b)]=this[_0x399ed7(0x44b)]['createBuffer']({'size':0x800000,'usage':GPUBufferUsage[_0x399ed7(0x20a)]|GPUBufferUsage[_0x399ed7(0x20e)]|GPUBufferUsage[_0x399ed7(0x1c0)]}),this[_0x399ed7(0x3cf)]=this[_0x399ed7(0x44b)][_0x399ed7(0x2b2)]({'size':0x10,'usage':GPUBufferUsage['UNIFORM']|GPUBufferUsage[_0x399ed7(0x20e)]}),this[_0x399ed7(0x227)]=this[_0x399ed7(0x44b)][_0x399ed7(0x2b2)]({'size':0x10,'usage':GPUBufferUsage['STORAGE']|GPUBufferUsage['COPY_DST']|GPUBufferUsage[_0x399ed7(0x1c0)]|GPUBufferUsage[_0x399ed7(0x2d4)]}),this[_0x399ed7(0x44b)][_0x399ed7(0x2c0)][_0x399ed7(0x40f)](this[_0x399ed7(0x227)],0x0,new Uint32Array([0x2710,0x1,0x1,0x0])),this[_0x399ed7(0x25c)]=this[_0x399ed7(0x44b)][_0x399ed7(0x2b2)]({'size':0xa00000,'usage':GPUBufferUsage[_0x399ed7(0x20a)]|GPUBufferUsage[_0x399ed7(0x20e)]|GPUBufferUsage[_0x399ed7(0x1c0)]}),this[_0x399ed7(0x3ea)]=this[_0x399ed7(0x44b)][_0x399ed7(0x2b2)]({'size':0xa00000,'usage':GPUBufferUsage[_0x399ed7(0x20a)]|GPUBufferUsage[_0x399ed7(0x20e)]|GPUBufferUsage[_0x399ed7(0x1c0)]});}[_0xe79d2f(0x33f)](){var _0x5b841a=_0xe79d2f;this[_0x5b841a(0x3d9)]=this[_0x5b841a(0x44b)][_0x5b841a(0x2b2)]({'size':this[_0x5b841a(0x22c)]['size']-0x4,'usage':GPUBufferUsage[_0x5b841a(0x20a)]|GPUBufferUsage['COPY_DST']|GPUBufferUsage[_0x5b841a(0x1c0)]}),this[_0x5b841a(0x314)]=this[_0x5b841a(0x44b)][_0x5b841a(0x2b2)]({'size':0x10,'usage':GPUBufferUsage[_0x5b841a(0x20a)]|GPUBufferUsage[_0x5b841a(0x20e)]|GPUBufferUsage['COPY_SRC']});var _0x4392a7=this['device'][_0x5b841a(0x288)]({'entries':[{'binding':0x0,'visibility':GPUShaderStage[_0x5b841a(0x210)],'buffer':{'type':'uniform'}},{'binding':0x1,'visibility':GPUShaderStage[_0x5b841a(0x210)],'buffer':{'type':_0x5b841a(0x2e6)}},{'binding':0x2,'visibility':GPUShaderStage['COMPUTE'],'buffer':{'type':'storage'}},{'binding':0x3,'visibility':GPUShaderStage[_0x5b841a(0x210)],'buffer':{'type':_0x5b841a(0x2e6)}},{'binding':0x4,'visibility':GPUShaderStage['COMPUTE'],'buffer':{'type':_0x5b841a(0x2e6)}},{'binding':0x5,'visibility':GPUShaderStage[_0x5b841a(0x210)],'buffer':{'type':'storage'}},{'binding':0x6,'visibility':GPUShaderStage['COMPUTE'],'buffer':{'type':_0x5b841a(0x2e6)}}]}),_0x4392a7=(this[_0x5b841a(0x3c0)]=this[_0x5b841a(0x44b)][_0x5b841a(0x362)]({'layout':_0x4392a7,'entries':[{'binding':0x0,'resource':{'buffer':this[_0x5b841a(0x42c)]}},{'binding':0x1,'resource':{'buffer':this[_0x5b841a(0x314)]}},{'binding':0x2,'resource':{'buffer':this[_0x5b841a(0x3d9)]}},{'binding':0x3,'resource':{'buffer':this[_0x5b841a(0x29a)]}},{'binding':0x4,'resource':{'buffer':this['meshVmBuffer']}},{'binding':0x5,'resource':{'buffer':this[_0x5b841a(0x2a8)]}},{'binding':0x6,'resource':{'buffer':this[_0x5b841a(0x244)]}}]}),this[_0x5b841a(0x44b)][_0x5b841a(0x395)]({'bindGroupLayouts':[_0x4392a7]}));this[_0x5b841a(0x449)]=this[_0x5b841a(0x44b)][_0x5b841a(0x44d)]({'layout':_0x4392a7,'compute':{'module':this['device'][_0x5b841a(0x2d0)]({'code':_0x3d1ff9['code']+_0x119838[_0x5b841a(0x3fe)]}),'entryPoint':_0x5b841a(0x331),'constants':{'perWorkgroup':this[_0x5b841a(0x44b)][_0x5b841a(0x260)][_0x5b841a(0x3c3)],'instanceItemVmSize':this['instanceItemVmSize']}}});}[_0xe79d2f(0x45d)](_0x1ef99d){var _0x613eb9=_0xe79d2f;_0x1ef99d=_0x1ef99d[_0x613eb9(0x38f)](),(_0x1ef99d[_0x613eb9(0x1f5)](this[_0x613eb9(0x449)]),_0x1ef99d['setBindGroup'](0x0,this[_0x613eb9(0x3c0)]),_0x1ef99d[_0x613eb9(0x270)](Math['ceil'](this[_0x613eb9(0x407)]['instancesCount']/this[_0x613eb9(0x44b)][_0x613eb9(0x260)][_0x613eb9(0x3c3)])),_0x1ef99d['end']());}[_0xe79d2f(0x2ed)](){var _0x1c0bf0=_0xe79d2f;this[_0x1c0bf0(0x32c)]=this[_0x1c0bf0(0x44b)][_0x1c0bf0(0x2b2)]({'size':0x20,'usage':GPUBufferUsage['INDIRECT']|GPUBufferUsage[_0x1c0bf0(0x20a)]|GPUBufferUsage['COPY_DST']}),this[_0x1c0bf0(0x2b0)]=this['device'][_0x1c0bf0(0x2b2)]({'size':0x600000,'usage':GPUBufferUsage[_0x1c0bf0(0x20a)]|GPUBufferUsage[_0x1c0bf0(0x2d4)]}),this[_0x1c0bf0(0x398)]=this['device'][_0x1c0bf0(0x2b2)]({'size':this['renderMaterial_read_VmBuffer']['size'],'usage':GPUBufferUsage[_0x1c0bf0(0x20a)]|GPUBufferUsage['COPY_SRC']});var _0x39653c=this['device'][_0x1c0bf0(0x288)]({'entries':[{'binding':0x0,'visibility':GPUShaderStage[_0x1c0bf0(0x210)],'buffer':{'type':_0x1c0bf0(0x41d)}},{'binding':0x2,'visibility':GPUShaderStage[_0x1c0bf0(0x210)],'buffer':{'type':_0x1c0bf0(0x2e6)}},{'binding':0x3,'visibility':GPUShaderStage['COMPUTE'],'buffer':{'type':_0x1c0bf0(0x2e6)}},{'binding':0x4,'visibility':GPUShaderStage[_0x1c0bf0(0x210)],'buffer':{'type':_0x1c0bf0(0x2e6)}},{'binding':0x5,'visibility':GPUShaderStage[_0x1c0bf0(0x210)],'buffer':{'type':_0x1c0bf0(0x2e6)}},{'binding':0x6,'visibility':GPUShaderStage['COMPUTE'],'buffer':{'type':_0x1c0bf0(0x2e6)}},{'binding':0x8,'visibility':GPUShaderStage['COMPUTE'],'buffer':{'type':_0x1c0bf0(0x2e6)}},{'binding':0x9,'visibility':GPUShaderStage[_0x1c0bf0(0x210)],'buffer':{'type':_0x1c0bf0(0x2e6)}}]}),_0x39653c=(this[_0x1c0bf0(0x220)]=this[_0x1c0bf0(0x44b)]['createBindGroup']({'layout':_0x39653c,'entries':[{'binding':0x0,'resource':{'buffer':this[_0x1c0bf0(0x42c)]}},{'binding':0x2,'resource':{'buffer':this[_0x1c0bf0(0x29a)]}},{'binding':0x3,'resource':{'buffer':this[_0x1c0bf0(0x444)]}},{'binding':0x4,'resource':{'buffer':this[_0x1c0bf0(0x2a8)]}},{'binding':0x5,'resource':{'buffer':this[_0x1c0bf0(0x32c)]}},{'binding':0x6,'resource':{'buffer':this['renderIndex_VmBuffer']}},{'binding':0x8,'resource':{'buffer':this['renderMaterial_VmBuffer']}},{'binding':0x9,'resource':{'buffer':this['meshLodVmBuffer']}}]}),this['device'][_0x1c0bf0(0x395)]({'bindGroupLayouts':[_0x39653c]})),_0x39653c=(this[_0x1c0bf0(0x29c)]=this[_0x1c0bf0(0x44b)][_0x1c0bf0(0x44d)]({'layout':_0x39653c,'compute':{'module':this[_0x1c0bf0(0x44b)]['createShaderModule']({'code':_0x3d1ff9[_0x1c0bf0(0x3fe)]+_0x48558f['code']}),'entryPoint':_0x1c0bf0(0x331),'constants':{'perWorkgroup':this[_0x1c0bf0(0x44b)][_0x1c0bf0(0x260)][_0x1c0bf0(0x3c3)],'maxRenderInstance':0x2*this['maxRenderInstance'],'multiDrawIndirect':this[_0x1c0bf0(0x40b)]?0x1:0x0,'instanceItemVmSize':this[_0x1c0bf0(0x401)]}}}),this[_0x1c0bf0(0x44b)][_0x1c0bf0(0x288)]({'entries':[{'binding':0x0,'visibility':GPUShaderStage['COMPUTE'],'buffer':{'type':_0x1c0bf0(0x2e6)}},{'binding':0x1,'visibility':GPUShaderStage[_0x1c0bf0(0x210)],'buffer':{'type':_0x1c0bf0(0x2e6)}},{'binding':0x2,'visibility':GPUShaderStage[_0x1c0bf0(0x210)],'buffer':{'type':_0x1c0bf0(0x2e6)}},{'binding':0x3,'visibility':GPUShaderStage[_0x1c0bf0(0x210)],'buffer':{'type':_0x1c0bf0(0x2e6)}},{'binding':0x4,'visibility':GPUShaderStage[_0x1c0bf0(0x210)],'buffer':{'type':_0x1c0bf0(0x2e6)}},{'binding':0x5,'visibility':GPUShaderStage[_0x1c0bf0(0x210)],'buffer':{'type':_0x1c0bf0(0x41d)}},{'binding':0x6,'visibility':GPUShaderStage[_0x1c0bf0(0x210)],'buffer':{'type':'storage'}},{'binding':0x7,'visibility':GPUShaderStage['COMPUTE'],'buffer':{'type':_0x1c0bf0(0x2e6)}},{'binding':0x8,'visibility':GPUShaderStage['COMPUTE'],'buffer':{'type':'storage'}},{'binding':0x9,'visibility':GPUShaderStage[_0x1c0bf0(0x210)],'buffer':{'type':_0x1c0bf0(0x2e6)}}]}));this[_0x1c0bf0(0x2de)]=this['device'][_0x1c0bf0(0x362)]({'layout':_0x39653c,'entries':[{'binding':0x0,'resource':{'buffer':this[_0x1c0bf0(0x2b0)]}},{'binding':0x1,'resource':{'buffer':this['lightBodiesSpace_VmBuffer']}},{'binding':0x2,'resource':{'buffer':this['indirect_render_VmBuffer']}},{'binding':0x3,'resource':{'buffer':this[_0x1c0bf0(0x398)]}},{'binding':0x4,'resource':{'buffer':this[_0x1c0bf0(0x29a)]}},{'binding':0x5,'resource':{'buffer':this[_0x1c0bf0(0x42c)]}},{'binding':0x6,'resource':{'buffer':this[_0x1c0bf0(0x25c)]}},{'binding':0x7,'resource':{'buffer':this[_0x1c0bf0(0x227)]}},{'binding':0x8,'resource':{'buffer':this['readMesh_atomic_VmBuffer']}},{'binding':0x9,'resource':{'buffer':this[_0x1c0bf0(0x369)]}}]}),this[_0x1c0bf0(0x235)]=this[_0x1c0bf0(0x44b)]['createComputePipeline']({'layout':this[_0x1c0bf0(0x44b)][_0x1c0bf0(0x395)]({'bindGroupLayouts':[_0x39653c]}),'compute':{'module':this[_0x1c0bf0(0x44b)]['createShaderModule']({'code':_0x3d1ff9[_0x1c0bf0(0x3fe)]+_0x457b76[_0x1c0bf0(0x3fe)]+_0x2a6a10[_0x1c0bf0(0x3fe)]}),'entryPoint':_0x1c0bf0(0x331),'constants':{'multiDrawIndirect':this['multiDrawIndirect']?0x1:0x0}}});}[_0xe79d2f(0x1ce)](_0x477ad8){var _0x1b9e84=_0xe79d2f;0x1!==this['fig'][_0x1b9e84(0x42d)]&&(_0x477ad8['copyBufferToBuffer'](this[_0x1b9e84(0x420)],0x0,this[_0x1b9e84(0x32c)],0x0,this[_0x1b9e84(0x32c)][_0x1b9e84(0x25d)]),(_0x477ad8=_0x477ad8['beginComputePass']())['setPipeline'](this[_0x1b9e84(0x29c)]),_0x477ad8[_0x1b9e84(0x2b1)](0x0,this['MakeCommandComputeBingGroup']),_0x477ad8[_0x1b9e84(0x270)](Math['ceil'](this[_0x1b9e84(0x407)][_0x1b9e84(0x42d)]/this[_0x1b9e84(0x44b)][_0x1b9e84(0x260)][_0x1b9e84(0x3c3)])),_0x477ad8['setPipeline'](this[_0x1b9e84(0x235)]),_0x477ad8['setBindGroup'](0x0,this[_0x1b9e84(0x2de)]),_0x477ad8['dispatchWorkgroups'](0x1),_0x477ad8[_0x1b9e84(0x1e2)]());}[_0xe79d2f(0x264)](){var _0x264650=_0xe79d2f;this['updateMeshOffset_VmBuffer']=this[_0x264650(0x44b)][_0x264650(0x2b2)]({'size':0xa00000,'usage':GPUBufferUsage[_0x264650(0x20a)]|GPUBufferUsage['COPY_DST']});var _0x186ba1=this['device'][_0x264650(0x288)]({'entries':[{'binding':0x0,'visibility':GPUShaderStage['COMPUTE'],'buffer':{'type':'read-only-storage'}},{'binding':0x1,'visibility':GPUShaderStage[_0x264650(0x210)],'buffer':{'type':_0x264650(0x2e6)}}]}),_0x186ba1=(this[_0x264650(0x411)]=this[_0x264650(0x44b)][_0x264650(0x362)]({'layout':_0x186ba1,'entries':[{'binding':0x0,'resource':{'buffer':this['updateMeshOffset_VmBuffer']}},{'binding':0x1,'resource':{'buffer':this[_0x264650(0x244)]}}]}),this[_0x264650(0x44b)][_0x264650(0x395)]({'bindGroupLayouts':[_0x186ba1]}));this['updateMeshOffsetComputePipeline']=this[_0x264650(0x44b)][_0x264650(0x44d)]({'layout':_0x186ba1,'compute':{'module':this[_0x264650(0x44b)][_0x264650(0x2d0)]({'code':_0x1a8648[_0x264650(0x3fe)]}),'entryPoint':_0x264650(0x331),'constants':{'perWorkgroup':this[_0x264650(0x44b)][_0x264650(0x260)]['maxComputeInvocationsPerWorkgroup']}}});}[_0xe79d2f(0x1a5)](_0x29b6ce,_0xb92a6c){var _0x2a1458=_0xe79d2f;_0x29b6ce=_0x29b6ce[_0x2a1458(0x38f)]({'timestampWrites':{'querySet':this[_0x2a1458(0x373)],'beginningOfPassWriteIndex':0x0,'endOfPassWriteIndex':0x1}}),(_0x29b6ce[_0x2a1458(0x1f5)](this['updateMeshOffsetComputePipeline']),_0x29b6ce['setBindGroup'](0x0,this['updateMeshOffsetComputeBingGroup']),_0x29b6ce[_0x2a1458(0x270)](Math[_0x2a1458(0x228)](_0xb92a6c/this[_0x2a1458(0x44b)][_0x2a1458(0x260)][_0x2a1458(0x3c3)])),_0x29b6ce[_0x2a1458(0x1e2)]());}[_0xe79d2f(0x1e8)](){var _0x471334=_0xe79d2f;this[_0x471334(0x390)]=new Uint32Array(this[_0x471334(0x35a)]),this[_0x471334(0x390)][0x0]=0x1,this[_0x471334(0x34e)]=new Float32Array(this['readMesh_Uniform_dataBuffer']),this[_0x471334(0x1f6)]=this[_0x471334(0x44b)][_0x471334(0x290)]({'size':[this[_0x471334(0x1f8)][_0x471334(0x440)][_0x471334(0x19c)],this[_0x471334(0x1f8)][_0x471334(0x440)][_0x471334(0x360)],0x1],'format':this['presentationFormat'],'usage':GPUTextureUsage['COPY_SRC']|GPUTextureUsage['COPY_DST']|GPUTextureUsage[_0x471334(0x1d3)]|GPUTextureUsage[_0x471334(0x3f5)]});var _0x201cf0=0x7fffffff,_0x5042aa=-0x80000000,_0x201cf0=(this[_0x471334(0x44b)][_0x471334(0x2c0)][_0x471334(0x40f)](this['readMesh_atomic_VmBuffer'],0x0,new Int32Array([_0x201cf0,_0x201cf0,_0x201cf0,_0x5042aa,_0x5042aa,_0x5042aa])),this[_0x471334(0x1bb)]=this['device']['createBuffer']({'size':0x40,'usage':GPUBufferUsage[_0x471334(0x34c)]|GPUBufferUsage['COPY_DST']}),this[_0x471334(0x1f2)]=0x10,this[_0x471334(0x2f0)]=Math['ceil'](this[_0x471334(0x44e)][_0x471334(0x19c)]/this[_0x471334(0x1f2)]),this[_0x471334(0x383)]=Math[_0x471334(0x228)](this[_0x471334(0x44e)][_0x471334(0x360)]/this[_0x471334(0x1f2)]),this[_0x471334(0x44b)][_0x471334(0x288)]({'entries':[{'binding':0x0,'visibility':GPUShaderStage[_0x471334(0x210)],'buffer':{'type':_0x471334(0x41d)}},{'binding':0x1,'visibility':GPUShaderStage[_0x471334(0x210)],'buffer':{'type':_0x471334(0x41d)}},{'binding':0x2,'visibility':GPUShaderStage[_0x471334(0x210)],'buffer':{'type':'uniform'}},{'binding':0x3,'visibility':GPUShaderStage['COMPUTE'],'storageTexture':{'format':this['meshRenderPositionTexture'][_0x471334(0x3d4)],'access':_0x471334(0x279)}},{'binding':0x4,'visibility':GPUShaderStage[_0x471334(0x210)],'storageTexture':{'format':this[_0x471334(0x278)][_0x471334(0x3d4)],'access':_0x471334(0x279)}},{'binding':0x5,'visibility':GPUShaderStage[_0x471334(0x210)],'storageTexture':{'format':this[_0x471334(0x319)][_0x471334(0x3d4)],'access':_0x471334(0x279)}},{'binding':0x6,'visibility':GPUShaderStage[_0x471334(0x210)],'buffer':{'type':_0x471334(0x2e6)}},{'binding':0x7,'visibility':GPUShaderStage[_0x471334(0x210)],'buffer':{'type':_0x471334(0x2e6)}},{'binding':0x8,'visibility':GPUShaderStage['COMPUTE'],'buffer':{'type':'storage'}},{'binding':0x9,'visibility':GPUShaderStage['COMPUTE'],'storageTexture':{'format':this[_0x471334(0x1f6)][_0x471334(0x3d4)],'access':_0x471334(0x2ca)}},{'binding':0xa,'visibility':GPUShaderStage[_0x471334(0x210)],'buffer':{'type':'storage'}},{'binding':0xb,'visibility':GPUShaderStage['COMPUTE'],'storageTexture':{'format':this[_0x471334(0x451)][_0x471334(0x3d4)],'access':'read-only'}},{'binding':0xc,'visibility':GPUShaderStage[_0x471334(0x210)],'storageTexture':{'format':this[_0x471334(0x1f4)]['format'],'access':_0x471334(0x279)}},{'binding':0xd,'visibility':GPUShaderStage[_0x471334(0x210)],'sampler':{'type':_0x471334(0x3c7)}},{'binding':0xe,'visibility':GPUShaderStage[_0x471334(0x210)],'texture':{'sampleType':_0x471334(0x289),'viewDimension':'2d-array'}},{'binding':0xf,'visibility':GPUShaderStage[_0x471334(0x210)],'buffer':{'type':_0x471334(0x2e6)}}]}));this['readMeshComputeBingGroup']=this[_0x471334(0x44b)][_0x471334(0x362)]({'layout':_0x201cf0,'entries':[{'binding':0x0,'resource':{'buffer':this[_0x471334(0x1bb)]}},{'binding':0x1,'resource':{'buffer':this['lightInfo_VmBuffer']}},{'binding':0x2,'resource':{'buffer':this[_0x471334(0x42c)]}},{'binding':0x3,'resource':this[_0x471334(0x44e)][_0x471334(0x415)]()},{'binding':0x4,'resource':this[_0x471334(0x278)][_0x471334(0x415)]()},{'binding':0x5,'resource':this['meshRenderInstancePtrTexture'][_0x471334(0x415)]()},{'binding':0x6,'resource':{'buffer':this[_0x471334(0x29a)]}},{'binding':0x7,'resource':{'buffer':this['lightBodiesSpace_VmBuffer']}},{'binding':0x8,'resource':{'buffer':this[_0x471334(0x25c)]}},{'binding':0x9,'resource':this[_0x471334(0x1f6)][_0x471334(0x415)]()},{'binding':0xa,'resource':{'buffer':this[_0x471334(0x239)]}},{'binding':0xb,'resource':this[_0x471334(0x451)][_0x471334(0x415)]()},{'binding':0xc,'resource':this[_0x471334(0x1f4)][_0x471334(0x415)]()},{'binding':0xd,'resource':this[_0x471334(0x36b)]},{'binding':0xe,'resource':this['renderShadowDepthView1']},{'binding':0xf,'resource':{'buffer':this['readMesh_atomic_VmBuffer']}}]}),this[_0x471334(0x1ec)]=this[_0x471334(0x44b)][_0x471334(0x44d)]({'label':_0x471334(0x1ec),'layout':this['device'][_0x471334(0x395)]({'bindGroupLayouts':[_0x201cf0]}),'compute':{'module':this[_0x471334(0x44b)]['createShaderModule']({'code':_0x3d1ff9['code']+_0x5ccf92['code']+_0x2f9133[_0x471334(0x3fe)]+_0x2a6a10[_0x471334(0x3fe)]+_0x1ca0f4['code']}),'entryPoint':_0x471334(0x331),'constants':{'spaceUnit':this['spaceUnit']}}});}[_0xe79d2f(0x2d5)](_0x193bae){var _0x2c5aa1=_0xe79d2f;this[_0x2c5aa1(0x44b)]['queue'][_0x2c5aa1(0x40f)](this[_0x2c5aa1(0x1bb)],0x0,this[_0x2c5aa1(0x35a)]),_0x193bae=_0x193bae['beginComputePass']({'timestampWrites':{'querySet':this['querySet'],'beginningOfPassWriteIndex':0x8,'endOfPassWriteIndex':0x9}}),(_0x193bae[_0x2c5aa1(0x1f5)](this[_0x2c5aa1(0x1ec)]),_0x193bae['setBindGroup'](0x0,this['readMeshComputeBingGroup']),_0x193bae['dispatchWorkgroups'](this[_0x2c5aa1(0x2f0)],this[_0x2c5aa1(0x383)]),_0x193bae[_0x2c5aa1(0x1e2)]());}[_0xe79d2f(0x301)](){var _0x2522a8=_0xe79d2f;this[_0x2522a8(0x38a)]=this[_0x2522a8(0x44b)][_0x2522a8(0x2b2)]({'size':0x10,'usage':GPUBufferUsage[_0x2522a8(0x34c)]|GPUBufferUsage[_0x2522a8(0x20e)]}),this[_0x2522a8(0x44b)][_0x2522a8(0x2c0)]['writeBuffer'](this[_0x2522a8(0x38a)],0x0,this[_0x2522a8(0x28d)]);var _0x53c1a2=this[_0x2522a8(0x44b)][_0x2522a8(0x288)]({'entries':[{'binding':0x0,'visibility':GPUShaderStage[_0x2522a8(0x210)],'buffer':{'type':_0x2522a8(0x41d)}},{'binding':0x1,'visibility':GPUShaderStage[_0x2522a8(0x210)],'buffer':{'type':_0x2522a8(0x2e6)}}]});this['lightBodiesAssociate_ComputeBingGroup']=this['device'][_0x2522a8(0x362)]({'layout':_0x53c1a2,'entries':[{'binding':0x0,'resource':{'buffer':this[_0x2522a8(0x38a)]}},{'binding':0x1,'resource':{'buffer':this[_0x2522a8(0x2bd)]}}]}),this[_0x2522a8(0x30b)]=this[_0x2522a8(0x44b)][_0x2522a8(0x44d)]({'layout':this['device'][_0x2522a8(0x395)]({'bindGroupLayouts':[_0x53c1a2]}),'compute':{'module':this[_0x2522a8(0x44b)][_0x2522a8(0x2d0)]({'code':_0x10e789['code']+_0x1ca0f4[_0x2522a8(0x3fe)]}),'entryPoint':_0x2522a8(0x331),'constants':{'lightBodiesSize':this[_0x2522a8(0x31b)],'spaceTotalCount':this[_0x2522a8(0x453)]}}});}['LightBodiesAssociate'](_0x521ec1){var _0x4b5b25=_0xe79d2f;this[_0x4b5b25(0x28d)][0x0]+=this[_0x4b5b25(0x312)],this[_0x4b5b25(0x28d)][0x0]*this['lightBodiesSize']>this[_0x4b5b25(0x453)]&&(this[_0x4b5b25(0x28d)][0x0]=0xa),this[_0x4b5b25(0x44b)][_0x4b5b25(0x2c0)][_0x4b5b25(0x40f)](this[_0x4b5b25(0x38a)],0x0,this[_0x4b5b25(0x28d)]),_0x521ec1=_0x521ec1[_0x4b5b25(0x38f)]({'timestampWrites':{'querySet':this[_0x4b5b25(0x373)],'beginningOfPassWriteIndex':0x6,'endOfPassWriteIndex':0x7}}),(_0x521ec1[_0x4b5b25(0x2b1)](0x0,this[_0x4b5b25(0x3e6)]),_0x521ec1['setPipeline'](this[_0x4b5b25(0x30b)]),_0x521ec1['dispatchWorkgroups'](this[_0x4b5b25(0x393)]),_0x521ec1['end']());}[_0xe79d2f(0x337)](){var _0x5e57e7=_0xe79d2f,_0x5b25f7=this[_0x5e57e7(0x44b)][_0x5e57e7(0x288)]({'entries':[{'binding':0x0,'visibility':GPUShaderStage[_0x5e57e7(0x210)],'buffer':{'type':_0x5e57e7(0x41d)}},{'binding':0x1,'visibility':GPUShaderStage['COMPUTE'],'buffer':{'type':_0x5e57e7(0x41d)}},{'binding':0x2,'visibility':GPUShaderStage['COMPUTE'],'buffer':{'type':_0x5e57e7(0x2e6)}},{'binding':0x3,'visibility':GPUShaderStage[_0x5e57e7(0x210)],'buffer':{'type':'storage'}},{'binding':0x4,'visibility':GPUShaderStage[_0x5e57e7(0x210)],'buffer':{'type':_0x5e57e7(0x2e6)}}]}),_0x5b25f7=(this[_0x5e57e7(0x3f7)]=this['device'][_0x5e57e7(0x362)]({'layout':_0x5b25f7,'entries':[{'binding':0x0,'resource':{'buffer':this[_0x5e57e7(0x3cf)]}},{'binding':0x1,'resource':{'buffer':this[_0x5e57e7(0x369)]}},{'binding':0x2,'resource':{'buffer':this[_0x5e57e7(0x2bd)]}},{'binding':0x3,'resource':{'buffer':this[_0x5e57e7(0x25c)]}},{'binding':0x4,'resource':{'buffer':this[_0x5e57e7(0x3ea)]}}]}),this[_0x5e57e7(0x44b)][_0x5e57e7(0x395)]({'bindGroupLayouts':[_0x5b25f7]}));this[_0x5e57e7(0x2a4)]=this[_0x5e57e7(0x44b)][_0x5e57e7(0x44d)]({'layout':_0x5b25f7,'compute':{'module':this[_0x5e57e7(0x44b)][_0x5e57e7(0x2d0)]({'code':_0x2a6a10['code']+_0x3ba714['code']+_0x1ca0f4['code']}),'entryPoint':'main','constants':{}}}),this[_0x5e57e7(0x410)]=this[_0x5e57e7(0x44b)]['createComputePipeline']({'layout':_0x5b25f7,'compute':{'module':this[_0x5e57e7(0x44b)]['createShaderModule']({'code':_0x2a6a10['code']+_0x12afc0[_0x5e57e7(0x3fe)]+_0x1ca0f4[_0x5e57e7(0x3fe)]}),'entryPoint':_0x5e57e7(0x331),'constants':{}}});}[_0xe79d2f(0x2ce)](_0x580290){var _0x408c34=_0xe79d2f,_0x463e45=_0x580290[_0x408c34(0x38f)]({'timestampWrites':{'querySet':this[_0x408c34(0x373)],'beginningOfPassWriteIndex':0x2,'endOfPassWriteIndex':0x3}});_0x463e45[_0x408c34(0x2b1)](0x0,this[_0x408c34(0x3f7)]),_0x463e45['setPipeline'](this[_0x408c34(0x2a4)]),_0x463e45[_0x408c34(0x270)](Math[_0x408c34(0x228)](this[_0x408c34(0x2fc)]/0x80)),_0x463e45['end'](),this['LightBodiesRemoveDuplicatesIndirect'](_0x580290);}[_0xe79d2f(0x332)](){var _0x1944da=_0xe79d2f,_0x59c231=this['device']['createBindGroupLayout']({'entries':[{'binding':0x0,'visibility':GPUShaderStage[_0x1944da(0x210)],'buffer':{'type':_0x1944da(0x2e6)}},{'binding':0x1,'visibility':GPUShaderStage[_0x1944da(0x210)],'buffer':{'type':'storage'}},{'binding':0x2,'visibility':GPUShaderStage[_0x1944da(0x210)],'buffer':{'type':_0x1944da(0x2e6)}}]}),_0x59c231=(this['LightBodiesRemoveDuplicatesComputeBingGroup']=this[_0x1944da(0x44b)][_0x1944da(0x362)]({'layout':_0x59c231,'entries':[{'binding':0x0,'resource':{'buffer':this[_0x1944da(0x2bd)]}},{'binding':0x1,'resource':{'buffer':this[_0x1944da(0x25c)]}},{'binding':0x2,'resource':{'buffer':this['lightBodiesBounceTwo_VmBuffer']}}]}),this['device'][_0x1944da(0x395)]({'bindGroupLayouts':[_0x59c231]}));this['LightBodiesRemoveDuplicatesComputePipeline']=this[_0x1944da(0x44b)][_0x1944da(0x44d)]({'layout':_0x59c231,'compute':{'module':this['device'][_0x1944da(0x2d0)]({'code':_0x14a031[_0x1944da(0x3fe)]}),'entryPoint':_0x1944da(0x331),'constants':{}}});}[_0xe79d2f(0x2b6)](_0x48e01a){var _0x4b943c=_0xe79d2f;_0x48e01a=_0x48e01a[_0x4b943c(0x38f)](),(_0x48e01a['setBindGroup'](0x0,this[_0x4b943c(0x2c9)]),_0x48e01a['setPipeline'](this[_0x4b943c(0x41f)]),_0x48e01a['dispatchWorkgroupsIndirect'](this[_0x4b943c(0x227)],0x0),_0x48e01a['end']());}['LightBodiesRemoveDuplicatesIndirectIntend'](){var _0x1be421=_0xe79d2f,_0x51ddab=this[_0x1be421(0x44b)][_0x1be421(0x288)]({'entries':[{'binding':0x2,'visibility':GPUShaderStage[_0x1be421(0x210)],'buffer':{'type':_0x1be421(0x2e6)}},{'binding':0x3,'visibility':GPUShaderStage[_0x1be421(0x210)],'buffer':{'type':_0x1be421(0x2e6)}}]}),_0x51ddab=(this[_0x1be421(0x436)]=this[_0x1be421(0x44b)][_0x1be421(0x362)]({'layout':_0x51ddab,'entries':[{'binding':0x2,'resource':{'buffer':this[_0x1be421(0x3ea)]}},{'binding':0x3,'resource':{'buffer':this[_0x1be421(0x227)]}}]}),this[_0x1be421(0x44b)][_0x1be421(0x395)]({'bindGroupLayouts':[_0x51ddab]}));this[_0x1be421(0x435)]=this['device'][_0x1be421(0x44d)]({'layout':_0x51ddab,'compute':{'module':this[_0x1be421(0x44b)][_0x1be421(0x2d0)]({'code':_0x1be421(0x1b1)}),'entryPoint':'main','constants':{'lightBodiesBounceCount':this[_0x1be421(0x2fc)]}}});}['LightBodiesRemoveDuplicatesIndirect'](_0xb8fe42){var _0x1d06ab=_0xe79d2f;_0xb8fe42=_0xb8fe42[_0x1d06ab(0x38f)](),(_0xb8fe42[_0x1d06ab(0x2b1)](0x0,this[_0x1d06ab(0x436)]),_0xb8fe42[_0x1d06ab(0x1f5)](this[_0x1d06ab(0x435)]),_0xb8fe42['dispatchWorkgroups'](0x1),_0xb8fe42[_0x1d06ab(0x1e2)]());}['MeshRenderIntend'](){var _0x291bb0=_0xe79d2f;this[_0x291bb0(0x2cd)]=this[_0x291bb0(0x44b)]['createBuffer']({'size':0x10,'usage':GPUBufferUsage[_0x291bb0(0x20a)]|GPUBufferUsage['COPY_DST']|GPUBufferUsage[_0x291bb0(0x1c0)]}),this[_0x291bb0(0x2fa)]=this[_0x291bb0(0x44b)][_0x291bb0(0x2b2)]({'size':0x10,'usage':GPUBufferUsage[_0x291bb0(0x20e)]|GPUBufferUsage['COPY_SRC']}),this[_0x291bb0(0x44b)][_0x291bb0(0x2c0)][_0x291bb0(0x40f)](this[_0x291bb0(0x2fa)],0x0,new Uint32Array([0x2,0x0,0x0,0x0])),this[_0x291bb0(0x1d8)]=this['device'][_0x291bb0(0x290)]({'size':[this[_0x291bb0(0x1f8)][_0x291bb0(0x440)]['width'],this[_0x291bb0(0x1f8)][_0x291bb0(0x440)][_0x291bb0(0x360)],0x1],'format':_0x291bb0(0x1b3),'usage':GPUTextureUsage[_0x291bb0(0x1c0)]|GPUTextureUsage[_0x291bb0(0x2e0)]|GPUTextureUsage[_0x291bb0(0x1d3)]}),this[_0x291bb0(0x44e)]=this[_0x291bb0(0x44b)][_0x291bb0(0x290)]({'size':[this[_0x291bb0(0x1f8)]['canvas']['width'],this['context'][_0x291bb0(0x440)][_0x291bb0(0x360)],0x1],'format':_0x291bb0(0x3fa),'usage':GPUTextureUsage[_0x291bb0(0x1c0)]|GPUTextureUsage[_0x291bb0(0x2e0)]|GPUTextureUsage[_0x291bb0(0x1d3)]|GPUTextureUsage['STORAGE_BINDING']}),this[_0x291bb0(0x277)]=this[_0x291bb0(0x44b)][_0x291bb0(0x290)]({'size':[this[_0x291bb0(0x1f8)][_0x291bb0(0x440)][_0x291bb0(0x19c)],this[_0x291bb0(0x1f8)][_0x291bb0(0x440)][_0x291bb0(0x360)],0x1],'format':_0x291bb0(0x3fa),'usage':GPUTextureUsage[_0x291bb0(0x1c0)]|GPUTextureUsage[_0x291bb0(0x2e0)]|GPUTextureUsage[_0x291bb0(0x1d3)]|GPUTextureUsage['STORAGE_BINDING']}),this[_0x291bb0(0x278)]=this['device'][_0x291bb0(0x290)]({'size':[this[_0x291bb0(0x1f8)][_0x291bb0(0x440)][_0x291bb0(0x19c)],this[_0x291bb0(0x1f8)]['canvas'][_0x291bb0(0x360)],0x1],'format':'rgba32uint','usage':GPUTextureUsage[_0x291bb0(0x1c0)]|GPUTextureUsage['RENDER_ATTACHMENT']|GPUTextureUsage[_0x291bb0(0x1d3)]|GPUTextureUsage[_0x291bb0(0x3f5)]}),this[_0x291bb0(0x319)]=this['device'][_0x291bb0(0x290)]({'size':[this[_0x291bb0(0x1f8)][_0x291bb0(0x440)][_0x291bb0(0x19c)],this[_0x291bb0(0x1f8)][_0x291bb0(0x440)][_0x291bb0(0x360)],0x1],'format':_0x291bb0(0x3be),'usage':GPUTextureUsage[_0x291bb0(0x1c0)]|GPUTextureUsage[_0x291bb0(0x2e0)]|GPUTextureUsage[_0x291bb0(0x1d3)]|GPUTextureUsage['STORAGE_BINDING']}),this[_0x291bb0(0x239)]=this[_0x291bb0(0x44b)][_0x291bb0(0x2b2)]({'size':this['context'][_0x291bb0(0x440)][_0x291bb0(0x19c)]*this[_0x291bb0(0x1f8)][_0x291bb0(0x440)][_0x291bb0(0x360)]*0x4*0x2,'usage':GPUBufferUsage[_0x291bb0(0x20a)]|GPUBufferUsage['COPY_DST']|GPUBufferUsage['COPY_SRC']});let _0x56560d=this[_0x291bb0(0x44b)][_0x291bb0(0x288)]({'entries':[{'binding':0x0,'visibility':GPUShaderStage['VERTEX']|GPUShaderStage['FRAGMENT'],'buffer':{'type':'uniform'}},{'binding':0x1,'visibility':GPUShaderStage[_0x291bb0(0x21b)]|GPUShaderStage[_0x291bb0(0x271)],'buffer':{'type':'read-only-storage'}},{'binding':0x2,'visibility':GPUShaderStage[_0x291bb0(0x21b)],'buffer':{'type':_0x291bb0(0x275)}},{'binding':0x3,'visibility':GPUShaderStage[_0x291bb0(0x21b)],'buffer':{'type':_0x291bb0(0x275)}},{'binding':0x4,'visibility':GPUShaderStage[_0x291bb0(0x271)],'sampler':{'type':_0x291bb0(0x1bf)}},{'binding':0x5,'visibility':GPUShaderStage[_0x291bb0(0x271)],'buffer':{'type':_0x291bb0(0x41d)}},{'binding':0x6,'visibility':GPUShaderStage[_0x291bb0(0x271)],'texture':{'sampleType':_0x291bb0(0x405),'viewDimension':'2d'}},{'binding':0x7,'visibility':GPUShaderStage[_0x291bb0(0x271)],'texture':{'sampleType':_0x291bb0(0x405),'viewDimension':'2d'}},{'binding':0x8,'visibility':GPUShaderStage[_0x291bb0(0x271)],'texture':{'sampleType':'float','viewDimension':'2d'}},{'binding':0x9,'visibility':GPUShaderStage[_0x291bb0(0x271)],'buffer':{'type':'storage'}},{'binding':0xa,'visibility':GPUShaderStage[_0x291bb0(0x271)],'buffer':{'type':_0x291bb0(0x2e6)}},{'binding':0xb,'visibility':GPUShaderStage['FRAGMENT'],'buffer':{'type':_0x291bb0(0x2e6)}},{'binding':0xc,'visibility':GPUShaderStage['FRAGMENT'],'buffer':{'type':_0x291bb0(0x2e6)}},{'binding':0xd,'visibility':GPUShaderStage[_0x291bb0(0x21b)],'buffer':{'type':'read-only-storage'}},{'binding':0xe,'visibility':GPUShaderStage[_0x291bb0(0x21b)],'buffer':{'type':_0x291bb0(0x275)}}]}),_0x5c131d=(this[_0x291bb0(0x315)]=this['device'][_0x291bb0(0x362)]({'layout':_0x56560d,'entries':[{'binding':0x0,'resource':{'buffer':this[_0x291bb0(0x42c)]}},{'binding':0x1,'resource':{'buffer':this[_0x291bb0(0x2a8)]}},{'binding':0x2,'resource':{'buffer':this[_0x291bb0(0x29a)]}},{'binding':0x3,'resource':{'buffer':this['meshVmBuffer']}},{'binding':0x4,'resource':this['samplerNearest']},{'binding':0x5,'resource':{'buffer':this[_0x291bb0(0x1c1)]}},{'binding':0x6,'resource':this['albedo_Texture'][_0x291bb0(0x415)]()},{'binding':0x7,'resource':this[_0x291bb0(0x3d2)]['createView']()},{'binding':0x8,'resource':this[_0x291bb0(0x309)][_0x291bb0(0x415)]()},{'binding':0x9,'resource':{'buffer':this['lightBodiesSpace_VmBuffer']}},{'binding':0xa,'resource':{'buffer':this['lightBodiesSpaceAdd_VmBuffer']}},{'binding':0xb,'resource':{'buffer':this[_0x291bb0(0x2cd)]}},{'binding':0xc,'resource':{'buffer':this[_0x291bb0(0x239)]}},{'binding':0xd,'resource':{'buffer':this[_0x291bb0(0x244)]}},{'binding':0xe,'resource':{'buffer':this[_0x291bb0(0x318)]}}]}),this['device']['createBindGroupLayout']({'entries':[{'binding':0x0,'visibility':GPUShaderStage['VERTEX']|GPUShaderStage[_0x291bb0(0x271)],'buffer':{'type':'read-only-storage'}}]})),_0x49afb9=(this['meshRenderBindGroup_renderIndex']=this[_0x291bb0(0x44b)][_0x291bb0(0x362)]({'layout':_0x5c131d,'entries':[{'binding':0x0,'resource':{'buffer':this[_0x291bb0(0x2b0)]}}]}),this[_0x291bb0(0x44b)]['createPipelineLayout']({'bindGroupLayouts':this[_0x291bb0(0x40b)]?[_0x56560d]:[_0x56560d,_0x5c131d]})),_0x1df17d=_0x126892[_0x291bb0(0x3fe)];this['multiDrawIndirect']?_0x1df17d=_0x1df17d[_0x291bb0(0x39e)]('@group(1)\x20@binding(0)\x20var<storage,read>\x20renderIndex:\x20array<u32>;',''):(_0x1df17d=_0x1df17d[_0x291bb0(0x39e)]('let\x20ri\x20=\x20vec2<u32>(input.instanceIndex,input.vertexIndex);',_0x291bb0(0x3f1)),_0x1df17d+=_0x291bb0(0x445));var _0x533117=this[_0x291bb0(0x44b)][_0x291bb0(0x2d0)]({'code':_0x3d1ff9[_0x291bb0(0x3fe)]+_0x1df17d});this['meshRenderPipeline']=this[_0x291bb0(0x44b)][_0x291bb0(0x3b6)]({'layout':_0x49afb9,'vertex':{'module':_0x533117,'entryPoint':_0x291bb0(0x2e8),'buffers':[],'constants':{}},'fragment':{'module':_0x533117,'entryPoint':_0x291bb0(0x418),'targets':[{'format':this[_0x291bb0(0x44e)][_0x291bb0(0x3d4)]},{'format':this[_0x291bb0(0x278)][_0x291bb0(0x3d4)]},{'format':this[_0x291bb0(0x319)][_0x291bb0(0x3d4)]},{'format':this['meshRender_prev_SSP_Texture'][_0x291bb0(0x3d4)]}],'constants':{'spaceTotalCount':this[_0x291bb0(0x453)],'spaceUnit':this[_0x291bb0(0x256)]}},'primitive':{'topology':'triangle-list','frontFace':_0x291bb0(0x389),'cullMode':_0x291bb0(0x24e)},'depthStencil':{'format':this[_0x291bb0(0x1d8)][_0x291bb0(0x3d4)],'depthCompare':_0x291bb0(0x2f1),'depthWriteEnabled':!0x0}}),this[_0x291bb0(0x3ce)]={'colorAttachments':[{'view':this[_0x291bb0(0x44e)][_0x291bb0(0x415)](),'clearValue':{'r':0x0,'g':0x0,'b':0x0,'a':0x0},'loadOp':_0x291bb0(0x3cb),'storeOp':_0x291bb0(0x258)},{'view':this[_0x291bb0(0x278)][_0x291bb0(0x415)](),'clearValue':{'r':0x0,'g':0x0,'b':0x0,'a':0x0},'loadOp':_0x291bb0(0x3cb),'storeOp':_0x291bb0(0x258)},{'view':this['meshRenderInstancePtrTexture'][_0x291bb0(0x415)](),'clearValue':{'r':0x0,'g':0x0,'b':0x0,'a':0x0},'loadOp':_0x291bb0(0x3cb),'storeOp':_0x291bb0(0x258)},{'view':this[_0x291bb0(0x277)][_0x291bb0(0x415)](),'clearValue':{'r':0x0,'g':0x0,'b':0x0,'a':0x0},'loadOp':_0x291bb0(0x3cb),'storeOp':_0x291bb0(0x258)}],'depthStencilAttachment':{'view':this['meshRenderDepthTexture'][_0x291bb0(0x415)](),'depthClearValue':0x0,'depthLoadOp':'clear','depthStoreOp':_0x291bb0(0x258),'depthReadOnly':!0x1},'timestampWrites':{'querySet':this[_0x291bb0(0x373)],'beginningOfPassWriteIndex':0x4,'endOfPassWriteIndex':0x5}},this[_0x291bb0(0x40b)]||((_0x533117=this[_0x291bb0(0x44b)][_0x291bb0(0x3c8)]({'colorFormats':[this['meshRenderPositionTexture']['format'],this[_0x291bb0(0x278)][_0x291bb0(0x3d4)],this[_0x291bb0(0x319)][_0x291bb0(0x3d4)],this[_0x291bb0(0x277)][_0x291bb0(0x3d4)]],'depthStencilFormat':this[_0x291bb0(0x1d8)][_0x291bb0(0x3d4)]}))['setBindGroup'](0x0,this[_0x291bb0(0x315)]),_0x533117[_0x291bb0(0x1f5)](this[_0x291bb0(0x43f)]),_0x533117[_0x291bb0(0x2b1)](0x1,this[_0x291bb0(0x1e1)]),_0x533117[_0x291bb0(0x414)](this[_0x291bb0(0x32c)],0x0),this[_0x291bb0(0x36a)]=_0x533117['finish']());}[_0xe79d2f(0x3ab)](_0x59aaf){var _0x12daac=_0xe79d2f;_0x59aaf[_0x12daac(0x391)](this['meshRenderAtomic_InitData_VmBuffer'],0x0,this[_0x12daac(0x2cd)],0x0,0x10),_0x59aaf[_0x12daac(0x391)](this[_0x12daac(0x420)],0x0,this[_0x12daac(0x38b)],0x0,this[_0x12daac(0x38b)]['size']),_0x59aaf=_0x59aaf[_0x12daac(0x2a3)](this[_0x12daac(0x3ce)]),(this[_0x12daac(0x40b)]?(_0x59aaf['setBindGroup'](0x0,this[_0x12daac(0x315)]),_0x59aaf[_0x12daac(0x1f5)](this[_0x12daac(0x43f)]),_0x59aaf[_0x12daac(0x40b)](this[_0x12daac(0x2b0)],0x0,0x60000,this['indirect_render_VmBuffer'],0x0)):_0x59aaf[_0x12daac(0x342)]([this[_0x12daac(0x36a)]]),_0x59aaf[_0x12daac(0x1e2)]());}[_0xe79d2f(0x19b)](){var _0x9b8a7a=_0xe79d2f;this[_0x9b8a7a(0x1f4)]=this[_0x9b8a7a(0x44b)][_0x9b8a7a(0x290)]({'size':[this[_0x9b8a7a(0x21c)],this[_0x9b8a7a(0x21c)],0x1],'format':_0x9b8a7a(0x3be),'usage':GPUTextureUsage[_0x9b8a7a(0x1c0)]|GPUTextureUsage[_0x9b8a7a(0x2e0)]|GPUTextureUsage['TEXTURE_BINDING']|GPUTextureUsage['STORAGE_BINDING']}),this['renderShadowDepthTexture']=this[_0x9b8a7a(0x44b)]['createTexture']({'size':[this[_0x9b8a7a(0x21c)],this[_0x9b8a7a(0x21c)],0x1],'usage':GPUTextureUsage[_0x9b8a7a(0x2e0)]|GPUTextureUsage[_0x9b8a7a(0x1d3)],'format':_0x9b8a7a(0x1b3)}),this[_0x9b8a7a(0x2c3)]=this['renderShadowDepthTexture'][_0x9b8a7a(0x415)]({'dimension':_0x9b8a7a(0x1ad),'baseArrayLayer':0x0,'arrayLayerCount':0x1});let _0x4b1b60=this['device'][_0x9b8a7a(0x288)]({'entries':[{'binding':0x0,'visibility':GPUShaderStage[_0x9b8a7a(0x21b)]|GPUShaderStage[_0x9b8a7a(0x271)],'buffer':{'type':'uniform'}},{'binding':0x1,'visibility':GPUShaderStage[_0x9b8a7a(0x21b)]|GPUShaderStage[_0x9b8a7a(0x271)],'buffer':{'type':_0x9b8a7a(0x41d)}},{'binding':0x2,'visibility':GPUShaderStage[_0x9b8a7a(0x21b)]|GPUShaderStage[_0x9b8a7a(0x271)],'buffer':{'type':_0x9b8a7a(0x275)}},{'binding':0x3,'visibility':GPUShaderStage['VERTEX'],'buffer':{'type':_0x9b8a7a(0x275)}},{'binding':0x4,'visibility':GPUShaderStage[_0x9b8a7a(0x21b)],'buffer':{'type':_0x9b8a7a(0x275)}},{'binding':0x5,'visibility':GPUShaderStage[_0x9b8a7a(0x21b)],'buffer':{'type':_0x9b8a7a(0x275)}}]}),_0x48b32e=(this[_0x9b8a7a(0x19e)]=this[_0x9b8a7a(0x44b)][_0x9b8a7a(0x362)]({'layout':_0x4b1b60,'entries':[{'binding':0x0,'resource':{'buffer':this[_0x9b8a7a(0x42c)]}},{'binding':0x1,'resource':{'buffer':this[_0x9b8a7a(0x369)]}},{'binding':0x2,'resource':{'buffer':this[_0x9b8a7a(0x2a8)]}},{'binding':0x3,'resource':{'buffer':this['instanceVmBuffer']}},{'binding':0x4,'resource':{'buffer':this[_0x9b8a7a(0x444)]}},{'binding':0x5,'resource':{'buffer':this[_0x9b8a7a(0x244)]}}]}),this['device'][_0x9b8a7a(0x288)]({'entries':[{'binding':0x0,'visibility':GPUShaderStage[_0x9b8a7a(0x21b)]|GPUShaderStage['FRAGMENT'],'buffer':{'type':_0x9b8a7a(0x275)}}]})),_0x5c0895=(this['renderShadowBindGroup_renderIndex']=this[_0x9b8a7a(0x44b)][_0x9b8a7a(0x362)]({'layout':_0x48b32e,'entries':[{'binding':0x0,'resource':{'buffer':this[_0x9b8a7a(0x2b0)]}}]}),this[_0x9b8a7a(0x44b)][_0x9b8a7a(0x395)]({'bindGroupLayouts':this[_0x9b8a7a(0x40b)]?[_0x4b1b60]:[_0x4b1b60,_0x48b32e]})),_0x2c89d6=_0x1eb5d3[_0x9b8a7a(0x3fe)];this[_0x9b8a7a(0x40b)]?_0x2c89d6=_0x2c89d6[_0x9b8a7a(0x39e)](_0x9b8a7a(0x388),''):(_0x2c89d6=_0x2c89d6[_0x9b8a7a(0x39e)](_0x9b8a7a(0x3a1),_0x9b8a7a(0x3f1)),_0x2c89d6+=_0x9b8a7a(0x445));var _0x4535d5=this[_0x9b8a7a(0x44b)][_0x9b8a7a(0x2d0)]({'code':_0x3d1ff9[_0x9b8a7a(0x3fe)]+_0x2c89d6+_0x2a6a10['code']});this[_0x9b8a7a(0x450)]=this[_0x9b8a7a(0x44b)]['createRenderPipeline']({'label':_0x9b8a7a(0x450),'layout':_0x5c0895,'vertex':{'module':_0x4535d5,'entryPoint':_0x9b8a7a(0x2e8),'buffers':[],'constants':{}},'fragment':{'module':_0x4535d5,'entryPoint':'frag_main','targets':[{'format':this[_0x9b8a7a(0x1f4)][_0x9b8a7a(0x3d4)]}],'constants':{}},'primitive':{'topology':_0x9b8a7a(0x426),'frontFace':_0x9b8a7a(0x389),'cullMode':_0x9b8a7a(0x24e)},'depthStencil':{'format':this[_0x9b8a7a(0x22f)][_0x9b8a7a(0x3d4)],'depthCompare':_0x9b8a7a(0x2f1),'depthWriteEnabled':!0x0}}),this['renderShadowRenderPassDescriptor']={'colorAttachments':[{'view':this['renderShadowInstancePtrTexture']['createView'](),'clearValue':{'r':0x0,'g':0x0,'b':0x0,'a':0x0},'loadOp':_0x9b8a7a(0x3cb),'storeOp':_0x9b8a7a(0x258)}],'depthStencilAttachment':{'view':this['renderShadowDepthView1'],'depthClearValue':0x0,'depthLoadOp':_0x9b8a7a(0x3cb),'depthStoreOp':'store','depthReadOnly':!0x1}},this[_0x9b8a7a(0x40b)]||((_0x4535d5=this[_0x9b8a7a(0x44b)][_0x9b8a7a(0x3c8)]({'colorFormats':[this[_0x9b8a7a(0x1f4)][_0x9b8a7a(0x3d4)]],'depthStencilFormat':this[_0x9b8a7a(0x22f)][_0x9b8a7a(0x3d4)]}))[_0x9b8a7a(0x2b1)](0x0,this[_0x9b8a7a(0x19e)]),_0x4535d5[_0x9b8a7a(0x1f5)](this['renderShadowPipeline']),_0x4535d5[_0x9b8a7a(0x2b1)](0x1,this['renderShadowBindGroup_renderIndex']),_0x4535d5[_0x9b8a7a(0x414)](this[_0x9b8a7a(0x32c)],0x0),this[_0x9b8a7a(0x1f0)]=_0x4535d5[_0x9b8a7a(0x443)]());}[_0xe79d2f(0x219)](_0x2e5d7e){var _0x33beff=_0xe79d2f;this['renderShadowRenderPassDescriptor'][_0x33beff(0x41c)][_0x33beff(0x2bf)]=this[_0x33beff(0x2c3)],_0x2e5d7e=_0x2e5d7e[_0x33beff(0x2a3)](this[_0x33beff(0x419)]),(this[_0x33beff(0x40b)]?(_0x2e5d7e['setBindGroup'](0x0,this[_0x33beff(0x19e)]),_0x2e5d7e['setPipeline'](this['renderShadowPipeline']),_0x2e5d7e[_0x33beff(0x40b)](this[_0x33beff(0x2b0)],0x0,0x60000,this[_0x33beff(0x32c)],0x0)):_0x2e5d7e[_0x33beff(0x342)]([this[_0x33beff(0x1f0)]]),_0x2e5d7e[_0x33beff(0x1e2)]());}[_0xe79d2f(0x1e0)](){var _0x5b4c83=_0xe79d2f;this['dynamicSpaceIndirect_VmBuffer']=this[_0x5b4c83(0x44b)][_0x5b4c83(0x2b2)]({'size':0x10,'usage':GPUBufferUsage[_0x5b4c83(0x20e)]|GPUBufferUsage[_0x5b4c83(0x2d4)]}),this[_0x5b4c83(0x44b)][_0x5b4c83(0x2c0)][_0x5b4c83(0x40f)](this[_0x5b4c83(0x254)],0x0,new Uint32Array([0x1,0x1,0x1,0x0]));var _0x3f2716=this['device'][_0x5b4c83(0x288)]({'entries':[{'binding':0x0,'visibility':GPUShaderStage[_0x5b4c83(0x210)],'buffer':{'type':_0x5b4c83(0x2e6)}},{'binding':0x1,'visibility':GPUShaderStage['COMPUTE'],'buffer':{'type':_0x5b4c83(0x2e6)}}]}),_0x3f2716=(this[_0x5b4c83(0x2b3)]=this[_0x5b4c83(0x44b)][_0x5b4c83(0x362)]({'layout':_0x3f2716,'entries':[{'binding':0x0,'resource':{'buffer':this[_0x5b4c83(0x38b)]}},{'binding':0x1,'resource':{'buffer':this[_0x5b4c83(0x2bd)]}}]}),this['device'][_0x5b4c83(0x395)]({'bindGroupLayouts':[_0x3f2716]}));this[_0x5b4c83(0x3ef)]=this['device']['createComputePipeline']({'layout':_0x3f2716,'compute':{'module':this[_0x5b4c83(0x44b)][_0x5b4c83(0x2d0)]({'code':_0x1504ec[_0x5b4c83(0x3fe)]}),'entryPoint':_0x5b4c83(0x331),'constants':{'spaceTotalCount':this[_0x5b4c83(0x453)],'lightBodiesSize':this['lightBodiesSize']}}});}['DynamicSpace'](_0x18dcbf){var _0x2b762b=_0xe79d2f;_0x18dcbf[_0x2b762b(0x391)](this[_0x2b762b(0x38b)],0x4,this[_0x2b762b(0x254)],0x0,0x4),_0x18dcbf=_0x18dcbf[_0x2b762b(0x38f)](),(_0x18dcbf[_0x2b762b(0x2b1)](0x0,this['dynamicSpaceComputeBingGroup']),_0x18dcbf[_0x2b762b(0x1f5)](this['dynamicSpaceComputePipeline']),_0x18dcbf[_0x2b762b(0x21a)](this['dynamicSpaceIndirect_VmBuffer'],0x0),_0x18dcbf[_0x2b762b(0x1e2)]());}[_0xe79d2f(0x452)](){var _0x204544=_0xe79d2f;this[_0x204544(0x26c)]=this[_0x204544(0x44b)][_0x204544(0x2b2)]({'size':0x4*this[_0x204544(0x3b0)]['length'],'usage':GPUBufferUsage[_0x204544(0x34c)]|GPUBufferUsage['COPY_DST']}),this['device'][_0x204544(0x2c0)][_0x204544(0x40f)](this[_0x204544(0x26c)],0x0,this['ssrReflections_Uniform_DataView']);var _0x36ad11=this['device'][_0x204544(0x288)]({'entries':[{'binding':0x0,'visibility':GPUShaderStage['COMPUTE'],'buffer':{'type':_0x204544(0x41d)}},{'binding':0x2,'visibility':GPUShaderStage[_0x204544(0x210)],'storageTexture':{'format':this[_0x204544(0x277)][_0x204544(0x3d4)],'access':_0x204544(0x279)}},{'binding':0x3,'visibility':GPUShaderStage[_0x204544(0x210)],'storageTexture':{'format':this['meshRender_packData_Texture'][_0x204544(0x3d4)],'access':'read-only'}},{'binding':0x4,'visibility':GPUShaderStage[_0x204544(0x210)],'texture':{'sampleType':_0x204544(0x289)}},{'binding':0x5,'visibility':GPUShaderStage[_0x204544(0x210)],'sampler':{'type':_0x204544(0x1bf)}},{'binding':0x6,'visibility':GPUShaderStage[_0x204544(0x210)],'texture':{'sampleType':_0x204544(0x405),'viewDimension':'2d'}},{'binding':0x7,'visibility':GPUShaderStage[_0x204544(0x210)],'texture':{'sampleType':_0x204544(0x405),'viewDimension':'2d'}},{'binding':0x8,'visibility':GPUShaderStage[_0x204544(0x210)],'storageTexture':{'format':this[_0x204544(0x23b)][_0x204544(0x3d4)],'access':'write-only'}}]});this[_0x204544(0x3c1)]=this[_0x204544(0x44b)][_0x204544(0x362)]({'layout':_0x36ad11,'entries':[{'binding':0x0,'resource':{'buffer':this[_0x204544(0x26c)]}},{'binding':0x2,'resource':this[_0x204544(0x277)][_0x204544(0x415)]()},{'binding':0x3,'resource':this[_0x204544(0x278)]['createView']()},{'binding':0x4,'resource':this[_0x204544(0x1d8)][_0x204544(0x415)]()},{'binding':0x5,'resource':this[_0x204544(0x27c)]},{'binding':0x6,'resource':this['finalColor_Texture'][_0x204544(0x415)]()},{'binding':0x7,'resource':this[_0x204544(0x451)]['createView']()},{'binding':0x8,'resource':this['ssr_color_accumulated_Texture'][_0x204544(0x415)]()}]}),this[_0x204544(0x447)]=this[_0x204544(0x44b)]['createComputePipeline']({'layout':this[_0x204544(0x44b)][_0x204544(0x395)]({'bindGroupLayouts':[_0x36ad11]}),'compute':{'module':this['device']['createShaderModule']({'code':_0x2f9133[_0x204544(0x3fe)]+_0x17da49['code']}),'entryPoint':_0x204544(0x331),'constants':{}}});}[_0xe79d2f(0x1ac)](_0x35269f){var _0x1ef9f4=_0xe79d2f;this[_0x1ef9f4(0x3b0)][_0x1ef9f4(0x37f)](this[_0x1ef9f4(0x407)][_0x1ef9f4(0x3f0)]),this[_0x1ef9f4(0x3b0)][_0x1ef9f4(0x37f)](this['fig'][_0x1ef9f4(0x346)],0x10),this[_0x1ef9f4(0x3b0)][_0x1ef9f4(0x37f)](this[_0x1ef9f4(0x407)][_0x1ef9f4(0x280)],0x20),this[_0x1ef9f4(0x3b0)][_0x1ef9f4(0x37f)](this[_0x1ef9f4(0x407)][_0x1ef9f4(0x400)],0x30),this['ssrReflections_Uniform_DataView'][0x40]=this['fig'][_0x1ef9f4(0x1fd)][_0x1ef9f4(0x454)],this['ssrReflections_Uniform_DataView'][0x41]=this[_0x1ef9f4(0x407)]['cameraParameter']['far'],this[_0x1ef9f4(0x3b0)][0x42]=0x5,this[_0x1ef9f4(0x3b0)][0x43]=0x7d0,this['ssrReflections_Uniform_DataView'][0x44]=0.5,this[_0x1ef9f4(0x3b0)][0x45]=0.2,this[_0x1ef9f4(0x3b0)][0x46]=0.95,this['ssrReflections_Uniform_DataView'][0x47]=0x14,this[_0x1ef9f4(0x3b0)][0x48]=0x1,this['ssrReflections_Uniform_DataView'][0x49]=0.9,this[_0x1ef9f4(0x2b9)][0x4a]=0xffffffff*Math['random'](),this[_0x1ef9f4(0x2b9)][0x4b]=0xffffffff*Math[_0x1ef9f4(0x438)](),this['ssrReflections_Uniform_DataViewU32'][0x4c]=0xffffffff*Math[_0x1ef9f4(0x438)](),this[_0x1ef9f4(0x44b)]['queue'][_0x1ef9f4(0x40f)](this['ssrReflections_Uniform_VmBuffer'],0x0,this['ssrReflections_Uniform_DataView']);var _0x4a847e=_0x35269f[_0x1ef9f4(0x38f)]({'timestampWrites':{'querySet':this[_0x1ef9f4(0x373)],'beginningOfPassWriteIndex':0x0,'endOfPassWriteIndex':0x1}});_0x4a847e[_0x1ef9f4(0x2b1)](0x0,this[_0x1ef9f4(0x3c1)]),_0x4a847e[_0x1ef9f4(0x1f5)](this['ssrReflectionsComputePipeline']),_0x4a847e['dispatchWorkgroups'](this[_0x1ef9f4(0x2f0)],this[_0x1ef9f4(0x383)]),_0x4a847e['end'](),_0x35269f[_0x1ef9f4(0x25b)]({'texture':this['ssr_color_accumulated_Texture']},{'texture':this['ssr_color_Texture']},{'width':this[_0x1ef9f4(0x451)][_0x1ef9f4(0x19c)],'height':this['ssr_color_Texture'][_0x1ef9f4(0x360)]});}['ImageBlurIntend'](){var _0x39c3a5=_0xe79d2f;this[_0x39c3a5(0x37b)]=this[_0x39c3a5(0x44b)]['createComputePipeline']({'layout':_0x39c3a5(0x304),'compute':{'module':this['device'][_0x39c3a5(0x2d0)]({'code':_0x57385a['code']})}});var _0x5c7322,_0x59c586,_0x597198=this[_0x39c3a5(0x44b)][_0x39c3a5(0x290)]({'size':{'width':this[_0x39c3a5(0x1f8)]['canvas']['width'],'height':this['context'][_0x39c3a5(0x440)]['height']},'format':this[_0x39c3a5(0x3fb)],'usage':GPUTextureUsage['COPY_DST']|GPUTextureUsage[_0x39c3a5(0x3f5)]|GPUTextureUsage[_0x39c3a5(0x1d3)]}),_0x50a603=_0x597198,_0x34e985=(_0x5c7322=this[_0x39c3a5(0x44b)]['createBuffer']({'size':0x4,'mappedAtCreation':!0x0,'usage':GPUBufferUsage[_0x39c3a5(0x34c)]}),new Uint32Array(_0x5c7322['getMappedRange']())[0x0]=0x0,_0x5c7322[_0x39c3a5(0x1e4)](),_0x59c586=this[_0x39c3a5(0x44b)]['createBuffer']({'size':0x4,'mappedAtCreation':!0x0,'usage':GPUBufferUsage['UNIFORM']}),new Uint32Array(_0x59c586[_0x39c3a5(0x33b)]())[0x0]=0x1,_0x59c586[_0x39c3a5(0x1e4)](),this[_0x39c3a5(0x44b)]['createBuffer']({'size':0x8,'usage':GPUBufferUsage['COPY_DST']|GPUBufferUsage[_0x39c3a5(0x34c)]}));this[_0x39c3a5(0x44b)][_0x39c3a5(0x2c0)][_0x39c3a5(0x40f)](_0x34e985,0x0,new Uint32Array([this[_0x39c3a5(0x276)],this[_0x39c3a5(0x371)]])),this['blur_computeConstants_ComputeBingGroup']=this[_0x39c3a5(0x44b)][_0x39c3a5(0x362)]({'layout':this[_0x39c3a5(0x37b)][_0x39c3a5(0x2fb)](0x0),'entries':[{'binding':0x0,'resource':this[_0x39c3a5(0x27c)]},{'binding':0x1,'resource':{'buffer':_0x34e985}}]}),this[_0x39c3a5(0x24f)]=this['device']['createBindGroup']({'layout':this['blurComputePipeline'][_0x39c3a5(0x2fb)](0x1),'entries':[{'binding':0x1,'resource':_0x50a603[_0x39c3a5(0x415)]()},{'binding':0x2,'resource':_0x597198[_0x39c3a5(0x415)]()},{'binding':0x3,'resource':{'buffer':_0x5c7322}}]}),this[_0x39c3a5(0x1a2)]=this[_0x39c3a5(0x44b)][_0x39c3a5(0x362)]({'layout':this['blurComputePipeline'][_0x39c3a5(0x2fb)](0x1),'entries':[{'binding':0x1,'resource':_0x597198[_0x39c3a5(0x415)]()},{'binding':0x2,'resource':_0x50a603['createView']()},{'binding':0x3,'resource':{'buffer':_0x59c586}}]});}[_0xe79d2f(0x211)](_0x280f2e){var _0xbbf5a4=_0xe79d2f;if(0x0<this[_0xbbf5a4(0x276)]){var _0x4016ca=_0x280f2e[_0xbbf5a4(0x38f)]();_0x4016ca['setPipeline'](this['blurComputePipeline']),_0x4016ca[_0xbbf5a4(0x2b1)](0x0,this[_0xbbf5a4(0x403)]);for(let _0x50734c=0x0;_0x50734c<this[_0xbbf5a4(0x276)];++_0x50734c)_0x4016ca[_0xbbf5a4(0x2b1)](0x1,this[_0xbbf5a4(0x24f)]),_0x4016ca[_0xbbf5a4(0x270)](Math[_0xbbf5a4(0x228)](this[_0xbbf5a4(0x1f8)][_0xbbf5a4(0x440)][_0xbbf5a4(0x19c)]/this['blur_blockDim']),Math[_0xbbf5a4(0x228)](this[_0xbbf5a4(0x1f8)]['canvas'][_0xbbf5a4(0x360)]/this[_0xbbf5a4(0x215)][0x1])),_0x4016ca[_0xbbf5a4(0x2b1)](0x1,this[_0xbbf5a4(0x1a2)]),_0x4016ca[_0xbbf5a4(0x270)](Math[_0xbbf5a4(0x228)](this[_0xbbf5a4(0x1f8)][_0xbbf5a4(0x440)][_0xbbf5a4(0x19c)]/this['blur_blockDim']),Math[_0xbbf5a4(0x228)](this[_0xbbf5a4(0x1f8)][_0xbbf5a4(0x440)]['height']/this[_0xbbf5a4(0x215)][0x1]));_0x4016ca[_0xbbf5a4(0x1e2)]();}}[_0xe79d2f(0x408)](){var _0x1ed1ca=_0xe79d2f;this[_0x1ed1ca(0x3d6)]=this[_0x1ed1ca(0x44b)][_0x1ed1ca(0x2b2)]({'size':0x4*this[_0x1ed1ca(0x206)][_0x1ed1ca(0x320)],'usage':GPUBufferUsage[_0x1ed1ca(0x34c)]|GPUBufferUsage[_0x1ed1ca(0x20e)]});var _0x493f5d=this[_0x1ed1ca(0x44b)][_0x1ed1ca(0x288)]({'entries':[{'binding':0x0,'visibility':GPUShaderStage['FRAGMENT'],'sampler':{'type':'filtering'}},{'binding':0x1,'visibility':GPUShaderStage['FRAGMENT'],'sampler':{'type':_0x1ed1ca(0x457)}},{'binding':0x2,'visibility':GPUShaderStage[_0x1ed1ca(0x271)],'texture':{'sampleType':_0x1ed1ca(0x405),'viewDimension':'2d'}},{'binding':0x4,'visibility':GPUShaderStage[_0x1ed1ca(0x271)],'texture':{'sampleType':_0x1ed1ca(0x405),'viewDimension':'2d'}},{'binding':0x5,'visibility':GPUShaderStage[_0x1ed1ca(0x271)],'texture':{'sampleType':_0x1ed1ca(0x1bd),'viewDimension':'2d'}},{'binding':0x6,'visibility':GPUShaderStage[_0x1ed1ca(0x271)],'texture':{'sampleType':'uint','viewDimension':'2d'}},{'binding':0x7,'visibility':GPUShaderStage[_0x1ed1ca(0x271)],'buffer':{'type':_0x1ed1ca(0x41d)}}]}),_0x26f33f=(this[_0x1ed1ca(0x353)]=this[_0x1ed1ca(0x44b)][_0x1ed1ca(0x362)]({'layout':_0x493f5d,'entries':[{'binding':0x0,'resource':this['samplerLinear']},{'binding':0x1,'resource':this[_0x1ed1ca(0x356)]},{'binding':0x2,'resource':this[_0x1ed1ca(0x1f6)][_0x1ed1ca(0x415)]()},{'binding':0x4,'resource':this[_0x1ed1ca(0x3c6)][_0x1ed1ca(0x415)]()},{'binding':0x5,'resource':this[_0x1ed1ca(0x278)]['createView']()},{'binding':0x6,'resource':this[_0x1ed1ca(0x319)][_0x1ed1ca(0x415)]()},{'binding':0x7,'resource':{'buffer':this[_0x1ed1ca(0x3d6)]}}]}),this[_0x1ed1ca(0x44b)]['createShaderModule']({'code':_0x4e7a6d['code']}));this[_0x1ed1ca(0x349)]=this[_0x1ed1ca(0x44b)][_0x1ed1ca(0x3b6)]({'layout':this['device'][_0x1ed1ca(0x395)]({'bindGroupLayouts':[_0x493f5d]}),'vertex':{'module':_0x26f33f,'entryPoint':_0x1ed1ca(0x2e8),'buffers':[]},'fragment':{'module':_0x26f33f,'entryPoint':_0x1ed1ca(0x418),'targets':[{'format':this['presentationFormat']}]},'primitive':{'topology':_0x1ed1ca(0x426),'frontFace':_0x1ed1ca(0x389),'cullMode':_0x1ed1ca(0x24e)}}),this[_0x1ed1ca(0x317)]={'colorAttachments':[{'view':this[_0x1ed1ca(0x1f8)][_0x1ed1ca(0x2b8)]()[_0x1ed1ca(0x415)](),'clearValue':{'r':0x0,'g':0x0,'b':0x0,'a':0x0},'loadOp':_0x1ed1ca(0x3cb),'storeOp':_0x1ed1ca(0x258)}]};}[_0xe79d2f(0x2ae)](_0x34fe93){var _0x125d65=_0xe79d2f;!this[_0x125d65(0x407)][_0x125d65(0x343)][_0x125d65(0x3b9)][_0x125d65(0x1c2)][_0x125d65(0x3e3)]||this[_0x125d65(0x407)][_0x125d65(0x343)][_0x125d65(0x3b9)]['mouse']['downLeftX']==this['fig'][_0x125d65(0x343)][_0x125d65(0x3b9)]['mouse'][_0x125d65(0x1fb)]&&this['fig'][_0x125d65(0x343)]['status'][_0x125d65(0x1c2)][_0x125d65(0x2a7)]==this[_0x125d65(0x407)][_0x125d65(0x343)][_0x125d65(0x3b9)][_0x125d65(0x1c2)]['clientY']?this[_0x125d65(0x206)][_0x125d65(0x37f)]([0x0,0x0,0x0,0x0]):this[_0x125d65(0x206)][_0x125d65(0x37f)]([(this[_0x125d65(0x407)][_0x125d65(0x343)][_0x125d65(0x3b9)][_0x125d65(0x1c2)][_0x125d65(0x1fb)]-this[_0x125d65(0x407)][_0x125d65(0x343)][_0x125d65(0x3b9)][_0x125d65(0x1c2)][_0x125d65(0x2cb)])/this['finalColor_Texture'][_0x125d65(0x19c)],(this[_0x125d65(0x407)][_0x125d65(0x343)]['status'][_0x125d65(0x1c2)][_0x125d65(0x30f)]-this[_0x125d65(0x407)][_0x125d65(0x343)][_0x125d65(0x3b9)][_0x125d65(0x1c2)][_0x125d65(0x2a7)])/this[_0x125d65(0x1f6)][_0x125d65(0x360)],0x1]),this[_0x125d65(0x44b)][_0x125d65(0x2c0)][_0x125d65(0x40f)](this[_0x125d65(0x3d6)],0x0,this[_0x125d65(0x206)]),this[_0x125d65(0x317)][_0x125d65(0x236)][0x0][_0x125d65(0x2bf)]=this['context'][_0x125d65(0x2b8)]()[_0x125d65(0x415)](),_0x34fe93=_0x34fe93[_0x125d65(0x2a3)](this[_0x125d65(0x317)]),(_0x34fe93['setPipeline'](this['finalDisplayPipeline']),_0x34fe93[_0x125d65(0x2b1)](0x0,this[_0x125d65(0x353)]),_0x34fe93[_0x125d65(0x2d9)](0x6),_0x34fe93[_0x125d65(0x1e2)]());}[_0xe79d2f(0x336)](){var _0xb0a998=_0xe79d2f;this['edgeStrength_finalColor_Texture']=this[_0xb0a998(0x44b)]['createTexture']({'dimension':'2d','size':[this['finalColor_Texture'][_0xb0a998(0x19c)],this[_0xb0a998(0x1f6)][_0xb0a998(0x360)],0x1],'format':this['presentationFormat'],'usage':GPUTextureUsage[_0xb0a998(0x20e)]|GPUTextureUsage[_0xb0a998(0x3f5)]|GPUTextureUsage[_0xb0a998(0x1d3)]}),this['edgeStrength_Uniform_VmBuffer']=this[_0xb0a998(0x44b)][_0xb0a998(0x2b2)]({'size':0x4*this['edgeStrength_Uniform_DataView'][_0xb0a998(0x320)],'usage':GPUBufferUsage['UNIFORM']|GPUBufferUsage[_0xb0a998(0x20e)]});var _0x2ddba5=this['device'][_0xb0a998(0x288)]({'entries':[{'binding':0x0,'visibility':GPUShaderStage[_0xb0a998(0x210)],'buffer':{'type':_0xb0a998(0x41d)}},{'binding':0x1,'visibility':GPUShaderStage[_0xb0a998(0x210)],'storageTexture':{'format':this[_0xb0a998(0x3c6)][_0xb0a998(0x3d4)],'access':_0xb0a998(0x2ca)}},{'binding':0x2,'visibility':GPUShaderStage[_0xb0a998(0x210)],'storageTexture':{'format':this[_0xb0a998(0x278)][_0xb0a998(0x3d4)],'access':_0xb0a998(0x279)}}]});this['edgeStrengthComputeBingGroup']=this[_0xb0a998(0x44b)]['createBindGroup']({'layout':_0x2ddba5,'entries':[{'binding':0x0,'resource':{'buffer':this[_0xb0a998(0x1aa)]}},{'binding':0x1,'resource':this['edgeStrength_finalColor_Texture']['createView']()},{'binding':0x2,'resource':this[_0xb0a998(0x278)][_0xb0a998(0x415)]()}]}),this[_0xb0a998(0x35e)]=this[_0xb0a998(0x44b)][_0xb0a998(0x44d)]({'layout':this[_0xb0a998(0x44b)][_0xb0a998(0x395)]({'bindGroupLayouts':[_0x2ddba5]}),'compute':{'module':this[_0xb0a998(0x44b)]['createShaderModule']({'code':_0x3d1ff9['code']+_0x1cbca9[_0xb0a998(0x3fe)]}),'entryPoint':_0xb0a998(0x331),'constants':{}}});}[_0xe79d2f(0x1bc)](_0xa0398f){var _0x2fb06c=_0xe79d2f;_0xa0398f=_0xa0398f[_0x2fb06c(0x38f)](),(_0xa0398f[_0x2fb06c(0x1f5)](this[_0x2fb06c(0x35e)]),_0xa0398f[_0x2fb06c(0x2b1)](0x0,this[_0x2fb06c(0x3e4)]),_0xa0398f['dispatchWorkgroups'](this[_0x2fb06c(0x2f0)],this[_0x2fb06c(0x383)]),_0xa0398f[_0x2fb06c(0x1e2)]());}[_0xe79d2f(0x3e9)](){var _0x299c6a=_0xe79d2f;this[_0x299c6a(0x36c)]=this[_0x299c6a(0x44b)][_0x299c6a(0x290)]({'dimension':'2d','size':[0xe10,0x708,0x32],'format':_0x299c6a(0x341),'usage':GPUTextureUsage[_0x299c6a(0x20e)]|GPUTextureUsage[_0x299c6a(0x1d3)]}),fetch(_0x299c6a(0x3a8))[_0x299c6a(0x1ba)](_0x2c570b=>{var _0x1f8fb2=_0x299c6a;_0x2c570b[_0x1f8fb2(0x367)]()[_0x1f8fb2(0x1ba)](_0x100bc6=>{var _0x4b4fa6=_0x1f8fb2;_0x100bc6=new Float32Array(_0x100bc6),this[_0x4b4fa6(0x44b)][_0x4b4fa6(0x2c0)]['writeTexture']({'texture':this['volumeRender_3dData_Texture']},_0x100bc6,{'bytesPerRow':0x1c20,'rowsPerImage':0x708},[0xe10,0x708,0x32]);});});var _0x77b000=this[_0x299c6a(0x44b)][_0x299c6a(0x2e5)]({'magFilter':_0x299c6a(0x361),'minFilter':_0x299c6a(0x361),'mipmapFilter':'linear','maxAnisotropy':0x1}),_0x5d418d=(this[_0x299c6a(0x358)]=this[_0x299c6a(0x44b)][_0x299c6a(0x2b2)]({'size':0x4*this[_0x299c6a(0x21f)][_0x299c6a(0x320)],'usage':GPUBufferUsage['UNIFORM']|GPUBufferUsage[_0x299c6a(0x20e)]}),this['device'][_0x299c6a(0x288)]({'entries':[{'binding':0x0,'visibility':GPUShaderStage[_0x299c6a(0x210)],'buffer':{'type':_0x299c6a(0x41d)}},{'binding':0x1,'visibility':GPUShaderStage[_0x299c6a(0x210)],'buffer':{'type':_0x299c6a(0x41d)}},{'binding':0x2,'visibility':GPUShaderStage[_0x299c6a(0x210)],'storageTexture':{'format':this[_0x299c6a(0x1f6)][_0x299c6a(0x3d4)],'access':_0x299c6a(0x2ca)}},{'binding':0x3,'visibility':GPUShaderStage[_0x299c6a(0x210)],'texture':{'sampleType':_0x299c6a(0x405),'viewDimension':_0x299c6a(0x1ad)}},{'binding':0x4,'visibility':GPUShaderStage[_0x299c6a(0x210)],'sampler':{'type':_0x299c6a(0x1bf)}}]}));this[_0x299c6a(0x246)]=this[_0x299c6a(0x44b)][_0x299c6a(0x362)]({'layout':_0x5d418d,'entries':[{'binding':0x0,'resource':{'buffer':this['volumeRender_Uniform_VmBuffer']}},{'binding':0x1,'resource':{'buffer':this[_0x299c6a(0x42c)]}},{'binding':0x2,'resource':this[_0x299c6a(0x1f6)][_0x299c6a(0x415)]()},{'binding':0x3,'resource':this[_0x299c6a(0x36c)]['createView']()},{'binding':0x4,'resource':_0x77b000}]}),this[_0x299c6a(0x267)]=this[_0x299c6a(0x44b)][_0x299c6a(0x44d)]({'layout':this['device'][_0x299c6a(0x395)]({'bindGroupLayouts':[_0x5d418d]}),'compute':{'module':this[_0x299c6a(0x44b)]['createShaderModule']({'code':_0x24a0eb[_0x299c6a(0x3fe)]+_0x3d1ff9[_0x299c6a(0x3fe)]}),'entryPoint':_0x299c6a(0x331),'constants':{}}});}[_0xe79d2f(0x1b8)](_0x5aa555){var _0x47af69=_0xe79d2f;this[_0x47af69(0x21f)][_0x47af69(0x37f)](this[_0x47af69(0x407)][_0x47af69(0x280)]),this['volumeRender_Uniform_DataView'][_0x47af69(0x37f)](this[_0x47af69(0x407)][_0x47af69(0x24b)],0x10),this[_0x47af69(0x44b)]['queue'][_0x47af69(0x40f)](this[_0x47af69(0x358)],0x0,this['volumeRender_Uniform_DataView']),_0x5aa555=_0x5aa555[_0x47af69(0x38f)]({'timestampWrites':{'querySet':this[_0x47af69(0x373)],'beginningOfPassWriteIndex':0x8,'endOfPassWriteIndex':0x9}}),(_0x5aa555['setPipeline'](this[_0x47af69(0x267)]),_0x5aa555[_0x47af69(0x2b1)](0x0,this['volumeRenderComputeBingGroup']),_0x5aa555[_0x47af69(0x270)](this['readMesh_dispatchWorkgroupsX'],this[_0x47af69(0x383)]),_0x5aa555[_0x47af69(0x1e2)]());}[_0xe79d2f(0x379)](){var _0x1bfd08=_0xe79d2f;this['streamRender_Uniform_DataView'][_0x1bfd08(0x37f)]([0xe10,0x708,0x32],0x26),this[_0x1bfd08(0x3b1)]=this[_0x1bfd08(0x44b)][_0x1bfd08(0x2b2)]({'size':0x4d3f6400,'usage':GPUBufferUsage[_0x1bfd08(0x20a)]|GPUBufferUsage[_0x1bfd08(0x20e)]}),fetch(_0x1bfd08(0x431))['then'](_0x7e3151=>{var _0x2d4717=_0x1bfd08;_0x7e3151[_0x2d4717(0x367)]()[_0x2d4717(0x1ba)](_0x532b51=>{var _0x5c485f=_0x2d4717;this[_0x5c485f(0x3b1)]['size'],_0x532b51[_0x5c485f(0x33d)],this[_0x5c485f(0x44b)][_0x5c485f(0x2c0)][_0x5c485f(0x40f)](this[_0x5c485f(0x3b1)],0x0,_0x532b51);});}),this['streamRender_Uniform_VmBuffer']=this[_0x1bfd08(0x44b)]['createBuffer']({'size':0x4*this[_0x1bfd08(0x29b)]['length'],'usage':GPUBufferUsage[_0x1bfd08(0x34c)]|GPUBufferUsage[_0x1bfd08(0x20e)]}),this[_0x1bfd08(0x3b2)]=this['device'][_0x1bfd08(0x2b2)]({'size':this[_0x1bfd08(0x319)]['width']*this[_0x1bfd08(0x319)][_0x1bfd08(0x360)]*0x4*0x4,'usage':GPUBufferUsage[_0x1bfd08(0x20a)]|GPUBufferUsage[_0x1bfd08(0x20e)]}),this[_0x1bfd08(0x30c)]=this[_0x1bfd08(0x44b)]['createBuffer']({'size':this[_0x1bfd08(0x319)]['width']*this[_0x1bfd08(0x319)][_0x1bfd08(0x360)]*0x4*0x4,'usage':GPUBufferUsage[_0x1bfd08(0x20a)]|GPUBufferUsage[_0x1bfd08(0x20e)]});var _0x17a839=this[_0x1bfd08(0x44b)][_0x1bfd08(0x288)]({'entries':[{'binding':0x0,'visibility':GPUShaderStage[_0x1bfd08(0x210)],'buffer':{'type':_0x1bfd08(0x41d)}},{'binding':0x1,'visibility':GPUShaderStage['COMPUTE'],'buffer':{'type':_0x1bfd08(0x41d)}},{'binding':0x2,'visibility':GPUShaderStage[_0x1bfd08(0x210)],'buffer':{'type':'read-only-storage'}},{'binding':0x3,'visibility':GPUShaderStage[_0x1bfd08(0x210)],'buffer':{'type':'storage'}},{'binding':0x4,'visibility':GPUShaderStage[_0x1bfd08(0x210)],'buffer':{'type':'storage'}},{'binding':0x5,'visibility':GPUShaderStage[_0x1bfd08(0x210)],'storageTexture':{'format':this['finalColor_Texture'][_0x1bfd08(0x3d4)],'access':_0x1bfd08(0x2ca)}}]});this[_0x1bfd08(0x1ee)]=this[_0x1bfd08(0x44b)][_0x1bfd08(0x362)]({'layout':_0x17a839,'entries':[{'binding':0x0,'resource':{'buffer':this[_0x1bfd08(0x34b)]}},{'binding':0x1,'resource':{'buffer':this['scene_VmBuffer']}},{'binding':0x2,'resource':{'buffer':this['streamRender_3dData_VmBuffer']}},{'binding':0x3,'resource':{'buffer':this[_0x1bfd08(0x3b2)]}},{'binding':0x4,'resource':{'buffer':this[_0x1bfd08(0x30c)]}},{'binding':0x5,'resource':this[_0x1bfd08(0x1f6)]['createView']()}]}),this[_0x1bfd08(0x23a)]=this[_0x1bfd08(0x44b)]['createComputePipeline']({'layout':this[_0x1bfd08(0x44b)][_0x1bfd08(0x395)]({'bindGroupLayouts':[_0x17a839]}),'compute':{'module':this[_0x1bfd08(0x44b)][_0x1bfd08(0x2d0)]({'code':_0x155abf['code']+_0x3d1ff9['code']+_0x2f9133[_0x1bfd08(0x3fe)]}),'entryPoint':_0x1bfd08(0x331),'constants':{}}});}[_0xe79d2f(0x3b5)](_0x496928){var _0x2588b1=_0xe79d2f;this['streamRender_Uniform_DataView']['set'](this['fig']['projectToPixelMatrix']),this[_0x2588b1(0x29b)][_0x2588b1(0x37f)](this[_0x2588b1(0x407)]['viewMatrix'],0x10),this[_0x2588b1(0x29b)][_0x2588b1(0x37f)]([0.4,0x5,0.95],0x20),this[_0x2588b1(0x2cf)][_0x2588b1(0x37f)]([0xffffffff*Math['random'](),0xffffffff*Math[_0x2588b1(0x438)](),0xffffffff*Math[_0x2588b1(0x438)]()],0x23),this[_0x2588b1(0x44b)][_0x2588b1(0x2c0)]['writeBuffer'](this[_0x2588b1(0x34b)],0x0,this['streamRender_Uniform_DataView']),_0x496928=_0x496928[_0x2588b1(0x38f)]({'timestampWrites':{'querySet':this['querySet'],'beginningOfPassWriteIndex':0x8,'endOfPassWriteIndex':0x9}}),(_0x496928[_0x2588b1(0x1f5)](this[_0x2588b1(0x23a)]),_0x496928[_0x2588b1(0x2b1)](0x0,this[_0x2588b1(0x1ee)]),_0x496928[_0x2588b1(0x270)](this[_0x2588b1(0x2f0)],this[_0x2588b1(0x383)]),_0x496928[_0x2588b1(0x1e2)]());}[_0xe79d2f(0x3f2)](){var _0x2f49eb=_0xe79d2f,_0x376cf2=this[_0x2f49eb(0x44b)]['createBindGroupLayout']({'entries':[{'binding':0x0,'visibility':GPUShaderStage[_0x2f49eb(0x271)],'sampler':{'type':'filtering'}},{'binding':0x1,'visibility':GPUShaderStage[_0x2f49eb(0x271)],'sampler':{'type':_0x2f49eb(0x457)}},{'binding':0x2,'visibility':GPUShaderStage[_0x2f49eb(0x271)],'texture':{'sampleType':'depth','viewDimension':_0x2f49eb(0x1ad)}}]}),_0x4b1ce2=(this[_0x2f49eb(0x3bd)]=this[_0x2f49eb(0x44b)][_0x2f49eb(0x362)]({'layout':_0x376cf2,'entries':[{'binding':0x0,'resource':this[_0x2f49eb(0x27c)]},{'binding':0x1,'resource':this[_0x2f49eb(0x356)]},{'binding':0x2,'resource':this[_0x2f49eb(0x2c3)]}]}),this[_0x2f49eb(0x44b)][_0x2f49eb(0x2d0)]({'code':_0x1c47bd[_0x2f49eb(0x3fe)]})),_0x376cf2=(this[_0x2f49eb(0x354)]=this[_0x2f49eb(0x44b)][_0x2f49eb(0x3b6)]({'layout':this['device'][_0x2f49eb(0x395)]({'bindGroupLayouts':[_0x376cf2]}),'vertex':{'module':_0x4b1ce2,'entryPoint':_0x2f49eb(0x2e8),'buffers':[]},'fragment':{'module':_0x4b1ce2,'entryPoint':_0x2f49eb(0x418),'targets':[{'format':this[_0x2f49eb(0x3fb)]}]},'primitive':{'topology':_0x2f49eb(0x426),'frontFace':_0x2f49eb(0x389),'cullMode':'back'}}),this[_0x2f49eb(0x44b)]['createBindGroupLayout']({'entries':[{'binding':0x0,'visibility':GPUShaderStage[_0x2f49eb(0x271)],'sampler':{'type':'filtering'}},{'binding':0x1,'visibility':GPUShaderStage[_0x2f49eb(0x271)],'sampler':{'type':_0x2f49eb(0x457)}},{'binding':0x2,'visibility':GPUShaderStage[_0x2f49eb(0x271)],'texture':{'sampleType':_0x2f49eb(0x405),'viewDimension':'2d'}}]})),_0x4b1ce2=(this[_0x2f49eb(0x2d7)]=this[_0x2f49eb(0x44b)][_0x2f49eb(0x362)]({'layout':_0x376cf2,'entries':[{'binding':0x0,'resource':this[_0x2f49eb(0x27c)]},{'binding':0x1,'resource':this['samplerNearest']},{'binding':0x2,'resource':this['finalColor_Texture'][_0x2f49eb(0x415)]()}]}),this[_0x2f49eb(0x44b)][_0x2f49eb(0x2d0)]({'code':_0xbb8b4a[_0x2f49eb(0x3fe)]})),_0x376cf2=(this[_0x2f49eb(0x394)]=this[_0x2f49eb(0x44b)][_0x2f49eb(0x3b6)]({'layout':this[_0x2f49eb(0x44b)][_0x2f49eb(0x395)]({'bindGroupLayouts':[_0x376cf2]}),'vertex':{'module':_0x4b1ce2,'entryPoint':_0x2f49eb(0x2e8),'buffers':[]},'fragment':{'module':_0x4b1ce2,'entryPoint':_0x2f49eb(0x418),'targets':[{'format':this['presentationFormat']}]},'primitive':{'topology':_0x2f49eb(0x426),'frontFace':'ccw','cullMode':'back'}}),this[_0x2f49eb(0x44b)]['createBindGroupLayout']({'entries':[{'binding':0x0,'visibility':GPUShaderStage[_0x2f49eb(0x271)],'sampler':{'type':_0x2f49eb(0x1bf)}},{'binding':0x1,'visibility':GPUShaderStage[_0x2f49eb(0x271)],'sampler':{'type':'non-filtering'}},{'binding':0x2,'visibility':GPUShaderStage[_0x2f49eb(0x271)],'texture':{'sampleType':_0x2f49eb(0x405),'viewDimension':'2d'}}]})),_0x4b1ce2=(this[_0x2f49eb(0x33e)]=this[_0x2f49eb(0x44b)][_0x2f49eb(0x362)]({'layout':_0x376cf2,'entries':[{'binding':0x0,'resource':this[_0x2f49eb(0x27c)]},{'binding':0x1,'resource':this[_0x2f49eb(0x356)]},{'binding':0x2,'resource':this[_0x2f49eb(0x1e6)][_0x2f49eb(0x3f9)]['createView']()}]}),this[_0x2f49eb(0x44b)]['createShaderModule']({'code':_0x3f7abb[_0x2f49eb(0x3fe)]})),_0x376cf2=(this[_0x2f49eb(0x281)]=this[_0x2f49eb(0x44b)][_0x2f49eb(0x3b6)]({'layout':this[_0x2f49eb(0x44b)][_0x2f49eb(0x395)]({'bindGroupLayouts':[_0x376cf2]}),'vertex':{'module':_0x4b1ce2,'entryPoint':_0x2f49eb(0x2e8),'buffers':[]},'fragment':{'module':_0x4b1ce2,'entryPoint':'frag_main','targets':[{'format':this[_0x2f49eb(0x3fb)]}]},'primitive':{'topology':'triangle-list','frontFace':_0x2f49eb(0x389),'cullMode':_0x2f49eb(0x24e)}}),this[_0x2f49eb(0x44b)]['createBindGroupLayout']({'entries':[{'binding':0x0,'visibility':GPUShaderStage[_0x2f49eb(0x271)],'sampler':{'type':_0x2f49eb(0x1bf)}},{'binding':0x1,'visibility':GPUShaderStage[_0x2f49eb(0x271)],'sampler':{'type':_0x2f49eb(0x457)}},{'binding':0x2,'visibility':GPUShaderStage[_0x2f49eb(0x271)],'texture':{'sampleType':_0x2f49eb(0x405),'viewDimension':'2d'}}]})),_0x4b1ce2=(this['renderDebugTest4BindGroup']=this['device'][_0x2f49eb(0x362)]({'layout':_0x376cf2,'entries':[{'binding':0x0,'resource':this['samplerLinear']},{'binding':0x1,'resource':this[_0x2f49eb(0x356)]},{'binding':0x2,'resource':this[_0x2f49eb(0x365)]['alpha_color_Texture']['createView']()}]}),this[_0x2f49eb(0x44b)][_0x2f49eb(0x2d0)]({'code':_0xc53e2d[_0x2f49eb(0x3fe)]}));this['renderDebugTest4Pipeline']=this[_0x2f49eb(0x44b)]['createRenderPipeline']({'layout':this['device'][_0x2f49eb(0x395)]({'bindGroupLayouts':[_0x376cf2]}),'vertex':{'module':_0x4b1ce2,'entryPoint':_0x2f49eb(0x2e8),'buffers':[]},'fragment':{'module':_0x4b1ce2,'entryPoint':_0x2f49eb(0x418),'targets':[{'format':this[_0x2f49eb(0x3fb)]}]},'primitive':{'topology':'triangle-list','frontFace':'ccw','cullMode':_0x2f49eb(0x24e)}}),this[_0x2f49eb(0x1ae)]={'colorAttachments':[{'view':this['context1'][_0x2f49eb(0x2b8)]()['createView'](),'clearValue':{'r':0x0,'g':0x0,'b':0x0,'a':0x0},'loadOp':_0x2f49eb(0x3cb),'storeOp':_0x2f49eb(0x258)}]};}['RenderDebugTest'](_0x2b3b96){var _0x334308=_0xe79d2f;this['renderDebugTestRenderPassDescriptor'][_0x334308(0x236)][0x0]['view']=this['context1'][_0x334308(0x2b8)]()[_0x334308(0x415)]();var _0x54f68a=_0x2b3b96[_0x334308(0x2a3)](this[_0x334308(0x1ae)]),_0x54f68a=(_0x54f68a[_0x334308(0x1f5)](this[_0x334308(0x354)]),_0x54f68a[_0x334308(0x2b1)](0x0,this['renderDebugTest1BindGroup']),_0x54f68a[_0x334308(0x2d9)](0x6),_0x54f68a[_0x334308(0x1e2)](),this[_0x334308(0x1ae)][_0x334308(0x236)][0x0][_0x334308(0x2bf)]=this[_0x334308(0x2dd)][_0x334308(0x2b8)]()['createView'](),_0x2b3b96['beginRenderPass'](this[_0x334308(0x1ae)])),_0x54f68a=(_0x54f68a[_0x334308(0x1f5)](this[_0x334308(0x394)]),_0x54f68a['setBindGroup'](0x0,this[_0x334308(0x2d7)]),_0x54f68a[_0x334308(0x2d9)](0x6),_0x54f68a[_0x334308(0x1e2)](),this[_0x334308(0x1ae)][_0x334308(0x236)][0x0][_0x334308(0x2bf)]=this['context3'][_0x334308(0x2b8)]()[_0x334308(0x415)](),_0x2b3b96[_0x334308(0x2a3)](this['renderDebugTestRenderPassDescriptor'])),_0x54f68a=(_0x54f68a[_0x334308(0x1f5)](this[_0x334308(0x281)]),_0x54f68a['setBindGroup'](0x0,this['renderDebugTest3BindGroup']),_0x54f68a['draw'](0x6),_0x54f68a[_0x334308(0x1e2)](),this[_0x334308(0x1ae)]['colorAttachments'][0x0][_0x334308(0x2bf)]=this[_0x334308(0x291)][_0x334308(0x2b8)]()[_0x334308(0x415)](),_0x2b3b96['beginRenderPass'](this[_0x334308(0x1ae)]));_0x54f68a[_0x334308(0x1f5)](this[_0x334308(0x3dd)]),_0x54f68a[_0x334308(0x2b1)](0x0,this['renderDebugTest4BindGroup']),_0x54f68a[_0x334308(0x2d9)](0x6),_0x54f68a['end']();}['RenderToCanvasIntend'](){var _0xcfab70=_0xe79d2f;this[_0xcfab70(0x293)]=this[_0xcfab70(0x44b)][_0xcfab70(0x2b2)]({'size':0xc,'usage':GPUBufferUsage[_0xcfab70(0x34c)]|GPUBufferUsage[_0xcfab70(0x20e)]});var _0x5b8f3a=this[_0xcfab70(0x44b)][_0xcfab70(0x288)]({'entries':[{'binding':0x0,'visibility':GPUShaderStage[_0xcfab70(0x271)],'sampler':{'type':_0xcfab70(0x1bf)}},{'binding':0x1,'visibility':GPUShaderStage[_0xcfab70(0x271)],'sampler':{'type':'non-filtering'}},{'binding':0x2,'visibility':GPUShaderStage[_0xcfab70(0x271)],'texture':{'sampleType':_0xcfab70(0x405),'viewDimension':'2d'}},{'binding':0x3,'visibility':GPUShaderStage[_0xcfab70(0x271)],'texture':{'sampleType':_0xcfab70(0x405),'viewDimension':'2d'}},{'binding':0x4,'visibility':GPUShaderStage[_0xcfab70(0x271)],'buffer':{'type':_0xcfab70(0x41d)}},{'binding':0x5,'visibility':GPUShaderStage[_0xcfab70(0x271)],'buffer':{'type':_0xcfab70(0x41d)}}]}),_0x5b8f3a=(this[_0xcfab70(0x3a0)]=this[_0xcfab70(0x44b)][_0xcfab70(0x362)]({'layout':_0x5b8f3a,'entries':[{'binding':0x0,'resource':this[_0xcfab70(0x27c)]},{'binding':0x1,'resource':this[_0xcfab70(0x356)]},{'binding':0x2,'resource':this['finalColor_Texture'][_0xcfab70(0x415)]()},{'binding':0x3,'resource':this[_0xcfab70(0x44e)][_0xcfab70(0x415)]()},{'binding':0x4,'resource':{'buffer':this[_0xcfab70(0x293)]}},{'binding':0x5,'resource':{'buffer':this[_0xcfab70(0x42c)]}}]}),this['device'][_0xcfab70(0x395)]({'bindGroupLayouts':[_0x5b8f3a]})),_0x4fc165=this[_0xcfab70(0x44b)][_0xcfab70(0x2d0)]({'code':_0x3d1ff9[_0xcfab70(0x3fe)]+_0x364b81['code']});this[_0xcfab70(0x325)]=this[_0xcfab70(0x44b)]['createRenderPipeline']({'label':_0xcfab70(0x30d),'layout':_0x5b8f3a,'vertex':{'module':_0x4fc165,'entryPoint':'vert_main','buffers':[]},'fragment':{'module':_0x4fc165,'entryPoint':_0xcfab70(0x418),'targets':[{'format':this['presentationFormat']},{'format':this[_0xcfab70(0x3fb)]}],'constants':{'canvasSizeWidth':this[_0xcfab70(0x1d8)][_0xcfab70(0x19c)],'canvasSizeHeight':this[_0xcfab70(0x1d8)][_0xcfab70(0x360)]}},'primitive':{'topology':_0xcfab70(0x426),'frontFace':'ccw','cullMode':'back'}}),this[_0xcfab70(0x294)]={'label':_0xcfab70(0x44a),'colorAttachments':[{'view':this[_0xcfab70(0x1f8)]['getCurrentTexture']()[_0xcfab70(0x415)](),'clearValue':{'r':0x0,'g':0x0,'b':0x0,'a':0x0},'loadOp':_0xcfab70(0x3cb),'storeOp':'store'},{'view':this[_0xcfab70(0x1fa)]['getCurrentTexture']()[_0xcfab70(0x415)](),'clearValue':{'r':0x0,'g':0x0,'b':0x0,'a':0x0},'loadOp':_0xcfab70(0x3cb),'storeOp':'store'}]};}['RenderToCanvas'](_0x5b3cfa){var _0x12830b=_0xe79d2f;this[_0x12830b(0x3ec)][0x0]=this[_0x12830b(0x407)][_0x12830b(0x2a0)][_0x12830b(0x35b)]['frameState']['useLogDepth']?0x1:0x0,this[_0x12830b(0x3ec)][0x1]=this[_0x12830b(0x407)][_0x12830b(0x2a0)]['scene']['context'][_0x12830b(0x1a4)][_0x12830b(0x3eb)]['x'],this[_0x12830b(0x3ec)][0x2]=this['fig'][_0x12830b(0x2a0)][_0x12830b(0x35b)][_0x12830b(0x1f8)][_0x12830b(0x1a4)][_0x12830b(0x31a)],this[_0x12830b(0x44b)][_0x12830b(0x2c0)][_0x12830b(0x40f)](this[_0x12830b(0x293)],0x0,this[_0x12830b(0x3ec)]),this[_0x12830b(0x294)][_0x12830b(0x236)][0x0][_0x12830b(0x2bf)]=this[_0x12830b(0x1f8)][_0x12830b(0x2b8)]()[_0x12830b(0x415)](),this['renderToCanvasRenderPassDescriptor']['colorAttachments'][0x1]['view']=this[_0x12830b(0x1fa)][_0x12830b(0x2b8)]()[_0x12830b(0x415)](),_0x5b3cfa=_0x5b3cfa['beginRenderPass'](this[_0x12830b(0x294)]),(_0x5b3cfa['setPipeline'](this['renderToCanvasPipeline']),_0x5b3cfa[_0x12830b(0x2b1)](0x0,this[_0x12830b(0x3a0)]),_0x5b3cfa['draw'](0x6),_0x5b3cfa[_0x12830b(0x1e2)]());}[_0xe79d2f(0x1c3)](){var _0x415c02=_0xe79d2f;this[_0x415c02(0x378)]=this[_0x415c02(0x44b)][_0x415c02(0x2b2)]({'size':0x10,'usage':GPUBufferUsage[_0x415c02(0x34c)]|GPUBufferUsage['COPY_DST']}),this['voxelRender_Indirect_VmBuffer']=this[_0x415c02(0x44b)][_0x415c02(0x2b2)]({'size':0x10,'usage':GPUBufferUsage[_0x415c02(0x20a)]|GPUBufferUsage['COPY_DST']|GPUBufferUsage[_0x415c02(0x2d4)]}),this[_0x415c02(0x44b)][_0x415c02(0x2c0)][_0x415c02(0x40f)](this[_0x415c02(0x3b7)],0x0,new Uint32Array([this['spaceTotalCount']/0xa-0xc8,0x1,0x64,0x0]));var _0x808bb=this[_0x415c02(0x44b)]['createBindGroupLayout']({'entries':[{'binding':0x0,'visibility':GPUShaderStage[_0x415c02(0x271)]|GPUShaderStage[_0x415c02(0x21b)],'buffer':{'type':'uniform'}},{'binding':0x1,'visibility':GPUShaderStage[_0x415c02(0x271)]|GPUShaderStage[_0x415c02(0x21b)],'buffer':{'type':'uniform'}},{'binding':0x2,'visibility':GPUShaderStage[_0x415c02(0x271)]|GPUShaderStage['VERTEX'],'buffer':{'type':_0x415c02(0x275)}}]}),_0x808bb=(this[_0x415c02(0x2ac)]=this['device']['createBindGroup']({'layout':_0x808bb,'entries':[{'binding':0x0,'resource':{'buffer':this['voxelRender_Uniform_VmBuffer']}},{'binding':0x1,'resource':{'buffer':this['scene_VmBuffer']}},{'binding':0x2,'resource':{'buffer':this[_0x415c02(0x2bd)]}}]}),this[_0x415c02(0x44b)][_0x415c02(0x395)]({'bindGroupLayouts':[_0x808bb]})),_0x27dae3=this[_0x415c02(0x44b)][_0x415c02(0x2d0)]({'code':_0x3d1ff9[_0x415c02(0x3fe)]+_0xfac7e0[_0x415c02(0x3fe)]}),_0x808bb={'layout':_0x808bb,'vertex':{'module':_0x27dae3,'entryPoint':'vert_main','buffers':[],'constants':{'spaceUnit':this[_0x415c02(0x256)],'lightBodiesSize':this[_0x415c02(0x31b)]}},'fragment':{'module':_0x27dae3,'entryPoint':_0x415c02(0x418),'targets':[{'format':this[_0x415c02(0x3fb)]}]},'primitive':{'topology':'point-list','frontFace':_0x415c02(0x389),'cullMode':_0x415c02(0x35f)}};this[_0x415c02(0x24c)]=this[_0x415c02(0x44b)][_0x415c02(0x3b6)](_0x808bb),this[_0x415c02(0x41b)]={'colorAttachments':[{'view':this[_0x415c02(0x1f8)][_0x415c02(0x2b8)]()['createView'](),'clearValue':{'r':0x0,'g':0x0,'b':0x0,'a':0x0},'loadOp':_0x415c02(0x3cb),'storeOp':_0x415c02(0x258)}]};}[_0xe79d2f(0x32e)](_0x49e3b4){var _0x184d4=_0xe79d2f;this[_0x184d4(0x44b)][_0x184d4(0x2c0)][_0x184d4(0x40f)](this[_0x184d4(0x378)],0x0,this[_0x184d4(0x2a9)]),this[_0x184d4(0x41b)]['colorAttachments'][0x0]['view']=this['context'][_0x184d4(0x2b8)]()[_0x184d4(0x415)](),_0x49e3b4=_0x49e3b4['beginRenderPass'](this[_0x184d4(0x41b)]),(_0x49e3b4['setPipeline'](this['voxelRenderPipeline']),_0x49e3b4['setBindGroup'](0x0,this[_0x184d4(0x2ac)]),_0x49e3b4[_0x184d4(0x414)](this[_0x184d4(0x3b7)],0x0),_0x49e3b4[_0x184d4(0x1e2)]());}[_0xe79d2f(0x326)](_0x49901a,_0x3f583d){return new Promise((_0x411ec8,_0x2bbd21)=>{var _0x57e955=a0_0x40ed,_0x33ca40;this[_0x57e955(0x3d7)]?(this[_0x57e955(0x3d7)]=!0x1,(_0x33ca40=this['device'][_0x57e955(0x3d5)]())[_0x57e955(0x329)]({'texture':this[_0x57e955(0x319)],'mipLevel':0x0,'origin':{'x':_0x49901a,'y':_0x3f583d},'aspect':_0x57e955(0x300)},{'buffer':this[_0x57e955(0x1f1)],'offset':0x0,'bytesPerRow':0x100*Math[_0x57e955(0x228)](0x4*this[_0x57e955(0x319)][_0x57e955(0x19c)]/0x100),'rowsPerImage':0x1},{'width':0x1,'height':0x1}),this['device']['queue']['submit']([_0x33ca40[_0x57e955(0x443)]()]),this[_0x57e955(0x1f1)][_0x57e955(0x2c1)](GPUMapMode[_0x57e955(0x1d6)])['then'](()=>{var _0x1f4958=_0x57e955,_0x2ef775=this[_0x1f4958(0x1f1)][_0x1f4958(0x33b)](0x0,0x4),_0x2ef775=new Uint32Array(_0x2ef775)[0x0];this[_0x1f4958(0x1f1)]['unmap'](),this['readPickId_noLocking']=!0x0,_0x411ec8(_0x2ef775);})):_0x2bbd21();});}[_0xe79d2f(0x29d)](_0x223d59,_0x1532c0){let _0x7cebe8=(_0x47ac7e,_0xf72bf3)=>{var _0x3940ef=a0_0x40ed,_0xc3c3c0=this[_0x3940ef(0x44b)][_0x3940ef(0x3d5)]();_0xc3c3c0[_0x3940ef(0x329)]({'texture':this[_0x3940ef(0x44e)],'mipLevel':0x0,'origin':{'x':_0x223d59,'y':_0x1532c0},'aspect':_0x3940ef(0x300)},{'buffer':this['readPickPosition_VmBuffer'],'offset':0x0,'bytesPerRow':0x100*Math[_0x3940ef(0x228)](0x4*this[_0x3940ef(0x44e)][_0x3940ef(0x19c)]*0x4/0x100),'rowsPerImage':0x1},{'width':0x1,'height':0x1}),this['device'][_0x3940ef(0x2c0)][_0x3940ef(0x27b)]([_0xc3c3c0[_0x3940ef(0x443)]()]),this['readPickPosition_VmBuffer'][_0x3940ef(0x2c1)](GPUMapMode[_0x3940ef(0x1d6)])[_0x3940ef(0x1ba)](()=>{var _0x53d92c=_0x3940ef,_0x27d993=this[_0x53d92c(0x306)][_0x53d92c(0x33b)](0x0,0x10),_0x27d993=Array[_0x53d92c(0x41a)](new Float32Array(_0x27d993));this[_0x53d92c(0x306)][_0x53d92c(0x1e4)](),this['readPickPosition_noLocking']=!0x0,0x0!=_0x27d993[0x3]&&_0x11221[_0x53d92c(0x3db)](_0x27d993,this[_0x53d92c(0x407)][_0x53d92c(0x38e)],this[_0x53d92c(0x3d3)]),_0x47ac7e(this['lastPickPositionValue']);});};return new Promise((_0xd7bcd6,_0x434cd0)=>{var _0x159686=a0_0x40ed;this[_0x159686(0x345)]?(this[_0x159686(0x345)]=!0x1,_0x7cebe8(_0xd7bcd6)):setTimeout(()=>{_0x7cebe8(_0xd7bcd6);},0xa);});}[_0xe79d2f(0x303)](){var _0xf9ba43=_0xe79d2f,_0x416a86;this[_0xf9ba43(0x368)]&&this['fig']['directData_Heartbeat']&&(this[_0xf9ba43(0x368)]=!0x1,this[_0xf9ba43(0x407)][_0xf9ba43(0x25e)]=!0x1,(_0x416a86=this['device'][_0xf9ba43(0x3d5)]())[_0xf9ba43(0x391)](this[_0xf9ba43(0x420)],0x0,this[_0xf9ba43(0x314)],0x0,0x4),this[_0xf9ba43(0x45d)](_0x416a86),_0x416a86[_0xf9ba43(0x391)](this['instancesArea_atomicData_VmBuffer'],0x0,this[_0xf9ba43(0x22c)],0x0,0x4),_0x416a86[_0xf9ba43(0x391)](this[_0xf9ba43(0x3d9)],0x0,this[_0xf9ba43(0x22c)],0x4,this[_0xf9ba43(0x3d9)][_0xf9ba43(0x25d)]),this['device']['queue'][_0xf9ba43(0x27b)]([_0x416a86[_0xf9ba43(0x443)]()]),this['pendingRequest_mesh_read_VmBuffer'][_0xf9ba43(0x2c1)](GPUMapMode['READ'])[_0xf9ba43(0x1ba)](()=>{var _0x1cb78b=_0xf9ba43,_0x317ec3=this[_0x1cb78b(0x22c)][_0x1cb78b(0x33b)](0x0,this[_0x1cb78b(0x22c)]['size'])[_0x1cb78b(0x2c8)](0x0);this['fig'][_0x1cb78b(0x42b)]['postMessage']({'msgType':_0x1cb78b(0x42f),'buf':_0x317ec3},[_0x317ec3]),this[_0x1cb78b(0x22c)]['unmap'](),this[_0x1cb78b(0x368)]=!0x0,setTimeout(()=>{this['need_read_renderMaterial']=!0x0;},0x1f4);}));}[_0xe79d2f(0x2f4)](){var _0x5dbac5=_0xe79d2f,_0x4dc235=this[_0x5dbac5(0x44b)][_0x5dbac5(0x3d5)]();_0x4dc235['copyBufferToBuffer'](this['zeroVmBuffer'],0x0,this['meshRender_transparentColorData_VmBuffer'],0x0,this[_0x5dbac5(0x239)][_0x5dbac5(0x25d)]),this[_0x5dbac5(0x44b)][_0x5dbac5(0x2c0)][_0x5dbac5(0x27b)]([_0x4dc235[_0x5dbac5(0x443)]()]);}[_0xe79d2f(0x3df)](){var _0x1b6d60=_0xe79d2f;this[_0x1b6d60(0x303)]();var _0x22fad6=this[_0x1b6d60(0x44b)][_0x1b6d60(0x3d5)]();this[_0x1b6d60(0x1ce)](_0x22fad6),this[_0x1b6d60(0x3ab)](_0x22fad6),this[_0x1b6d60(0x219)](_0x22fad6),this[_0x1b6d60(0x407)]['gi']&&this[_0x1b6d60(0x338)](_0x22fad6),_0x22fad6['copyBufferToBuffer'](this[_0x1b6d60(0x420)],0x0,this[_0x1b6d60(0x25c)],0x0,this[_0x1b6d60(0x25c)][_0x1b6d60(0x25d)]),this[_0x1b6d60(0x2d5)](_0x22fad6),this[_0x1b6d60(0x3c5)]&&this[_0x1b6d60(0x407)]['kj']&&_0x22fad6[_0x1b6d60(0x391)](this[_0x1b6d60(0x3b2)],0x0,this[_0x1b6d60(0x1cb)],0x0,0x80),this[_0x1b6d60(0x3e8)]&&this[_0x1b6d60(0x407)][_0x1b6d60(0x282)]&&_0x22fad6[_0x1b6d60(0x391)](this['lightInfo_VmBuffer'],0x20,this['readTemp_VmBuffer2'],0x0,0x40),this[_0x1b6d60(0x328)]&&this[_0x1b6d60(0x3ba)]&&_0x22fad6[_0x1b6d60(0x391)](this[_0x1b6d60(0x398)],0x0,this['renderMaterial_read_VmBuffer'],0x0,this[_0x1b6d60(0x398)][_0x1b6d60(0x25d)]),this[_0x1b6d60(0x1e6)]['Render'](_0x22fad6),this[_0x1b6d60(0x365)][_0x1b6d60(0x3df)](_0x22fad6),globalThis[_0x1b6d60(0x24d)]&&this[_0x1b6d60(0x3cd)](_0x22fad6),this['fig'][_0x1b6d60(0x2a0)]?this[_0x1b6d60(0x1d1)](_0x22fad6):this[_0x1b6d60(0x2ae)](_0x22fad6),this[_0x1b6d60(0x407)]['ksh']&&this[_0x1b6d60(0x32e)](_0x22fad6),this[_0x1b6d60(0x2c6)]&&this['fig']['xn']&&(_0x22fad6[_0x1b6d60(0x323)](this[_0x1b6d60(0x373)],0x0,0xa,this[_0x1b6d60(0x2b4)],0x0),_0x22fad6['copyBufferToBuffer'](this[_0x1b6d60(0x2b4)],0x0,this['timestampQueryResultBuffer'],0x0,this['timestampQueryResultBuffer']['size'])),this[_0x1b6d60(0x44b)][_0x1b6d60(0x2c0)][_0x1b6d60(0x27b)]([_0x22fad6[_0x1b6d60(0x443)]()]),this[_0x1b6d60(0x328)]&&this['need_read_renderMaterial']&&(this[_0x1b6d60(0x328)]=!0x1,this[_0x1b6d60(0x3ba)]=!0x1,this[_0x1b6d60(0x42a)]['mapAsync'](GPUMapMode[_0x1b6d60(0x1d6)])[_0x1b6d60(0x1ba)](()=>{var _0x2cd638=_0x1b6d60,_0x5cf2ba=this[_0x2cd638(0x42a)][_0x2cd638(0x33b)](0x0,this[_0x2cd638(0x398)][_0x2cd638(0x25d)])['slice'](0x0);this[_0x2cd638(0x42a)][_0x2cd638(0x1e4)](),this[_0x2cd638(0x407)][_0x2cd638(0x42b)][_0x2cd638(0x234)]({'msgType':_0x2cd638(0x45b),'buf':_0x5cf2ba},[_0x5cf2ba]),this['allow_read_renderMaterial']=!0x0;})),this[_0x1b6d60(0x3c5)]&&this[_0x1b6d60(0x407)]['kj']&&(this[_0x1b6d60(0x407)]['kj']=!0x1,this[_0x1b6d60(0x3c5)]=!0x1,this['readTemp_VmBuffer'][_0x1b6d60(0x2c1)](GPUMapMode[_0x1b6d60(0x1d6)])[_0x1b6d60(0x1ba)](()=>{var _0x9ec282=_0x1b6d60,_0xde53df=this[_0x9ec282(0x1cb)][_0x9ec282(0x33b)](0x0,0x80),_0xde53df=new Float32Array(_0xde53df);console[_0x9ec282(0x33a)](_0xde53df),this[_0x9ec282(0x1cb)][_0x9ec282(0x1e4)](),this[_0x9ec282(0x3c5)]=!0x0;})),this[_0x1b6d60(0x3e8)]&&this[_0x1b6d60(0x407)][_0x1b6d60(0x282)]&&(this['readTemp_noLocking2']=!0x1,this[_0x1b6d60(0x3bf)]['mapAsync'](GPUMapMode[_0x1b6d60(0x1d6)])['then'](()=>{var _0x3a971f=_0x1b6d60,_0x48dfa0=this[_0x3a971f(0x3bf)][_0x3a971f(0x33b)](0x0,0xa00000),_0x48dfa0=(new Uint32Array(_0x48dfa0),new Float32Array(_0x48dfa0));console[_0x3a971f(0x33a)](_0x48dfa0),this['readTemp_VmBuffer2'][_0x3a971f(0x1e4)](),this[_0x3a971f(0x3e8)]=!0x0;})),this[_0x1b6d60(0x2c6)]&&this[_0x1b6d60(0x407)]['xn']&&(this[_0x1b6d60(0x2c6)]=!0x1,this[_0x1b6d60(0x273)][_0x1b6d60(0x2c1)](GPUMapMode[_0x1b6d60(0x1d6)])[_0x1b6d60(0x1ba)](()=>{var _0x2a9916=_0x1b6d60,_0x39d79e=new BigUint64Array(this[_0x2a9916(0x273)][_0x2a9916(0x33b)]());console[_0x2a9916(0x33a)](_0x2a9916(0x1a5),(Number(_0x39d79e[0x1]-_0x39d79e[0x0])/0x3e8/0x3e8)[_0x2a9916(0x3ae)](0x2),_0x2a9916(0x286),(Number(_0x39d79e[0x3]-_0x39d79e[0x2])/0x3e8/0x3e8)[_0x2a9916(0x3ae)](0x2),'\x20\x20\x20\x20MeshRender',(Number(_0x39d79e[0x5]-_0x39d79e[0x4])/0x3e8/0x3e8)[_0x2a9916(0x3ae)](0x2),_0x2a9916(0x3de),(Number(_0x39d79e[0x7]-_0x39d79e[0x6])/0x3e8/0x3e8)[_0x2a9916(0x3ae)](0x2),_0x2a9916(0x429),(Number(_0x39d79e[0x9]-_0x39d79e[0x8])/0x3e8/0x3e8)[_0x2a9916(0x3ae)](0x2)),this[_0x2a9916(0x273)][_0x2a9916(0x1e4)](),this[_0x2a9916(0x2c6)]=!0x0;}));}}class _0x22ab42{get[_0xe79d2f(0x416)](){var _0x13552c=_0xe79d2f;return this[_0x13552c(0x34d)];}set[_0xe79d2f(0x416)](_0x5ae99d){var _0xe130b2=_0xe79d2f;this[_0xe130b2(0x34d)]=_0x11221[_0xe130b2(0x2f8)](_0x5ae99d);}get[_0xe79d2f(0x2d3)](){return this['_target'];}set[_0xe79d2f(0x2d3)](_0x1d6ca1){var _0x537cab=_0xe79d2f;this[_0x537cab(0x232)]=_0x11221[_0x537cab(0x2f8)](_0x1d6ca1);}get[_0xe79d2f(0x31c)](){var _0x377abc=_0xe79d2f,_0x1ffd08=_0x11221[_0x377abc(0x299)](0x0,0x0,-0x1);return _0x11221[_0x377abc(0x322)](_0x1ffd08,this[_0x377abc(0x45c)]);}constructor(_0x4c2f02,_0x2f5daa){var _0x50ff2d=_0xe79d2f;if(this[_0x50ff2d(0x34d)]=_0x11221[_0x50ff2d(0x327)](0x0,0x0,0x0),this[_0x50ff2d(0x232)]=_0x11221[_0x50ff2d(0x327)](0x1,0x1,0x1),this[_0x50ff2d(0x45c)]=_0x28d774[_0x50ff2d(0x272)](),this['worldMatrix']=_0x4ec6f9[_0x50ff2d(0x272)](),this[_0x50ff2d(0x3b4)]=0.2,this['zoomSpeed']=0x3,this[_0x50ff2d(0x1dc)]=0.1,this[_0x50ff2d(0x3b9)]={'keyboard':{'forward':!0x1,'backward':!0x1,'left':!0x1,'right':!0x1,'up':!0x1,'down':!0x1,'leftRoll':!0x1,'rightRoll':!0x1,'leftHeading':!0x1,'rightHeading':!0x1,'upPitch':!0x1,'downPitch':!0x1,'controlLeft':!0x1,'shiftLeft':!0x1,'speedUp':!0x1,'speedDown':!0x1},'mouse':{'movementX':0x0,'movementY':0x0,'scroll':0x0,'left':!0x1,'right':!0x1,'wheel':!0x1,'button':0x0,'downLeftX':0x0,'downLeftY':0x0,'upLeftX':0x0,'upLeftY':0x0,'downRightX':0x0,'downRightY':0x0,'upRightX':0x0,'upRightY':0x0,'clientX':0x0,'clientY':0x0},'downLeft_position':_0x11221[_0x50ff2d(0x327)](),'upLeft_position':_0x11221[_0x50ff2d(0x327)]()},_0x4c2f02){let _0x16b895=(_0x9cb283,_0x41b3b1)=>{var _0x5499a8=_0x50ff2d;switch(_0x9cb283[_0x5499a8(0x3fe)]){case'KeyW':this['status'][_0x5499a8(0x209)][_0x5499a8(0x350)]=_0x41b3b1,_0x9cb283[_0x5499a8(0x448)](),_0x9cb283[_0x5499a8(0x205)]();break;case _0x5499a8(0x330):this[_0x5499a8(0x3b9)]['keyboard'][_0x5499a8(0x421)]=_0x41b3b1,_0x9cb283[_0x5499a8(0x448)](),_0x9cb283['stopPropagation']();break;case _0x5499a8(0x442):this[_0x5499a8(0x3b9)][_0x5499a8(0x209)]['left']=_0x41b3b1,_0x9cb283[_0x5499a8(0x448)](),_0x9cb283['stopPropagation']();break;case'KeyD':this[_0x5499a8(0x3b9)][_0x5499a8(0x209)][_0x5499a8(0x40a)]=_0x41b3b1,_0x9cb283['preventDefault'](),_0x9cb283[_0x5499a8(0x205)]();break;case _0x5499a8(0x2f3):this[_0x5499a8(0x3b9)][_0x5499a8(0x209)]['up']=_0x41b3b1,_0x9cb283[_0x5499a8(0x448)](),_0x9cb283[_0x5499a8(0x205)]();break;case _0x5499a8(0x357):this['status'][_0x5499a8(0x209)]['down']=_0x41b3b1,_0x9cb283[_0x5499a8(0x448)](),_0x9cb283[_0x5499a8(0x205)]();break;case _0x5499a8(0x385):this[_0x5499a8(0x3b9)][_0x5499a8(0x209)][_0x5499a8(0x422)]=_0x41b3b1,_0x9cb283['preventDefault'](),_0x9cb283['stopPropagation']();break;case'KeyO':this[_0x5499a8(0x3b9)][_0x5499a8(0x209)][_0x5499a8(0x2b5)]=_0x41b3b1,_0x9cb283[_0x5499a8(0x448)](),_0x9cb283[_0x5499a8(0x205)]();break;case _0x5499a8(0x1be):case _0x5499a8(0x3ff):this[_0x5499a8(0x3b9)][_0x5499a8(0x209)][_0x5499a8(0x1ab)]=_0x41b3b1,_0x9cb283['preventDefault'](),_0x9cb283[_0x5499a8(0x205)]();break;case'KeyK':case _0x5499a8(0x252):this[_0x5499a8(0x3b9)][_0x5499a8(0x209)][_0x5499a8(0x425)]=_0x41b3b1,_0x9cb283[_0x5499a8(0x448)](),_0x9cb283['stopPropagation']();break;case _0x5499a8(0x43e):case _0x5499a8(0x214):this[_0x5499a8(0x3b9)][_0x5499a8(0x209)][_0x5499a8(0x305)]=_0x41b3b1,_0x9cb283[_0x5499a8(0x448)](),_0x9cb283[_0x5499a8(0x205)]();break;case _0x5499a8(0x1b2):case _0x5499a8(0x207):this[_0x5499a8(0x3b9)][_0x5499a8(0x209)][_0x5499a8(0x35d)]=_0x41b3b1,_0x9cb283['preventDefault'](),_0x9cb283['stopPropagation']();break;case'ControlLeft':this[_0x5499a8(0x3b9)]['keyboard'][_0x5499a8(0x1ff)]=_0x41b3b1;break;case _0x5499a8(0x3ca):this['status'][_0x5499a8(0x209)][_0x5499a8(0x1de)]=_0x41b3b1;break;case'KeyC':this[_0x5499a8(0x3b9)][_0x5499a8(0x209)][_0x5499a8(0x28b)]=_0x41b3b1;break;case _0x5499a8(0x1d0):this['status']['keyboard'][_0x5499a8(0x406)]=_0x41b3b1;}},_0x1d9c6b=(window[_0x50ff2d(0x321)](_0x50ff2d(0x1f3),_0x5bdc52=>_0x16b895(_0x5bdc52,!0x0)),window[_0x50ff2d(0x321)]('keyup',_0x2225d5=>_0x16b895(_0x2225d5,!0x1)),_0x4c2f02[_0x50ff2d(0x321)]('contextmenu',function(_0x284232){var _0x56fc6f=_0x50ff2d;_0x284232[_0x56fc6f(0x448)]();}),(_0x24bb58,_0x43ebb7)=>{var _0x1fa464=_0x50ff2d;switch(this['status'][_0x1fa464(0x1c2)][_0x1fa464(0x3dc)]=_0x24bb58[_0x1fa464(0x3dc)],_0x24bb58['button']){case 0x0:(this[_0x1fa464(0x3b9)][_0x1fa464(0x1c2)][_0x1fa464(0x3e3)]=_0x43ebb7)?(this[_0x1fa464(0x3b9)][_0x1fa464(0x1c2)][_0x1fa464(0x2cb)]=_0x24bb58['clientX'],this[_0x1fa464(0x3b9)][_0x1fa464(0x1c2)][_0x1fa464(0x2a7)]=_0x24bb58['clientY'],_0x2f5daa[_0x1fa464(0x241)](_0x24bb58[_0x1fa464(0x1fb)],_0x24bb58[_0x1fa464(0x30f)])[_0x1fa464(0x1ba)](_0x5c2529=>{var _0x457772=_0x1fa464,_0x2a9fb9;this[_0x457772(0x3b9)][_0x457772(0x1a0)]=_0x11221[_0x457772(0x327)](_0x5c2529[0x0],_0x5c2529[0x1],_0x5c2529[0x2]),0x0!=_0x5c2529[0x0]&&0x0!=_0x5c2529[0x1]&&0x0!=_0x5c2529[0x2]&&this['status']['keyboard'][_0x457772(0x1ff)]&&(_0x5c2529=this[_0x457772(0x3b9)][_0x457772(0x1a0)],_0x2a9fb9=_0x11221['subtract'](this['position'],_0x5c2529),_0x11221['normalize'](_0x2a9fb9,_0x2a9fb9),_0x2a9fb9=_0x11221['add'](_0x5c2529,_0x11221[_0x457772(0x2c4)](_0x2a9fb9,0x14)),this['setTargetAndPosition'](_0x5c2529,_0x2a9fb9));})):(this['status'][_0x1fa464(0x1c2)][_0x1fa464(0x1a8)]=_0x24bb58['clientX'],this['status'][_0x1fa464(0x1c2)][_0x1fa464(0x370)]=_0x24bb58['clientY'],_0x2f5daa[_0x1fa464(0x241)](_0x24bb58[_0x1fa464(0x1fb)],_0x24bb58['clientY'])['then'](_0xce741e=>{var _0x4fd4cb=_0x1fa464;this[_0x4fd4cb(0x3b9)][_0x4fd4cb(0x1b4)]=_0x11221[_0x4fd4cb(0x327)](_0xce741e[0x0],_0xce741e[0x1],_0xce741e[0x2]),0x0!=this[_0x4fd4cb(0x3b9)]['downLeft_position'][0x0]&&0x0!=this[_0x4fd4cb(0x3b9)][_0x4fd4cb(0x1a0)][0x1]&&0x0!=this[_0x4fd4cb(0x3b9)][_0x4fd4cb(0x1a0)][0x2]&&0x0!=this[_0x4fd4cb(0x3b9)]['upLeft_position'][0x0]&&0x0!=this[_0x4fd4cb(0x3b9)][_0x4fd4cb(0x1b4)][0x1]&&0x0!=this[_0x4fd4cb(0x3b9)]['upLeft_position'][0x2]&&(_0x11221[_0x4fd4cb(0x259)](this[_0x4fd4cb(0x34d)],_0x11221[_0x4fd4cb(0x259)](this[_0x4fd4cb(0x3b9)]['upLeft_position'],this[_0x4fd4cb(0x3b9)]['downLeft_position']),this[_0x4fd4cb(0x34d)]),this['computeMatrix']());}));break;case 0x1:this[_0x1fa464(0x3b9)][_0x1fa464(0x1c2)][_0x1fa464(0x1cc)]=_0x43ebb7;break;case 0x2:(this['status'][_0x1fa464(0x1c2)]['right']=_0x43ebb7)?(this[_0x1fa464(0x3b9)][_0x1fa464(0x1c2)]['downRightX']=_0x24bb58['clientX'],this[_0x1fa464(0x3b9)][_0x1fa464(0x1c2)][_0x1fa464(0x20c)]=_0x24bb58[_0x1fa464(0x30f)],_0x2f5daa[_0x1fa464(0x241)](_0x24bb58[_0x1fa464(0x1fb)],_0x24bb58[_0x1fa464(0x30f)])[_0x1fa464(0x1ba)](_0x4a987b=>{var _0x356858=_0x1fa464;0x0!=_0x4a987b[0x0]&&0x0!=_0x4a987b[0x1]&&0x0!=_0x4a987b[0x2]&&(this[_0x356858(0x2d3)]=_0x11221['create'](_0x4a987b[0x0],_0x4a987b[0x1],_0x4a987b[0x2]));})):(this[_0x1fa464(0x3b9)][_0x1fa464(0x1c2)]['upRightX']=_0x24bb58[_0x1fa464(0x1fb)],this[_0x1fa464(0x3b9)][_0x1fa464(0x1c2)][_0x1fa464(0x31e)]=_0x24bb58[_0x1fa464(0x30f)]);}});_0x4c2f02[_0x50ff2d(0x377)][_0x50ff2d(0x253)]=_0x50ff2d(0x218),_0x4c2f02[_0x50ff2d(0x321)](_0x50ff2d(0x3ee),_0x413ba1=>_0x1d9c6b(_0x413ba1,!0x0)),_0x4c2f02['addEventListener'](_0x50ff2d(0x3e2),_0x3ab87e=>_0x1d9c6b(_0x3ab87e,!0x1)),_0x4c2f02[_0x50ff2d(0x321)](_0x50ff2d(0x3cc),_0x5dd4fd=>{var _0x1b798f=_0x50ff2d;this[_0x1b798f(0x3b9)][_0x1b798f(0x1c2)][_0x1b798f(0x1fb)]=_0x5dd4fd['clientX'],this[_0x1b798f(0x3b9)]['mouse'][_0x1b798f(0x30f)]=_0x5dd4fd[_0x1b798f(0x30f)],(this[_0x1b798f(0x3b9)][_0x1b798f(0x1c2)][_0x1b798f(0x3e3)]||this[_0x1b798f(0x3b9)][_0x1b798f(0x1c2)]['right'])&&(this[_0x1b798f(0x3b9)][_0x1b798f(0x1c2)][_0x1b798f(0x374)]-=_0x5dd4fd[_0x1b798f(0x374)],this[_0x1b798f(0x3b9)][_0x1b798f(0x1c2)][_0x1b798f(0x2f5)]-=_0x5dd4fd[_0x1b798f(0x2f5)]);}),_0x4c2f02[_0x50ff2d(0x321)](_0x50ff2d(0x1cc),_0x1862aa=>{var _0x5141c8=_0x50ff2d;this[_0x5141c8(0x3b9)][_0x5141c8(0x1c2)]['scroll']+=Math[_0x5141c8(0x1d5)](_0x1862aa['deltaY']),_0x1862aa[_0x5141c8(0x448)](),_0x1862aa[_0x5141c8(0x205)]();},{'passive':!0x1});}}[_0xe79d2f(0x437)](_0x40bc78,_0x5ea496,_0x5cd6fd=_0x11221['create'](0x0,0x1,0x0)){var _0xc2aca6=_0xe79d2f;_0x11221[_0xc2aca6(0x2f8)](_0x40bc78,this[_0xc2aca6(0x232)]),_0x11221[_0xc2aca6(0x2f8)](_0x5ea496,this[_0xc2aca6(0x34d)]);var _0x5ea496=_0x11221['normalize'](_0x11221[_0xc2aca6(0x259)](_0x5ea496,_0x40bc78)),_0x40bc78=_0x11221[_0xc2aca6(0x299)](0x0,0x0,0x1),_0x40bc78=(this[_0xc2aca6(0x45c)]=_0x28d774['rotationTo'](_0x40bc78,_0x5ea496),_0x11221[_0xc2aca6(0x322)](_0x11221[_0xc2aca6(0x299)](0x0,0x1,0x0),this[_0xc2aca6(0x45c)])),_0x5ea496=_0x11221[_0xc2aca6(0x21e)](_0x40bc78,_0x5cd6fd);1e-7<_0x11221['length'](_0x5ea496)&&(_0x40bc78=Math[_0xc2aca6(0x311)](_0x11221['dot'](_0x40bc78,_0x5cd6fd)),_0x5cd6fd=_0x28d774['fromAxisAngle'](_0x11221[_0xc2aca6(0x43d)](_0x5ea496),_0x40bc78),this[_0xc2aca6(0x45c)]=_0x28d774[_0xc2aca6(0x285)](_0x5cd6fd,this[_0xc2aca6(0x45c)])),this[_0xc2aca6(0x238)]();}['update'](_0x1eb4c3){var _0x36b2b6=_0xe79d2f,_0x4ad98d,_0x5ce44c=_0x11221[_0x36b2b6(0x322)](_0x11221[_0x36b2b6(0x299)](0x1,0x0,0x0),this['orientation']),_0x11fc96=_0x11221[_0x36b2b6(0x322)](_0x11221[_0x36b2b6(0x299)](0x0,0x1,0x0),this[_0x36b2b6(0x45c)]),_0x432484=_0x11221[_0x36b2b6(0x322)](_0x11221[_0x36b2b6(0x299)](0x0,0x0,0x1),this[_0x36b2b6(0x45c)]);0x0===this[_0x36b2b6(0x3b9)][_0x36b2b6(0x1c2)][_0x36b2b6(0x374)]&&0x0===this[_0x36b2b6(0x3b9)][_0x36b2b6(0x1c2)][_0x36b2b6(0x2f5)]||(0x2===this[_0x36b2b6(0x3b9)]['mouse'][_0x36b2b6(0x3dc)]?(_0x4ad98d=this[_0x36b2b6(0x3b9)]['mouse']['movementX']*this[_0x36b2b6(0x3b4)]*_0x1eb4c3,_0x1eb4c3=this[_0x36b2b6(0x3b9)][_0x36b2b6(0x1c2)][_0x36b2b6(0x2f5)]*this['rotationSpeed']*_0x1eb4c3,_0x1eb4c3=_0x28d774['fromAxisAngle'](_0x5ce44c,_0x1eb4c3),_0x4ad98d=_0x28d774[_0x36b2b6(0x3e5)](_0x11fc96,_0x4ad98d),_0x1eb4c3=_0x28d774[_0x36b2b6(0x285)](_0x1eb4c3,_0x4ad98d),_0x4ad98d=_0x11221[_0x36b2b6(0x259)](this['_position'],this[_0x36b2b6(0x232)]),_0x4ad98d=_0x11221['transformQuat'](_0x4ad98d,_0x1eb4c3),_0x11221['add'](this[_0x36b2b6(0x232)],_0x4ad98d,this[_0x36b2b6(0x34d)]),this[_0x36b2b6(0x45c)]=_0x28d774[_0x36b2b6(0x285)](_0x1eb4c3,this[_0x36b2b6(0x45c)])):this[_0x36b2b6(0x3b9)]['mouse'][_0x36b2b6(0x3dc)]),0x0!==this['status'][_0x36b2b6(0x1c2)][_0x36b2b6(0x240)]&&(_0x4ad98d=this['status'][_0x36b2b6(0x1c2)][_0x36b2b6(0x240)]*this[_0x36b2b6(0x29e)],_0x11221[_0x36b2b6(0x3db)](this[_0x36b2b6(0x34d)],_0x11221[_0x36b2b6(0x2c4)](_0x432484,_0x4ad98d),this[_0x36b2b6(0x34d)])),this[_0x36b2b6(0x3b9)][_0x36b2b6(0x209)]['up']&&_0x11221[_0x36b2b6(0x3db)](this[_0x36b2b6(0x34d)],_0x11221[_0x36b2b6(0x2c4)](_0x11fc96,this[_0x36b2b6(0x3b9)][_0x36b2b6(0x209)]['shiftLeft']?0x4*this[_0x36b2b6(0x1dc)]:this[_0x36b2b6(0x1dc)]),this[_0x36b2b6(0x34d)]),this[_0x36b2b6(0x3b9)]['keyboard'][_0x36b2b6(0x428)]&&_0x11221['add'](this[_0x36b2b6(0x34d)],_0x11221['scale'](_0x11fc96,-(this[_0x36b2b6(0x3b9)][_0x36b2b6(0x209)][_0x36b2b6(0x1de)]?0x4*this[_0x36b2b6(0x1dc)]:this[_0x36b2b6(0x1dc)])),this['_position']),this[_0x36b2b6(0x3b9)][_0x36b2b6(0x209)][_0x36b2b6(0x3e3)]&&_0x11221[_0x36b2b6(0x3db)](this['_position'],_0x11221[_0x36b2b6(0x2c4)](_0x5ce44c,-(this['status']['keyboard'][_0x36b2b6(0x1de)]?0x4*this[_0x36b2b6(0x1dc)]:this[_0x36b2b6(0x1dc)])),this[_0x36b2b6(0x34d)]),this[_0x36b2b6(0x3b9)][_0x36b2b6(0x209)][_0x36b2b6(0x40a)]&&_0x11221[_0x36b2b6(0x3db)](this[_0x36b2b6(0x34d)],_0x11221[_0x36b2b6(0x2c4)](_0x5ce44c,this[_0x36b2b6(0x3b9)]['keyboard'][_0x36b2b6(0x1de)]?0x4*this[_0x36b2b6(0x1dc)]:this[_0x36b2b6(0x1dc)]),this[_0x36b2b6(0x34d)]),this[_0x36b2b6(0x3b9)]['keyboard'][_0x36b2b6(0x350)]&&_0x11221['add'](this['_position'],_0x11221[_0x36b2b6(0x2c4)](_0x432484,-(this[_0x36b2b6(0x3b9)][_0x36b2b6(0x209)][_0x36b2b6(0x1de)]?0x4*this[_0x36b2b6(0x1dc)]:this[_0x36b2b6(0x1dc)])),this[_0x36b2b6(0x34d)]),this['status'][_0x36b2b6(0x209)][_0x36b2b6(0x421)]&&_0x11221[_0x36b2b6(0x3db)](this[_0x36b2b6(0x34d)],_0x11221[_0x36b2b6(0x2c4)](_0x432484,this[_0x36b2b6(0x3b9)][_0x36b2b6(0x209)]['shiftLeft']?0x4*this['keyboardSpeed']:this[_0x36b2b6(0x1dc)]),this[_0x36b2b6(0x34d)]),this[_0x36b2b6(0x3b9)][_0x36b2b6(0x209)][_0x36b2b6(0x422)]&&(_0x1eb4c3=_0x28d774[_0x36b2b6(0x3e5)](_0x432484,-0.01),this[_0x36b2b6(0x45c)]=_0x28d774['multiply'](_0x1eb4c3,this[_0x36b2b6(0x45c)])),this[_0x36b2b6(0x3b9)][_0x36b2b6(0x209)][_0x36b2b6(0x2b5)]&&(_0x4ad98d=_0x28d774[_0x36b2b6(0x3e5)](_0x432484,0.01),this['orientation']=_0x28d774['multiply'](_0x4ad98d,this['orientation'])),this[_0x36b2b6(0x3b9)][_0x36b2b6(0x209)][_0x36b2b6(0x305)]&&(_0x1eb4c3=_0x28d774[_0x36b2b6(0x3e5)](_0x11fc96,0.01),this['orientation']=_0x28d774[_0x36b2b6(0x285)](_0x1eb4c3,this[_0x36b2b6(0x45c)])),this['status'][_0x36b2b6(0x209)]['rightHeading']&&(_0x432484=_0x28d774[_0x36b2b6(0x3e5)](_0x11fc96,-0.01),this[_0x36b2b6(0x45c)]=_0x28d774[_0x36b2b6(0x285)](_0x432484,this[_0x36b2b6(0x45c)])),this[_0x36b2b6(0x3b9)][_0x36b2b6(0x209)][_0x36b2b6(0x1ab)]&&(_0x4ad98d=_0x28d774[_0x36b2b6(0x3e5)](_0x5ce44c,0.01),this['orientation']=_0x28d774[_0x36b2b6(0x285)](_0x4ad98d,this[_0x36b2b6(0x45c)])),this['status'][_0x36b2b6(0x209)][_0x36b2b6(0x425)]&&(_0x1eb4c3=_0x28d774[_0x36b2b6(0x3e5)](_0x5ce44c,-0.01),this[_0x36b2b6(0x45c)]=_0x28d774[_0x36b2b6(0x285)](_0x1eb4c3,this[_0x36b2b6(0x45c)])),this['status']['keyboard'][_0x36b2b6(0x28b)]&&(this[_0x36b2b6(0x1dc)]-=0.01*this[_0x36b2b6(0x1dc)],this['keyboardSpeed']<0.01)&&(this[_0x36b2b6(0x1dc)]=0.01),this[_0x36b2b6(0x3b9)][_0x36b2b6(0x209)]['speedUp']&&(this['keyboardSpeed']*=1.01),this[_0x36b2b6(0x238)](),this['status'][_0x36b2b6(0x1c2)][_0x36b2b6(0x374)]=0x0,this['status'][_0x36b2b6(0x1c2)][_0x36b2b6(0x2f5)]=0x0,this['status'][_0x36b2b6(0x1c2)][_0x36b2b6(0x240)]=0x0;}[_0xe79d2f(0x238)](){var _0x589826=_0xe79d2f;_0x4ec6f9[_0x589826(0x446)](this[_0x589826(0x45c)],this[_0x589826(0x2f9)]),this[_0x589826(0x2f9)][0xc]=this[_0x589826(0x34d)][0x0],this[_0x589826(0x2f9)][0xd]=this[_0x589826(0x34d)][0x1],this[_0x589826(0x2f9)][0xe]=this['_position'][0x2];}}globalThis['__ser_isDev__']=!0x1;class _0x48fa1b{constructor(_0x25652b){var _0x2feed3=_0xe79d2f;if(this[_0x2feed3(0x45a)]=_0x4ec6f9,this[_0x2feed3(0x3a2)]=_0x5355af,this[_0x2feed3(0x39b)]=_0x11221,this[_0x2feed3(0x2f2)]=_0x5775e1,this[_0x2feed3(0x208)]=_0x28d774,this[_0x2feed3(0x2a5)]=0x1,this['dataCallBack']={},this['modelData']={},this[_0x2feed3(0x25e)]=!0x0,this['spaceIndex_Heartbeat']=!0x0,this['xn']=!0x1,this[_0x2feed3(0x28e)]=!0x1,this['kj']=!0x1,this['kj2']=!0x1,this['gi']=!0x1,this[_0x2feed3(0x39a)]={'type':0x1,'direction':_0x11221[_0x2feed3(0x43d)](_0x11221['create'](-0.378604181697245,0.8191225954117374,0.4309258025313624)),'color':_0x11221[_0x2feed3(0x327)](0x1,0x1,0x1)},this[_0x2feed3(0x1fd)]={'fov':0x2*Math['PI']/0x5,'aspect':0x1,'near':0.1,'far':0x3e8},this[_0x2feed3(0x42d)]=0x0,this[_0x2feed3(0x38e)]=_0x11221['create'](),this['OnInitialized']=()=>{},this[_0x2feed3(0x376)]=(_0x1af298,_0x166661)=>{},this[_0x2feed3(0x23d)]=_0x62b218=>{},this[_0x2feed3(0x3d8)]='',this[_0x2feed3(0x3ed)]='',this[_0x2feed3(0x2e1)]=Date[_0x2feed3(0x1ef)](),this[_0x2feed3(0x229)]=0x0,this['tempRL']=!0x0,this[_0x2feed3(0x1df)]=!0x1,this[_0x2feed3(0x2e9)]=new Float64Array(0x54),console[_0x2feed3(0x33a)]('ser_V20250613'),_0x25652b&&_0x25652b[_0x2feed3(0x432)]&&_0x25652b[_0x2feed3(0x3e1)]){if(this[_0x2feed3(0x3e1)]=_0x25652b[_0x2feed3(0x3e1)],this[_0x2feed3(0x2a0)]=_0x25652b[_0x2feed3(0x432)],_0x25652b['Widget']['scene']['ser'])return void console[_0x2feed3(0x1f9)](_0x2feed3(0x423));this['cesiumWidget'][_0x2feed3(0x35b)][_0x2feed3(0x22b)]=this;}this['cesiumWidget']?(this[_0x2feed3(0x440)]=new OffscreenCanvas(this[_0x2feed3(0x2a0)][_0x2feed3(0x35b)][_0x2feed3(0x440)]['width'],this[_0x2feed3(0x2a0)]['scene']['canvas'][_0x2feed3(0x360)]),this['depthCanvas']=new OffscreenCanvas(this[_0x2feed3(0x2a0)][_0x2feed3(0x35b)]['canvas'][_0x2feed3(0x19c)],this[_0x2feed3(0x2a0)][_0x2feed3(0x35b)][_0x2feed3(0x440)][_0x2feed3(0x360)]),this[_0x2feed3(0x343)]=new _0x22ab42(null,this)):(this[_0x2feed3(0x440)]=document[_0x2feed3(0x25a)](_0x2feed3(0x440)),this['canvas'][_0x2feed3(0x19c)]=0x780,this[_0x2feed3(0x440)][_0x2feed3(0x360)]=0x3ca,document[_0x2feed3(0x1c7)]['appendChild'](this[_0x2feed3(0x440)]),this[_0x2feed3(0x343)]=new _0x22ab42(this[_0x2feed3(0x440)],this),this['camera'][_0x2feed3(0x437)](_0x11221[_0x2feed3(0x327)](0x0,0x0,0x0),_0x11221[_0x2feed3(0x327)](0x0,0x64,0x0),_0x11221[_0x2feed3(0x327)](0x0,0x1,0x0))),this[_0x2feed3(0x43c)]=[],this[_0x2feed3(0x2df)]=new ArrayBuffer(0x200),this[_0x2feed3(0x1b7)]=new Float32Array(this[_0x2feed3(0x2df)]),this[_0x2feed3(0x3b8)]=new Uint32Array(this['scene_dataBuffer']),this[_0x2feed3(0x223)]=new ArrayBuffer(0x60),this[_0x2feed3(0x433)]=new Float32Array(this[_0x2feed3(0x223)]),this['lightInfo_dataViewF32'][0x0]=this[_0x2feed3(0x39a)][_0x2feed3(0x1d4)],this[_0x2feed3(0x433)][_0x2feed3(0x37f)](this['lightInfo']['direction'],0x1),this[_0x2feed3(0x433)]['set'](this[_0x2feed3(0x39a)][_0x2feed3(0x1af)],0x4),this[_0x2feed3(0x3f0)]=_0x4ec6f9[_0x2feed3(0x272)](),this[_0x2feed3(0x24b)]=_0x4ec6f9[_0x2feed3(0x272)](),this[_0x2feed3(0x346)]=_0x4ec6f9['identity'](),this[_0x2feed3(0x280)]=_0x4ec6f9[_0x2feed3(0x272)](),this['projectionViewMatrix']=_0x4ec6f9[_0x2feed3(0x272)](),this[_0x2feed3(0x400)]=_0x4ec6f9[_0x2feed3(0x272)]();let _0x46d7ef=!0x1,_0x3ee67e=(_0x2f08c3,_0x51b012)=>{var _0x1d9b73=_0x2feed3;switch(_0x2f08c3[_0x1d9b73(0x3fe)]){case _0x1d9b73(0x28a):_0x46d7ef=_0x51b012,_0x2f08c3[_0x1d9b73(0x448)](),_0x2f08c3[_0x1d9b73(0x205)]();break;case _0x1d9b73(0x27e):_0x51b012||(this[_0x1d9b73(0x1df)]=!this[_0x1d9b73(0x1df)]);}};window[_0x2feed3(0x321)](_0x2feed3(0x1f3),_0x484f55=>_0x3ee67e(_0x484f55,!0x0)),window[_0x2feed3(0x321)](_0x2feed3(0x23f),_0x28b9c7=>_0x3ee67e(_0x28b9c7,!0x1)),this[_0x2feed3(0x2be)]=new _0x18a839(this),_0x25652b=new _0x2e27fb(new URL(_0x240d83['p']+_0x240d83['u'](0x29f),_0x240d83['b'])),(this[_0x2feed3(0x42b)]=_0x25652b[_0x2feed3(0x2f7)](),this[_0x2feed3(0x42b)][_0x2feed3(0x321)](_0x2feed3(0x26e),_0x205d84=>{var _0x14e1e6=_0x2feed3;if(_0x205d84[_0x14e1e6(0x344)])switch(_0x205d84[_0x14e1e6(0x344)][_0x14e1e6(0x3e7)]){case _0x14e1e6(0x39d):this[_0x14e1e6(0x39d)][_0x205d84['data']['cbId']]?(_0x205d84[_0x14e1e6(0x344)][_0x14e1e6(0x340)](_0x14e1e6(0x392))?this['dataCallBack'][_0x205d84[_0x14e1e6(0x344)][_0x14e1e6(0x3ad)]]['resolve'](_0x205d84[_0x14e1e6(0x344)][_0x14e1e6(0x392)]):_0x205d84[_0x14e1e6(0x344)][_0x14e1e6(0x340)](_0x14e1e6(0x251))&&this[_0x14e1e6(0x39d)][_0x205d84['data'][_0x14e1e6(0x3ad)]][_0x14e1e6(0x251)](_0x205d84[_0x14e1e6(0x344)][_0x14e1e6(0x251)]),delete this['dataCallBack'][_0x205d84[_0x14e1e6(0x344)][_0x14e1e6(0x3ad)]]):globalThis[_0x14e1e6(0x234)](_0x205d84['data']);break;case _0x14e1e6(0x269):for(var _0x39c67b in _0x205d84[_0x14e1e6(0x344)][_0x14e1e6(0x200)])this['modelData'][_0x14e1e6(0x340)](_0x39c67b)?Object[_0x14e1e6(0x2d6)](this['modelData'][_0x39c67b],_0x205d84[_0x14e1e6(0x344)]['modelData'][_0x39c67b]):this[_0x14e1e6(0x200)][_0x39c67b]=_0x205d84[_0x14e1e6(0x344)][_0x14e1e6(0x200)][_0x39c67b];this[_0x14e1e6(0x1b0)](),this['OnModelServer'](_0x205d84['data'][_0x14e1e6(0x200)],_0x205d84[_0x14e1e6(0x344)][_0x14e1e6(0x455)]);break;case _0x14e1e6(0x23d):this[_0x14e1e6(0x23d)](_0x205d84[_0x14e1e6(0x344)][_0x14e1e6(0x347)]);break;case _0x14e1e6(0x230):if(_0x205d84[_0x14e1e6(0x344)]['targets']){for(var _0x7737fe of _0x205d84['data']['targets'])this[_0x14e1e6(0x2be)]['UpVmData'](_0x7737fe);}else this['renderEngine'][_0x14e1e6(0x230)](_0x205d84[_0x14e1e6(0x344)]);break;case _0x14e1e6(0x3e0):this[_0x14e1e6(0x2be)][_0x14e1e6(0x38c)](_0x205d84[_0x14e1e6(0x344)]);break;case _0x14e1e6(0x303):this[_0x14e1e6(0x2be)]['VisibleTreeUpdate']();break;case _0x14e1e6(0x2bb):this[_0x14e1e6(0x42d)]=_0x205d84[_0x14e1e6(0x344)][_0x14e1e6(0x42d)];break;case _0x14e1e6(0x245):this[_0x14e1e6(0x25e)]=!0x0;break;case _0x14e1e6(0x34f):this[_0x14e1e6(0x40c)]=!0x0;}}));}[_0xe79d2f(0x295)](){var _0x1d0071=_0xe79d2f;this[_0x1d0071(0x2be)][_0x1d0071(0x44b)][_0x1d0071(0x2c0)][_0x1d0071(0x40f)](this[_0x1d0071(0x2be)][_0x1d0071(0x369)],0x0,this['lightInfo_dataBuffer'],0x0,0x20),this[_0x1d0071(0x1fd)][_0x1d0071(0x313)]=this['canvas']['width']/this[_0x1d0071(0x440)][_0x1d0071(0x360)],this[_0x1d0071(0x34a)](),this[_0x1d0071(0x42b)]['postMessage']({'msgType':_0x1d0071(0x295),'maxTextureSize':this['renderEngine'][_0x1d0071(0x30a)],'maxPixel':this[_0x1d0071(0x2be)][_0x1d0071(0x2bc)],'meshVmMaxOffset':this[_0x1d0071(0x2be)]['meshVmBuffer'][_0x1d0071(0x25d)]/0x4}),this[_0x1d0071(0x213)](),this[_0x1d0071(0x2a0)]?this[_0x1d0071(0x2fd)]():this[_0x1d0071(0x221)]();}[_0xe79d2f(0x263)](_0xee8c9){var _0x64f4e9=_0xe79d2f;_0xee8c9[_0x64f4e9(0x250)]('/')!==_0xee8c9[_0x64f4e9(0x320)]-0x1&&(_0xee8c9+='/');var _0x10f543=this[_0x64f4e9(0x43c)][_0x64f4e9(0x320)];for(let _0x376a53=0x0;_0x376a53<this[_0x64f4e9(0x43c)][_0x64f4e9(0x320)];_0x376a53++)if(this['serverList'][_0x376a53]===_0xee8c9)return _0x376a53;return this['serverList'][_0x64f4e9(0x396)](_0xee8c9),this[_0x64f4e9(0x42b)][_0x64f4e9(0x234)]({'msgType':_0x64f4e9(0x44f),'serverUrl':_0xee8c9,'serverId':_0x10f543}),_0x10f543;}[_0xe79d2f(0x221)](){let _0x3b1875=()=>{var _0x37cd9c=a0_0x40ed;this[_0x37cd9c(0x3df)](),requestAnimationFrame(_0x3b1875);};requestAnimationFrame(_0x3b1875);}[_0xe79d2f(0x34a)](){var _0xbfcd12=_0xe79d2f;this['cesiumWidget']?(_0x4968b2=this[_0xbfcd12(0x2a0)][_0xbfcd12(0x35b)][_0xbfcd12(0x1f8)]['uniformState'],this[_0xbfcd12(0x3ed)]=_0x4968b2[_0xbfcd12(0x2eb)][_0xbfcd12(0x302)](),this['projectionMatrix']=_0x4ec6f9['frustumReverseZ'](_0x4968b2[_0xbfcd12(0x2ad)]['z'],_0x4968b2['_frustumPlanes']['w'],_0x4968b2[_0xbfcd12(0x2ad)]['y'],_0x4968b2[_0xbfcd12(0x2ad)]['x'],_0x4968b2['_currentFrustum']['x'],_0x4968b2[_0xbfcd12(0x1ea)]['y'])):this[_0xbfcd12(0x346)]=_0x4ec6f9[_0xbfcd12(0x459)](this['cameraParameter']['fov'],this[_0xbfcd12(0x1fd)]['aspect'],this[_0xbfcd12(0x1fd)][_0xbfcd12(0x454)],this['cameraParameter'][_0xbfcd12(0x1db)]),this[_0xbfcd12(0x280)]=_0x4ec6f9[_0xbfcd12(0x248)](this['projectionMatrix']);var _0x4968b2=_0x4ec6f9['setTranslation'](_0x4ec6f9['scale'](_0x4ec6f9['identity'](),_0x11221['create'](0.5,0.5,0x1)),_0x11221[_0xbfcd12(0x327)](0.5,0.5,0x0)),_0x4968b2=_0x4ec6f9[_0xbfcd12(0x285)](_0x4968b2,this[_0xbfcd12(0x346)]);this[_0xbfcd12(0x400)]=_0x4ec6f9[_0xbfcd12(0x285)]([this[_0xbfcd12(0x440)]['width'],0x0,0x0,0x0,0x0,this[_0xbfcd12(0x440)]['height'],0x0,0x0,0x0,0x0,0x1,0x0,0x0,0x0,0x0,0x1],_0x4968b2);}[_0xe79d2f(0x3df)](){var _0x2acf67=_0xe79d2f,_0x301467,_0x4c29bd;this[_0x2acf67(0x2a0)]?(_0x4c29bd=this[_0x2acf67(0x2a0)][_0x2acf67(0x35b)][_0x2acf67(0x1f8)][_0x2acf67(0x1a4)],this[_0x2acf67(0x343)][_0x2acf67(0x2f9)]=_0x4c29bd[_0x2acf67(0x1e3)],this[_0x2acf67(0x343)][_0x2acf67(0x34d)][0x0]=_0x4c29bd[_0x2acf67(0x1e3)][0xc],this[_0x2acf67(0x343)][_0x2acf67(0x34d)][0x1]=_0x4c29bd[_0x2acf67(0x1e3)][0xd],this[_0x2acf67(0x343)][_0x2acf67(0x34d)][0x2]=_0x4c29bd['_inverseView'][0xe],_0x4c29bd[_0x2acf67(0x2eb)][_0x2acf67(0x302)]()!==this[_0x2acf67(0x3ed)]&&(this[_0x2acf67(0x3d8)]='',this[_0x2acf67(0x34a)]())):(_0x301467=((_0x4c29bd=Date[_0x2acf67(0x1ef)]())-this[_0x2acf67(0x2e1)])/0x3e8,this[_0x2acf67(0x2e1)]=_0x4c29bd,this[_0x2acf67(0x343)]['update'](_0x301467)),this['oldCameraData']===this[_0x2acf67(0x343)][_0x2acf67(0x2f9)][_0x2acf67(0x302)]()&&0x0!==this['instancesCount']||(this[_0x2acf67(0x3d8)]=this[_0x2acf67(0x343)][_0x2acf67(0x2f9)]['toString'](),_0x4c29bd=_0x11221[_0x2acf67(0x259)]([this[_0x2acf67(0x343)][_0x2acf67(0x2f9)][0xc],this[_0x2acf67(0x343)][_0x2acf67(0x2f9)][0xd],this[_0x2acf67(0x343)][_0x2acf67(0x2f9)][0xe]],this[_0x2acf67(0x38e)]),(0x2710<Math['abs'](_0x4c29bd[0x0])||0x2710<Math[_0x2acf67(0x32b)](_0x4c29bd[0x1])||0x2710<Math[_0x2acf67(0x32b)](_0x4c29bd[0x2]))&&(this[_0x2acf67(0x38e)][0x0]=this[_0x2acf67(0x343)][_0x2acf67(0x2f9)][0xc],this['accuracyOffset'][0x1]=this[_0x2acf67(0x343)][_0x2acf67(0x2f9)][0xd],this[_0x2acf67(0x38e)][0x2]=this[_0x2acf67(0x343)]['worldMatrix'][0xe],this['scene_dataViewF32'][0x78]=this[_0x2acf67(0x38e)][0x0],this[_0x2acf67(0x1b7)][0x79]=this[_0x2acf67(0x38e)][0x1],this['scene_dataViewF32'][0x7a]=this[_0x2acf67(0x38e)][0x2],this[_0x2acf67(0x1b0)]()),(_0x301467=Array['from'](this['camera'][_0x2acf67(0x2f9)]))[0xc]-=this[_0x2acf67(0x38e)][0x0],_0x301467[0xd]-=this[_0x2acf67(0x38e)][0x1],_0x301467[0xe]-=this[_0x2acf67(0x38e)][0x2],_0x4ec6f9[_0x2acf67(0x2f8)](_0x301467,this[_0x2acf67(0x24b)]),this[_0x2acf67(0x3f0)]=_0x4ec6f9[_0x2acf67(0x248)](_0x301467),_0x4ec6f9[_0x2acf67(0x285)](this['projectionMatrix'],this['viewMatrix'],this[_0x2acf67(0x23e)]),this[_0x2acf67(0x2c2)]=_0x4ec6f9[_0x2acf67(0x248)](this[_0x2acf67(0x23e)]),this[_0x2acf67(0x2a0)]&&(_0x4c29bd=_0x4ec6f9[_0x2acf67(0x285)](this[_0x2acf67(0x2a0)][_0x2acf67(0x35b)][_0x2acf67(0x1f8)]['uniformState']['_projection'],this[_0x2acf67(0x3f0)]),this[_0x2acf67(0x1b7)][_0x2acf67(0x37f)](_0x4c29bd)),this[_0x2acf67(0x1b7)]['set'](this[_0x2acf67(0x3f0)],0x10),this[_0x2acf67(0x1b7)][_0x2acf67(0x37f)](this[_0x2acf67(0x23e)],0x20),this[_0x2acf67(0x1b7)][_0x2acf67(0x37f)](this[_0x2acf67(0x280)],0x48),this[_0x2acf67(0x1b7)]['set'](this[_0x2acf67(0x24b)],0x58),this[_0x2acf67(0x1b7)][_0x2acf67(0x37f)](this[_0x2acf67(0x2c2)],0x68),this[_0x2acf67(0x2a5)]++,0x3ffffffc<this[_0x2acf67(0x2a5)]&&(this[_0x2acf67(0x2a5)]=0x1),this[_0x2acf67(0x3b8)][0x30]=this['cameraId'],this[_0x2acf67(0x1b7)][0x31]=_0x301467[0xc],this['scene_dataViewF32'][0x32]=_0x301467[0xd],this[_0x2acf67(0x1b7)][0x33]=_0x301467[0xe],this[_0x2acf67(0x1b7)][0x34]=this['canvas']['width'],this[_0x2acf67(0x1b7)][0x35]=this[_0x2acf67(0x440)][_0x2acf67(0x360)],this[_0x2acf67(0x1b7)][0x36]=0x1,this['scene_dataViewF32'][0x37]=0x0,this[_0x2acf67(0x2be)]['device'][_0x2acf67(0x2c0)]['writeBuffer'](this[_0x2acf67(0x2be)][_0x2acf67(0x42c)],0x0,this[_0x2acf67(0x2df)]),this[_0x2acf67(0x40c)]&&(this[_0x2acf67(0x40c)]=!0x1,this['ddWorker'][_0x2acf67(0x234)]({'msgType':'CameraChange','viewMatrix':_0x4ec6f9['inverse'](this[_0x2acf67(0x343)]['worldMatrix']),'projectionMatrix':this[_0x2acf67(0x346)],'cameraWorldPosition':this[_0x2acf67(0x343)]['position'],'cameraId':this[_0x2acf67(0x2a5)]})),this[_0x2acf67(0x2be)][_0x2acf67(0x2f4)]()),this[_0x2acf67(0x2be)]['Render'](),this['scene_dataViewF32']['set'](this[_0x2acf67(0x23e)],0x38),this[_0x2acf67(0x3b8)][0x37]++,0x3ffffffc<this[_0x2acf67(0x3b8)][0x49]&&(this[_0x2acf67(0x3b8)][0x37]=0x1),this['renderEngine']['device']['queue']['writeBuffer'](this[_0x2acf67(0x2be)][_0x2acf67(0x42c)],0xe0,this[_0x2acf67(0x2df)],0xe0),this[_0x2acf67(0x1df)]&&(this[_0x2acf67(0x381)]?(this[_0x2acf67(0x433)][0x1]+=0.005,this[_0x2acf67(0x433)][0x2]+=0.005,this[_0x2acf67(0x433)][0x3]-=0.005,0.35<this['lightInfo_dataViewF32'][0x1]&&0.92<this[_0x2acf67(0x433)][0x2]&&this[_0x2acf67(0x433)][0x3]<-0.14&&(this['tempRL']=!this[_0x2acf67(0x381)])):(this[_0x2acf67(0x433)][0x1]-=0.005,this['lightInfo_dataViewF32'][0x2]-=0.005,this['lightInfo_dataViewF32'][0x3]+=0.005,this['lightInfo_dataViewF32'][0x1]<-0.76&&this[_0x2acf67(0x433)][0x2]<-0.09&&0.63<this['lightInfo_dataViewF32'][0x3]&&(this[_0x2acf67(0x381)]=!this[_0x2acf67(0x381)])),this['renderEngine'][_0x2acf67(0x44b)][_0x2acf67(0x2c0)][_0x2acf67(0x40f)](this[_0x2acf67(0x2be)][_0x2acf67(0x369)],0x0,this[_0x2acf67(0x223)],0x0,0x20));}[_0xe79d2f(0x24a)](_0x28bc7b){var _0x112034=_0xe79d2f,_0x4f10f5,_0x444879;this[_0x112034(0x200)][_0x28bc7b]&&(_0x4f10f5=this[_0x112034(0x200)][_0x28bc7b],_0x444879=new Uint32Array([0x1]),this[_0x112034(0x2be)][_0x112034(0x44b)][_0x112034(0x2c0)][_0x112034(0x40f)](this[_0x112034(0x2be)][_0x112034(0x2a8)],0x4*(_0x4f10f5[_0x112034(0x3f8)]+0x11),_0x444879),this[_0x112034(0x42b)][_0x112034(0x234)]({'msgType':_0x112034(0x37c),'modelId':_0x28bc7b,'status':0x1}));}['HideModel'](_0x3ea247){var _0x280a53=_0xe79d2f,_0x309f87,_0x59a510;this[_0x280a53(0x200)][_0x3ea247]&&(_0x309f87=this[_0x280a53(0x200)][_0x3ea247],_0x59a510=new Uint32Array([0x0]),this[_0x280a53(0x2be)][_0x280a53(0x44b)][_0x280a53(0x2c0)][_0x280a53(0x40f)](this[_0x280a53(0x2be)][_0x280a53(0x2a8)],0x4*(_0x309f87[_0x280a53(0x3f8)]+0x11),_0x59a510),this[_0x280a53(0x42b)]['postMessage']({'msgType':_0x280a53(0x37c),'modelId':_0x3ea247,'status':0x0}));}['PickId'](_0x4cd289,_0x302ddb){var _0x52cf79=_0xe79d2f;return this[_0x52cf79(0x2be)][_0x52cf79(0x326)](_0x4cd289,_0x302ddb)['then'](_0x525b22=>new Promise((_0x894485,_0x1eebc5)=>{var _0x3abd1d=_0x52cf79,_0x459a38=Date[_0x3abd1d(0x1ef)]();this[_0x3abd1d(0x39d)][_0x459a38]={'resolve':_0x4799a3=>{_0x894485(_0x4799a3);},'reject':_0x41fbcd=>{_0x1eebc5();}},this[_0x3abd1d(0x42b)][_0x3abd1d(0x234)]({'msgType':_0x3abd1d(0x268),'instancePtr':_0x525b22,'cbId':_0x459a38});}));}[_0xe79d2f(0x20f)](_0x3f9037,_0x44a792){var _0x5abba4=_0xe79d2f;return this['renderEngine'][_0x5abba4(0x326)](_0x3f9037,_0x44a792);}[_0xe79d2f(0x241)](_0x16f33a,_0x2cc9be){var _0x409459=_0xe79d2f;return this[_0x409459(0x2be)]['PickPosition'](_0x16f33a,_0x2cc9be);}[_0xe79d2f(0x2fe)](_0x5d3284,_0x4317c3){var _0x9b16be=_0xe79d2f,_0x1c4d84;this[_0x9b16be(0x200)][_0x5d3284]&&((_0x1c4d84=this[_0x9b16be(0x200)][_0x5d3284])[_0x9b16be(0x1f7)]=Array[_0x9b16be(0x41a)](_0x4317c3),(_0x4317c3=Array['from'](_0x4317c3))[0xc]-=this['accuracyOffset'][0x0],_0x4317c3[0xd]-=this[_0x9b16be(0x38e)][0x1],_0x4317c3[0xe]-=this[_0x9b16be(0x38e)][0x2],_0x4317c3=new Float32Array(_0x4317c3),this['renderEngine']['device']['queue'][_0x9b16be(0x40f)](this[_0x9b16be(0x2be)][_0x9b16be(0x2a8)],0x4*_0x1c4d84[_0x9b16be(0x3f8)],_0x4317c3),this['ddWorker'][_0x9b16be(0x234)]({'msgType':_0x9b16be(0x2fe),'modelId':_0x5d3284,'modelMatrixArr':_0x1c4d84[_0x9b16be(0x1f7)]}));}[_0xe79d2f(0x1b0)](){var _0x120bd6=_0xe79d2f;for(var _0x1d9239 in this['modelData']){var _0x2d37d0,_0x1d9239=this[_0x120bd6(0x200)][_0x1d9239];_0x1d9239[_0x120bd6(0x3f8)]&&((_0x2d37d0=Array['from'](_0x1d9239['transform']))[0xc]-=this[_0x120bd6(0x38e)][0x0],_0x2d37d0[0xd]-=this[_0x120bd6(0x38e)][0x1],_0x2d37d0[0xe]-=this[_0x120bd6(0x38e)][0x2],_0x2d37d0=new Float32Array(_0x2d37d0),this[_0x120bd6(0x2be)][_0x120bd6(0x44b)][_0x120bd6(0x2c0)][_0x120bd6(0x40f)](this[_0x120bd6(0x2be)][_0x120bd6(0x2a8)],0x4*_0x1d9239[_0x120bd6(0x3f8)],_0x2d37d0));}this[_0x120bd6(0x364)](),this['UpdateExplodeAccuracyOffset']();}['CreateMaterial'](_0x4d1b06){return new Promise((_0x84dd79,_0x137979)=>{var _0x4b681c=a0_0x40ed,_0x1f2756=Date[_0x4b681c(0x1ef)]();this[_0x4b681c(0x39d)][_0x1f2756]={'resolve':_0x84dd79,'reject':_0x137979},this[_0x4b681c(0x42b)]['postMessage']({'msgType':_0x4b681c(0x27a),'color':_0x4d1b06,'cbId':_0x1f2756});});}[_0xe79d2f(0x382)](_0x2d06e6,_0x2ac96b,_0x3e95eb,_0x83d6be){var _0x12b760=_0xe79d2f;this[_0x12b760(0x42b)][_0x12b760(0x234)]({'msgType':_0x12b760(0x382),'modelId':_0x2d06e6,'materialId':_0x2ac96b,'color':_0x3e95eb,'overlay':_0x83d6be});}['GetMaterial'](_0x376182,_0x557b1a){return new Promise((_0x1d7eb0,_0x57bcab)=>{var _0x3109ff=a0_0x40ed,_0x40bd01=Date['now']();this[_0x3109ff(0x39d)][_0x40bd01]={'resolve':_0x1d3514=>{_0x1d7eb0(_0x1d3514);},'reject':_0x135f7b=>{_0x57bcab();}},this[_0x3109ff(0x42b)][_0x3109ff(0x234)]({'msgType':_0x3109ff(0x36f),'modelId':_0x376182,'materialId':_0x557b1a,'cbId':_0x40bd01});});}['SetInstanceMaterialByInstancePtr'](_0x3ff07f,_0x19a714){var _0x207258=_0xe79d2f;this['renderEngine'][_0x207258(0x44b)]['queue'][_0x207258(0x40f)](this['renderEngine']['instanceVmBuffer'],0x4*(_0x3ff07f+0x17),new Uint32Array([_0x19a714]));}[_0xe79d2f(0x201)](_0x537610,_0x866b67){var _0x3cc8f1=_0xe79d2f;this['renderEngine'][_0x3cc8f1(0x44b)]['queue'][_0x3cc8f1(0x40f)](this[_0x3cc8f1(0x2be)][_0x3cc8f1(0x29a)],0x4*(_0x537610+0x16),new Uint32Array([_0x866b67]));}['SetInstanceMaterial'](_0x25bef2,_0x3cc593){var _0x465b5a=_0xe79d2f;_0x3cc593=new Uint32Array(_0x3cc593),this[_0x465b5a(0x42b)][_0x465b5a(0x234)]({'msgType':_0x465b5a(0x32a),'materialPtr':_0x25bef2,'idBuffer':_0x3cc593['buffer']},[_0x3cc593[_0x465b5a(0x36d)]]);}['SetInstanceStatus'](_0x494153,_0x484817){var _0x1e537d=_0xe79d2f;_0x484817=new Uint32Array(_0x484817),this[_0x1e537d(0x42b)][_0x1e537d(0x234)]({'msgType':_0x1e537d(0x3c9),'status':_0x494153,'idBuffer':_0x484817[_0x1e537d(0x36d)]},[_0x484817['buffer']]);}[_0xe79d2f(0x380)](_0x2389c0,_0x3d9705){var _0x2af9a4=_0xe79d2f;_0x3d9705=new Uint32Array(_0x3d9705),this[_0x2af9a4(0x42b)][_0x2af9a4(0x234)]({'msgType':_0x2af9a4(0x380),'transform':_0x2389c0,'idBuffer':_0x3d9705[_0x2af9a4(0x36d)]},[_0x3d9705[_0x2af9a4(0x36d)]]);}[_0xe79d2f(0x1dd)](_0x385938){var _0x23ee1c=_0xe79d2f;_0x385938=new Uint32Array(_0x385938),this[_0x23ee1c(0x42b)][_0x23ee1c(0x234)]({'msgType':_0x23ee1c(0x1dd),'idBuffer':_0x385938['buffer']},[_0x385938[_0x23ee1c(0x36d)]]);}[_0xe79d2f(0x36e)](_0x12a457,_0x43f280){var _0x2dc14e=_0xe79d2f;_0x43f280=new Uint32Array(_0x43f280),this[_0x2dc14e(0x42b)][_0x2dc14e(0x234)]({'msgType':_0x2dc14e(0x36e),'materialPtr':_0x12a457,'idBuffer':_0x43f280[_0x2dc14e(0x36d)]},[_0x43f280['buffer']]);}[_0xe79d2f(0x42e)](_0x242559,_0x5bb235){var _0x32cfd8=_0xe79d2f;_0x5bb235=new Uint32Array(_0x5bb235),this[_0x32cfd8(0x42b)][_0x32cfd8(0x234)]({'msgType':'SetInstanceStatusByComponentIds','status':_0x242559,'idBuffer':_0x5bb235['buffer']},[_0x5bb235['buffer']]);}[_0xe79d2f(0x2ea)](_0x511e04,_0x281c8d){var _0x2db795=_0xe79d2f;_0x281c8d=new Uint32Array(_0x281c8d),this[_0x2db795(0x42b)][_0x2db795(0x234)]({'msgType':_0x2db795(0x2ea),'transform':_0x511e04,'idBuffer':_0x281c8d[_0x2db795(0x36d)]},[_0x281c8d[_0x2db795(0x36d)]]);}['CancelInstanceTransformByComponentIds'](_0x4e3430){var _0x5437e6=_0xe79d2f;_0x4e3430=new Uint32Array(_0x4e3430),this[_0x5437e6(0x42b)]['postMessage']({'msgType':_0x5437e6(0x2e3),'idBuffer':_0x4e3430[_0x5437e6(0x36d)]},[_0x4e3430['buffer']]);}['SetInstanceMaterialByExtendedPropertiesId'](_0x413a69,_0x257829){var _0x5a91b0=_0xe79d2f;this['ddWorker']['postMessage']({'msgType':_0x5a91b0(0x255),'materialPtr':_0x413a69,'extendedPropertiesIds':_0x257829});}[_0xe79d2f(0x296)](_0x3c6e1d,_0x1c4b54){var _0x3cf5ac=_0xe79d2f;this['ddWorker'][_0x3cf5ac(0x234)]({'msgType':'SetInstanceStatusByExtendedPropertiesId','status':_0x3c6e1d,'extendedPropertiesIds':_0x1c4b54});}[_0xe79d2f(0x261)](_0x3116f5,_0x37174d){var _0x44a935=_0xe79d2f;this[_0x44a935(0x42b)][_0x44a935(0x234)]({'msgType':_0x44a935(0x261),'transform':_0x3116f5,'extendedPropertiesIds':_0x37174d});}[_0xe79d2f(0x3d1)](_0x55f48b){var _0x4f88af=_0xe79d2f;this[_0x4f88af(0x42b)][_0x4f88af(0x234)]({'msgType':_0x4f88af(0x3d1),'extendedPropertiesIds':_0x55f48b});}[_0xe79d2f(0x308)](_0x4306aa,_0x3141ab,_0x1337af,_0x55ccaf){return new Promise((_0xe8fd6a,_0x54c534)=>{var _0x5b94ca=a0_0x40ed,_0x2011fa=Date[_0x5b94ca(0x1ef)]();this[_0x5b94ca(0x39d)][_0x2011fa]={'resolve':_0xe8fd6a,'reject':_0x54c534},this[_0x5b94ca(0x42b)][_0x5b94ca(0x234)]({'msgType':_0x5b94ca(0x308),'x1':_0x4306aa,'y1':_0x3141ab,'x2':_0x1337af,'y2':_0x55ccaf,'width':this[_0x5b94ca(0x440)]['width'],'height':this[_0x5b94ca(0x440)][_0x5b94ca(0x360)],'cbId':_0x2011fa});});}[_0xe79d2f(0x3f4)](_0x417be3,_0x31ca10,_0x414e02){var _0x545af2=_0xe79d2f;if(void 0x0===_0x417be3)this['clipPlane'][0x0]=0x0;else{this[_0x545af2(0x204)]=_0x417be3,this[_0x545af2(0x2e9)][0x0]=_0x414e02[_0x545af2(0x320)]/0x4*(_0x31ca10?-0x1:0x1),this[_0x545af2(0x2e9)]['set'](_0x414e02,0x4);for(let _0x259613=0x1;_0x259613<=Math[_0x545af2(0x32b)](this[_0x545af2(0x2e9)][0x0]);_0x259613+=0x1){var _0x49715d=_0x11221[_0x545af2(0x43d)]([this['clipPlane'][0x4*_0x259613],this[_0x545af2(0x2e9)][0x4*_0x259613+0x1],this[_0x545af2(0x2e9)][0x4*_0x259613+0x2]]);this[_0x545af2(0x2e9)][0x4*_0x259613]=_0x49715d[0x0],this[_0x545af2(0x2e9)][0x4*_0x259613+0x1]=_0x49715d[0x1],this[_0x545af2(0x2e9)][0x4*_0x259613+0x2]=_0x49715d[0x2];}}this[_0x545af2(0x364)]();}[_0xe79d2f(0x364)](){var _0x373aa5=_0xe79d2f,_0x535b64=new Float32Array(0x54);if(0x0!==this['clipPlane'][0x0]){var _0x16e6c2=Array['from'](this[_0x373aa5(0x204)]),_0x3c622=(_0x16e6c2[0xc]-=this[_0x373aa5(0x38e)][0x0],_0x16e6c2[0xd]-=this[_0x373aa5(0x38e)][0x1],_0x16e6c2[0xe]-=this['accuracyOffset'][0x2],_0x4ec6f9[_0x373aa5(0x248)](_0x16e6c2,_0x16e6c2));for(let _0x375b87=0x1;_0x375b87<=Math[_0x373aa5(0x32b)](this[_0x373aa5(0x2e9)][0x0]);_0x375b87++){var _0x30dc73=this[_0x373aa5(0x2e9)][0x4*_0x375b87],_0x540fa7=this['clipPlane'][0x4*_0x375b87+0x1],_0x57d135=this[_0x373aa5(0x2e9)][0x4*_0x375b87+0x2],_0x1b2d62=this[_0x373aa5(0x2e9)][0x4*_0x375b87+0x3],_0x2c1684=_0x30dc73*_0x3c622[0x0]+_0x540fa7*_0x3c622[0x1]+_0x57d135*_0x3c622[0x2]+_0x1b2d62*_0x3c622[0x3],_0x312ba7=_0x30dc73*_0x3c622[0x4]+_0x540fa7*_0x3c622[0x5]+_0x57d135*_0x3c622[0x6]+_0x1b2d62*_0x3c622[0x7],_0x44ceef=_0x30dc73*_0x3c622[0x8]+_0x540fa7*_0x3c622[0x9]+_0x57d135*_0x3c622[0xa]+_0x1b2d62*_0x3c622[0xb],_0x30dc73=_0x30dc73*_0x3c622[0xc]+_0x540fa7*_0x3c622[0xd]+_0x57d135*_0x3c622[0xe]+_0x1b2d62*_0x3c622[0xf];_0x535b64[0x4*_0x375b87]=_0x2c1684,_0x535b64[0x4*_0x375b87+0x1]=_0x312ba7,_0x535b64[0x4*_0x375b87+0x2]=_0x44ceef,_0x535b64[0x4*_0x375b87+0x3]=_0x30dc73;}_0x535b64[0x0]=this[_0x373aa5(0x2e9)][0x0];}else _0x535b64[0x0]=0x0;this[_0x373aa5(0x2be)][_0x373aa5(0x44b)][_0x373aa5(0x2c0)][_0x373aa5(0x40f)](this[_0x373aa5(0x2be)][_0x373aa5(0x1c1)],0x0,_0x535b64);}['SetExplode'](_0x4b47c5,_0x4dc7ee,_0x1228f7,_0x208084,_0x28d6a5){var _0x899ce7=_0xe79d2f;void 0x0===_0x4b47c5||Number['isNaN'](_0x4b47c5)||(this[_0x899ce7(0x2be)][_0x899ce7(0x324)][0x0]=_0x4b47c5),void 0x0===_0x4dc7ee||Number[_0x899ce7(0x3fd)](_0x4dc7ee)||(this[_0x899ce7(0x2be)][_0x899ce7(0x324)][0x1]=_0x4dc7ee),void 0x0===_0x1228f7||Number['isNaN'](_0x1228f7)||(this[_0x899ce7(0x2be)]['explodeParam'][0x2]=_0x1228f7),_0x208084&&0x3<=_0x208084['length']&&(this[_0x899ce7(0x2be)][_0x899ce7(0x324)][0x3]=_0x208084[0x0],this['renderEngine'][_0x899ce7(0x324)][0x4]=_0x208084[0x1],this['renderEngine']['explodeParam'][0x5]=_0x208084[0x2]),_0x28d6a5&&0x3<=_0x28d6a5['length']&&(_0x4b47c5=_0x11221[_0x899ce7(0x43d)](_0x28d6a5),this[_0x899ce7(0x2be)][_0x899ce7(0x324)][0x6]=_0x4b47c5[0x0],this[_0x899ce7(0x2be)][_0x899ce7(0x324)][0x7]=_0x4b47c5[0x1],this[_0x899ce7(0x2be)][_0x899ce7(0x324)][0x8]=_0x4b47c5[0x2]),this['UpdateExplodeAccuracyOffset']();}[_0xe79d2f(0x458)](){var _0xd5585a=_0xe79d2f,_0x100ac8=new Float32Array(this[_0xd5585a(0x2be)][_0xd5585a(0x324)]);_0x100ac8[0x3]-=this['accuracyOffset'][0x0],_0x100ac8[0x4]-=this['accuracyOffset'][0x1],_0x100ac8[0x5]-=this[_0xd5585a(0x38e)][0x2],this[_0xd5585a(0x2be)][_0xd5585a(0x44b)][_0xd5585a(0x2c0)]['writeBuffer'](this['renderEngine'][_0xd5585a(0x318)],0x0,_0x100ac8);}[_0xe79d2f(0x2fd)](){var _0x556b45=_0xe79d2f;let _0x23ef24=this[_0x556b45(0x2a0)][_0x556b45(0x35b)];if(!_0x23ef24['initFine']){_0x23ef24[_0x556b45(0x1c8)]=!0x0;let _0x4b585f={'sources':[_0x556b45(0x2d2)],'defines':[]},_0x8f9a0f=new this[(_0x556b45(0x3e1))]['ShaderSource']({'sources':[_0x556b45(0x284)],'defines':[]}),_0x49f841=new this[(_0x556b45(0x3e1))][(_0x556b45(0x35c))](_0x4b585f),_0x3c530e=_0x23ef24['context'][_0x556b45(0x363)]['getShaderProgram']({'vertexShaderSource':_0x8f9a0f,'fragmentShaderSource':_0x49f841}),_0x22123d=new this['Cesium'][(_0x556b45(0x2a1))]({'context':_0x23ef24['context'],'attributes':[]}),_0x4c1622=(_0x22123d[_0x556b45(0x40d)]=0x6,this[_0x556b45(0x3e1)][_0x556b45(0x456)][_0x556b45(0x27f)]({'depthTest':{'enabled':!0x0,'func':this[_0x556b45(0x3e1)]['WebGLConstants'][_0x556b45(0x424)]}})),_0x3bb828=new this['Cesium'][(_0x556b45(0x265))]({'wrapS':this[_0x556b45(0x3e1)][_0x556b45(0x43a)][_0x556b45(0x310)],'wrapT':this['Cesium'][_0x556b45(0x43a)][_0x556b45(0x310)],'minificationFilter':this[_0x556b45(0x3e1)]['TextureMinificationFilter'][_0x556b45(0x359)],'magnificationFilter':this[_0x556b45(0x3e1)][_0x556b45(0x202)][_0x556b45(0x359)]}),_0x1ae186={'bimColorTexture':()=>(this[_0x556b45(0x3df)](),_0x23ef24[_0x556b45(0x44c)]?_0x23ef24['serColorTexture'][_0x556b45(0x1c5)]({'source':_0x23ef24[_0x556b45(0x22b)][_0x556b45(0x440)],'skipColorSpaceConversion':!0x0}):_0x23ef24['serColorTexture']=new this['Cesium'][(_0x556b45(0x40e))]({'context':_0x23ef24[_0x556b45(0x1f8)],'source':_0x23ef24['ser'][_0x556b45(0x440)],'skipColorSpaceConversion':!0x0,'flipY':!0x1,'preMultiplyAlpha':!0x0,'sampler':_0x3bb828}),_0x23ef24[_0x556b45(0x44c)]),'bimDepthTexture':()=>(_0x23ef24['serDepthTexture']?_0x23ef24['serDepthTexture'][_0x556b45(0x1c5)]({'source':_0x23ef24['ser'][_0x556b45(0x203)],'skipColorSpaceConversion':!0x0}):_0x23ef24[_0x556b45(0x37a)]=new this[(_0x556b45(0x3e1))][(_0x556b45(0x40e))]({'context':_0x23ef24[_0x556b45(0x1f8)],'source':_0x23ef24[_0x556b45(0x22b)][_0x556b45(0x203)],'skipColorSpaceConversion':!0x0,'flipY':!0x1,'preMultiplyAlpha':!0x0,'sampler':_0x3bb828}),_0x23ef24[_0x556b45(0x37a)])},_0x7ae9e8=new this[(_0x556b45(0x3e1))][(_0x556b45(0x33c))]({'x':0x0,'y':0x0,'z':0x0},0x615681),_0x1b2974=new this['Cesium'][(_0x556b45(0x243))]({'shaderProgram':_0x3c530e,'uniformMap':_0x1ae186,'renderState':_0x4c1622,'vertexArray':_0x22123d,'pass':this[_0x556b45(0x3e1)]['Pass']['OPAQUE'],'boundingVolume':_0x7ae9e8});_0x1b2974['derivedCommands'][_0x556b45(0x1e7)]={'command':new this['Cesium'][(_0x556b45(0x243))]({'shaderProgram':_0x3c530e,'uniformMap':_0x1ae186,'renderState':_0x4c1622,'vertexArray':_0x22123d,'pass':this[_0x556b45(0x3e1)][_0x556b45(0x1a1)][_0x556b45(0x26f)],'boundingVolume':_0x7ae9e8}),'shaderProgramId':_0x3c530e['id']},_0x1b2974[_0x556b45(0x2a2)][_0x556b45(0x1e7)][_0x556b45(0x375)][_0x556b45(0x2a2)]={'depth':{'command':new this[(_0x556b45(0x3e1))][(_0x556b45(0x243))]({'shaderProgram':_0x3c530e,'uniformMap':_0x1ae186,'renderState':_0x4c1622,'vertexArray':_0x22123d,'pass':this[_0x556b45(0x3e1)][_0x556b45(0x1a1)][_0x556b45(0x26f)],'boundingVolume':_0x7ae9e8}),'shaderProgramId':_0x3c530e['id'],'depthOnlyCommand':new this[(_0x556b45(0x3e1))][(_0x556b45(0x243))]({'shaderProgram':_0x3c530e,'uniformMap':_0x1ae186,'renderState':_0x4c1622,'vertexArray':_0x22123d,'pass':this[_0x556b45(0x3e1)][_0x556b45(0x1a1)][_0x556b45(0x26f)],'boundingVolume':_0x7ae9e8})}},_0x1b2974['derivedCommands'][_0x556b45(0x289)]={'shaderProgramId':_0x3c530e['id'],'depthOnlyCommand':new this['Cesium'][(_0x556b45(0x243))]({'shaderProgram':_0x3c530e,'uniformMap':_0x1ae186,'renderState':_0x4c1622,'vertexArray':_0x22123d,'pass':this[_0x556b45(0x3e1)][_0x556b45(0x1a1)][_0x556b45(0x26f)],'boundingVolume':_0x7ae9e8})},_0x1b2974['fine']=!0x0,_0x23ef24['primitives'][_0x556b45(0x3db)]({'fine':!0x0,'isDestroyed':()=>!0x1,'update':()=>{_0x23ef24['frameState']['commandList']['push'](_0x1b2974);}});}}}return _0x5589b1;}};function a0_0x40ed(_0x365a48,_0x55b0f3){var _0x289268=a0_0x5202();return a0_0x40ed=function(_0x564023,_0x116f6e){_0x564023=_0x564023-0x19b;var _0x520297=_0x289268[_0x564023];return _0x520297;},a0_0x40ed(_0x365a48,_0x55b0f3);}'object'==typeof exports&&a0_0x223d35(0x2ba)==typeof module?module['exports']=a0_0x52194f():a0_0x223d35(0x2d8)==typeof define&&define[a0_0x223d35(0x237)]?define([],a0_0x52194f):a0_0x223d35(0x2ba)==typeof exports?exports[a0_0x223d35(0x22b)]=a0_0x52194f():a0_0x1cadfe['ser']=a0_0x52194f(); \ No newline at end of file -- Gitblit v1.9.3