티스토리 뷰
머든 한번에 끝나는게 없네
몇시간째 디버깅하는 것인가
output.ShadowPosH = mul( float4(input.Pos, 1.0), mul(g_World, g_ShadowTransform));
Shadow Map 과 비교를 위해선, Light 의 View, Proj 을 곱해주고 그걸 texture 좌표로 환산한다
그런데, 환산이 이루어 지는 base 좌표계는 World 좌표계이다.
World 에 Light가 있으니, World 로 환산할 때 scale 을 50 씩 주는데 없으니까
완전 해석하기 힘든 결과만 나와서 찾기 힘들었다
float lightDepth = tShadowMap.SampleLevel(ShadowSamplerTest, shadowPosH.xy, 0).r;
return depth < lightDepth + 0.005;
MaxDepthSlope 는 어케 구해지나?
The MaxDepthSlope value is the maximum of the horizontal and vertical slopes of the depth value at the pixel.
어짜피 pixel shader 에서는 4개씩 밖에 못보니 그 중에 선택된다고 하네
https://www.gamedev.net/topic/660387-depthbias-how-is-maxdepthslope-computed/
AFAIK, it's max(abs(ddx(z)),abs(ddy(z))), but yeah, it's hard to find the actual definition
Bias 적용, PCF 2x2 적용
그래도 90도에서는 봤을 땐 이렇다
2048 map 일 때,
4096, 8192 까지 해도 약간 밖에 차이 없다. 16384 까지 늘리면 깨끝하지만, GPU 메모리가 터진다
어디로 가야하나?
SSAO 보다 더 많이 나오는듯.
너무 많은데? 살펴볼려면 시간이 걸리것네
"여러 Shadow 의 오래전 technique 에 대한 간략한 설명" http://egloos.zum.com/x66vx/v/3808794
대충, 전처리, 후처리로 나뉘고
후처리 -> PCF -> VSM 효과적으로 뽑기 -> Standard Shadow Map (SSM) -> PSM (Perspective shadow map) -> LiSPSM (Lightspace PSM)
여러개 뽑기 -> CSM -> PSSM
CSM 등으로 많이 뽑으면 SSM도 문제 없어 진다네
VSM은 PCF 에 bilinear 를 걸면 비싸니 누적 분포함수를 응용한다는데, 안써도 되겠고 LiSSPM 은 단순해 보인다 CSM 은 봐야되겠네
VSM( 하드웨어 텍스처 필터링이 가능하도록 깊이 값을 저장하는 방법입니다. 보통 깊이 값을 두 채널로 나눠서 저장하는데 그림자가 겹칠 때 빛이 새어 들어오는 부작용이 종종 생기곤 합니다 )
'Game > DirectX 11' 카테고리의 다른 글
Shadow Mapping (2) (0) | 2017.05.18 |
---|---|
Environment mapping (1) (0) | 2017.05.13 |
SSAO(4) (0) | 2017.05.10 |
SSAO(3) (0) | 2017.05.09 |
SSAO(2) (0) | 2017.05.07 |
- Total
- Today
- Yesterday