티스토리 뷰

Shader debugger는 CPU100% 먹으시면서 골로가시고

결국 남은건 texture로 디버깅 할 수 밖에 없는 상황이었다.

view space로 착각해서 camera direction 을 그냥 depth 로 reconstruction

하고 그것으로 reflection vector를 얻기도 했다.

이건 reflection texture를 잘안살펴본 잘못이고 빨리잡혔다.

문제는 텍스쳐를 가져와서 찍도록 해뒀는데

특정 각도에서만 회색이 깜빡였다가 이동후 또 다른각도에서 깜빡.

각도 자체가 무척 좁고 결과도 안나오고

for (int n = 1; n <= maxRayNum; ++n) {
    float3 rayPos = pos + step * n;
    float4 posCS = mul(mul(projection, view), float4(rayPos, 1));
    float2 rayUV = float2(posCS.xy/posCS.w * float2(0.5, -0.5) + 0.5);
    float rayDepth = posCS.z/posCS.w;
    float gbufferDepth = texDepth.Load(int3(rayUV, 0));
    if (rayDepth - gbufferDepth > 0) {
        color = texColor.Load(int3(rayUV, 0));
        break;
    }
}

화가나서 이딴식으로 해도 비슷하다;

 for (int n = 100; n <= maxRayNum; ++n) {
    float3 rayPos = pos + step * n;
    float4 posCS = mul(mul(projection, view), float4(rayPos, 1));
    float2 rayUV = float2(posCS.xy/posCS.w * float2(0.5, -0.5) + 0.5);
    rayUV = saturate(rayUV);
    rayUV = float2(0.5, 0.5);
    float rayDepth = posCS.z/posCS.w;
    float gbufferDepth = texDepth.Load(int3(rayUV, 0));
    if (rayDepth - gbufferDepth > 0) {
        color = texColor.Load(int3(rayUV, 0));
        break;
    }
}

문제는 Load 의 잘못된 사용이었다.

당연히 Sampler 를 써야하는데 왜 저게 안보인건지

'Game > Graphics' 카테고리의 다른 글

LSAO  (0) 2017.12.02
MSSAO (1)  (0) 2017.12.01
두깨를 알아보자  (0) 2017.12.01
Unity로 Shader 프로그래밍  (0) 2017.11.29
SH Irradiance (0) 기타 링크  (0) 2017.11.20
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크