티스토리 뷰
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
링크