Deferred Shading을 만들어 보고 있는데, Deferred Lighting의 지역 라이트(Point/Spot)을 적용하기 위해서, 최적화의 방법을 Shadow Volume과 같이 Stencil Test를 이요한다는 것은 다들 아실 것이다. 불행히도, 나는 Shadow Volume을 만들어 본 적이 없고, Stencil Buffer를 이용한 작업을 많이 해보지 않은 결과, D3DCLEAR_STENCIL...과 같은 캐샆질이 시작되는데...
이번에는 Stencil Test, 정확히 말하면, Z Test의 실패로 캐샆질이 시작되었다.. 거의 3일 동안 계속된 이 샆질은...

이런 그림이 나와야 하는 것인데, 어찌된 영문인지, Stencil Test가 되지를 않아서, 계속 밑에와 같이

이런 식으로 아무 반응도 안나오는.. -_-;;
3일 동안 별 짓을 다해봐도.. 안되었는데... 원인은 SetDepthStencilSurface() 이것 때문이었는데...
Deferred Shading의 과정이
1. G-Buffer에 장면을 그리고
2. 1번에 기록된 텍스쳐를 받아서, 또 다른 렌더타겟에 라이트를 렌더링하고, 여기서 최적화를 위해, Stencil Test를 실행한다.
이 과정에서 1번과 2번 과정에서 메쉬를 스텐실을 이용하여, 깊이값을 비교하려면, 당연히, 같은 타겟을 사용해야 하는데,
1번 G-Buffer 렌더타겟에 신나게 기록하고,
렌더타겟을 바꾸면서, 나도 모르게,
SetRenderTarget( lightTexture );
SetDepthStencilSurface( lightDepthStencil );
을 해버렸던 것...
결국, 현재 DepthStencil에는 아무 기록도 없는 lightDepthStencil이 올라와 있어서, Z 비교를 해봐도 아무런 반응이 없었던 것...
또, ShadowMap을 작업을 먼저 했었는데, ShadowMap의 경우는 Shadow를 기록할 녀석과 화면에 그려질 녀석과 연관성이 없기 때문에, ShadowMap을 기록할 때, 그림자 텍스쳐의 DepthStencil을 기록했던 것으로 기억하기 때문에, 더 찾기 어려웠음. 젠장..
이래서, 기초가 중요한 것인데.. ㅡㅡ;; 한 수 배웠음...
이번에는 Stencil Test, 정확히 말하면, Z Test의 실패로 캐샆질이 시작되었다.. 거의 3일 동안 계속된 이 샆질은...

이런 그림이 나와야 하는 것인데, 어찌된 영문인지, Stencil Test가 되지를 않아서, 계속 밑에와 같이

이런 식으로 아무 반응도 안나오는.. -_-;;
3일 동안 별 짓을 다해봐도.. 안되었는데... 원인은 SetDepthStencilSurface() 이것 때문이었는데...
Deferred Shading의 과정이
1. G-Buffer에 장면을 그리고
2. 1번에 기록된 텍스쳐를 받아서, 또 다른 렌더타겟에 라이트를 렌더링하고, 여기서 최적화를 위해, Stencil Test를 실행한다.
이 과정에서 1번과 2번 과정에서 메쉬를 스텐실을 이용하여, 깊이값을 비교하려면, 당연히, 같은 타겟을 사용해야 하는데,
1번 G-Buffer 렌더타겟에 신나게 기록하고,
렌더타겟을 바꾸면서, 나도 모르게,
SetRenderTarget( lightTexture );
SetDepthStencilSurface( lightDepthStencil );
을 해버렸던 것...
결국, 현재 DepthStencil에는 아무 기록도 없는 lightDepthStencil이 올라와 있어서, Z 비교를 해봐도 아무런 반응이 없었던 것...
또, ShadowMap을 작업을 먼저 했었는데, ShadowMap의 경우는 Shadow를 기록할 녀석과 화면에 그려질 녀석과 연관성이 없기 때문에, ShadowMap을 기록할 때, 그림자 텍스쳐의 DepthStencil을 기록했던 것으로 기억하기 때문에, 더 찾기 어려웠음. 젠장..
이래서, 기초가 중요한 것인데.. ㅡㅡ;; 한 수 배웠음...





덧글