그림자 개선중#3 – Cascade Shadow Maps

셀프쉐도우를 넣기 위해서 손을 대기 시작한게 cascade shadow maps까지 와 버렸다.

일단 캐릭터를 위한 그림자로선 충분히 효과를 얻었으나 내친 김에 전체 씬을 cascade shadow maps으로 다 덮어버리면 어떨까 해서 이리저리 실험을 해봤다.

역시나 문제가 있는데 cascade된 뷰프러스텀 별로 depth bias가 달라질 필요가 있는데 도저히 수동세팅으론 맞출 수가 없다. ddx,ddy명령을 이용해서 텍셀 샘플링할때 최적의 bias를 구하는 방법이 있는거 같은데 코드를 봐도 모르겠어서 일단 보류했다.

구현을 해서 돌려보긴 했는데 기존의 라이트맵에 비해서 퀄리티는 확실히 떨어진다. 내가 못해서 그런거겠지만. 일단은 기존의 라이트맵 방식에 캐릭터가 드리우는 그림자만 shadow map으로 처리하는걸로 가닥을 잡았다. 간단하게 전체 씬에도 shadow map을 적용할 수 있도록 했으므로 추후에라도 좋은 방법을 알게 되면 전체 씬에 다시 한번 적용해볼 생각이다.

Light Map Off , Non shadow map
53a2623d8f8b48138ecd2538c8fddeac
Light Map Off , Cascade Shadow Maps 전체 적용
93168ca838573a284c21f01322eff071

Cascade Shadow Maps 적용 상태. 잘려진 프러스텀과 대응하는 쉐도우맵 텍스쳐

78838ff3973c07e81336764138a4330f
Light Map On , Cascade Shadow Maps 캐릭터 그림자에만 적용

94df564388f29bbd47ef30e195bb7467
캐릭터 Non Self Shadow

cb034dc0dd1f18a7e06d6254ec901127
캐릭터 Self Shadow

57d30d0dbeb715be908eaf3aaf1f2cdb
생각나면 더 건드려보겠지만 일단 그림자 건은 이걸로 마무리 지으려 한다.


답글 남기기

댓글을 게시하려면 다음의 방법 중 하나를 사용하여 로그인 하세요:

WordPress.com 로고

WordPress.com의 계정을 사용하여 댓글을 남깁니다. 로그아웃 /  변경 )

Facebook 사진

Facebook의 계정을 사용하여 댓글을 남깁니다. 로그아웃 /  변경 )

%s에 연결하는 중