티스토리 뷰

Game/DirectX 11

Shadow Maping (1)

newpolaris 2017. 5. 17. 17:23

머든 한번에 끝나는게 없네

몇시간째 디버깅하는 것인가

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
링크