티스토리 뷰

Game/MMD

버그 잡기 (1) - shadow map

newpolaris 2017. 11. 23. 21:50

버그를 잡으려면 원인에 집중해야한다.

현상은 그림자가 위치에서 디스코 택처럼 깜박였다.

motion blur/ssao 넣고 난뒤에 생긴거라

우선 위에걸 제거해보고 안되어서

화면 넓게 보니 해당 현상이 줄어들었다.

그래서 object clipping 여부에 따라 해당 문제가 발생하는 줄 알고

cliping 을 날려보니 문제가 없었다

skinning object 때문에 AABB 자체가 정밀하지 못했고,

shadow map 을 위한 light space clipping 부분도 문제 있는 것 같아서

CSM 넣고 해당부분 제거하자고 하고 우선 넘어갔다.

이까지 오는데 3시간 넘게 걸렸는데.

SSAO 버그 수정하다가 shadow map 쪽에서 살펴볼께 있어 shadow map을 보니

여보세여??

    float comp = GetShadow( input.shadowPositionCS, input.positionHS.xyz );
    if (mat.bUseToon) {
        float lightIntensity = dot( normal, -SunDirectionWS );
        comp = min( saturate( lightIntensity )*Toon, comp );
        shadowColor *= MaterialToon;
    }

normal 과의 dot이 해당 shadow의 버그가 드러나는걸 열심히 막고 계셨다.

그럼 문제는 어디서 생긴걸까?

SSAO 를 넣으면서 Pre-Z Pass를 추가했다.

그 와중에 Depth를 변경했는데 그걸 Shadow도 쓰고 있었다.

shadow는 여전히 parameter를 한개만 받았다.

결국 register를 따로 받는 구조는 못써먹겠다.

cbufer 등을 감싸는 구조 추가가 필요

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

Skinning (2)  (0) 2017.11.27
Motion Blur (1)  (0) 2017.11.24
ESM  (0) 2017.11.18
Skydome (1)  (0) 2017.11.17
안정화 작업 (5) - Auto exposer  (0) 2017.11.17
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크