Хочу в вычислительном шейдере сгенерировать текстуру глубины. Как это можно сделать? вот из с#:
Camera camera = CameraManager.cam;
resultTexture = new RenderTexture(1024, 768, 32)
{
enableRandomWrite = true
};
resultTexture.Create();
debugImage.texture = resultTexture;
kernelIndex = shader.FindKernel("CSMain");
shader.SetTexture(kernelIndex, "Result", resultTexture);
shader.SetTextureFromGlobal(kernelIndex, "_DepthTexture", "_CameraDepthTexture");
shader.Dispatch(kernelIndex, camera.pixelWidth / 8, camera.pixelHeight / 8, 1);
вот шейдер:
#pragma kernel CSMain
RWTexture2D<float4> Result;
Texture2D<float4> _DepthTexture;
[numthreads(8, 8, 1)]
void CSMain(uint3 id : SV_DispatchThreadID)
{
float depth = _DepthTexture[id.xy].r;
Result[id.xy] = float4(depth, 0, 0, 0);
}
выдает ошибку: "Compute shader (TestCompute): Property (_DepthTexture) at kernel index (0) has mismatching texture dimension (expected 2, got 5)"
если написать
Result[id.xy] = float4(0, 0, 0, 0);
например, то все нормально