#pragma kernel BakeVertexTex uint2 PointCloudRes; float2 SpaceScale; uint MinDepth; uint MaxDepth; StructuredBuffer SpaceTable; StructuredBuffer DepthMap; RWTexture2D PointCloudVertexTex; [numthreads(8, 8, 1)] void BakeVertexTex(uint3 id : SV_DispatchThreadID) { uint i = id.x + id.y * PointCloudRes.x; uint depth2 = DepthMap[i >> 1]; uint depth = (i % 2 == 0 ? depth2 <<= 16 : depth2) >> 16; depth = (depth >= MinDepth && depth <= MaxDepth) * depth; float fDepth = (float)depth / 1000.0; bool mask = depth != 0; float3 pos = float3( SpaceTable[i * 3] * fDepth * SpaceScale.x, SpaceTable[i * 3 + 1] * fDepth * SpaceScale.y, mask ? fDepth : 1000 ); PointCloudVertexTex[id.xy] = float4(pos, mask); }