셀프쉐도우를 넣기 위해서 손을 대기 시작한게 cascade shadow maps까지 와 버렸다.
일단 캐릭터를 위한 그림자로선 충분히 효과를 얻었으나 내친 김에 전체 씬을 cascade shadow maps으로 다 덮어버리면 어떨까 해서 이리저리 실험을 해봤다.
역시나 문제가 있는데 cascade된 뷰프러스텀 별로 depth bias가 달라질 필요가 있는데 도저히 수동세팅으론 맞출 수가 없다. ddx,ddy명령을 이용해서 텍셀 샘플링할때 최적의 bias를 구하는 방법이 있는거 같은데 코드를 봐도 모르겠어서 일단 보류했다.
구현을 해서 돌려보긴 했는데 기존의 라이트맵에 비해서 퀄리티는 확실히 떨어진다. 내가 못해서 그런거겠지만. 일단은 기존의 라이트맵 방식에 캐릭터가 드리우는 그림자만 shadow map으로 처리하는걸로 가닥을 잡았다. 간단하게 전체 씬에도 shadow map을 적용할 수 있도록 했으므로 추후에라도 좋은 방법을 알게 되면 전체 씬에 다시 한번 적용해볼 생각이다.
Light Map Off , Non shadow map
Light Map Off , Cascade Shadow Maps 전체 적용
Cascade Shadow Maps 적용 상태. 잘려진 프러스텀과 대응하는 쉐도우맵 텍스쳐