@i__egor

Как создать текстуру глубины в unity?

Хочу в вычислительном шейдере сгенерировать текстуру глубины. Как это можно сделать? вот из с#:
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); например, то все нормально
  • Вопрос задан
  • 50 просмотров
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы