#pragma kernel BakeColorInfrared uint2 _ColorRes; uint2 _DepthRes; StructuredBuffer _InfraredMap; StructuredBuffer _Color2DepthMap; RWStructuredBuffer _ColorInfraredMap; [numthreads(8, 8, 1)] void BakeColorInfrared(uint3 id : SV_DispatchThreadID) { //if (id.x & 1 == 0) { // depth0 uint ci = id.x + id.y * _ColorRes.x; uint ir = 0; if (!isinf(_Color2DepthMap[ci << 1])) { int dx = _Color2DepthMap[ci << 1]; int dy = _Color2DepthMap[(ci << 1) + 1]; uint di = dx + dy * _DepthRes.x; uint ir2 = _InfraredMap[di >> 1]; ir = di & 1 != 0 ? ir2 >> 16 : ir2 & 0xffff; } uint cir0 = ir; // depth1 uint ci1 = ci + 1; ir = 0; if (!isinf(_Color2DepthMap[ci1 << 1])) { int dx = _Color2DepthMap[ci1 << 1]; int dy = _Color2DepthMap[(ci1 << 1) + 1]; uint di = dx + dy * _DepthRes.x; uint ir2 = _InfraredMap[di >> 1]; ir = di & 1 != 0 ? ir2 >> 16 : ir2 & 0xffff; } uint cir1 = ir << 16; _ColorInfraredMap[ci >> 1] = cir0 | cir1; } }