프로그래밍 2013. 12. 10. 20:53
728x90

깊이 버터라 타이핑 할 뻔 했네요. ㅎㅎ

 

빠다가 먹고 싶어!

 

깊이 버퍼 그림자를 구현시에는

필연적으로

카메라 거리에 따른 그림자의 퀄리티 저하와,

 

(화면에 여러개의 오브젝트가 있을 때에

모든 오브젝트의 깊이맵을 하나의 쉐도우맵에 담으려면 카메라를 좀 멀리 잡을 수 밖엔 없습니다

카메라를 멀리 잡아, 보여지는 뷰는 커집니다.

하지만 렌더타겟 텍스쳐의 크기는 한계가 있습니다. (512, 1024, 2048....... )

이 큰 뷰를 작은 텍스쳐 영역에 찍다보니

그림자들이 도트를 찍는듯 해집니다.

퀄리티가 많이 떨어져 버립니다.

반대로

아주 가까운 카메라 거리에서 바라보며

쉐도우 맵을 만들게 되면

퀄리티 높은 쉐도우맵이 출력됩니다.

물론 다수의 오브젝트가 모두 담기기에는 힘들게 됩니다.

카메라 거리에 따라

보이지 않는 오브젝트는 잘리겠지요.

 

렌더타겟의 텍스쳐 크기가 클수록 좀 더 좋은 퀄리티의 쉐도우맵을 얻게 됩니다.

다만, 현실적으로 텍스쳐 크기에는 한계가 있습니다.

)

 

칼로 자른 듯한 딱딱한 경계선을 만나게 됩니다.

 

위의 문제들은 그냥 넘기기에는

참!

너무도 티가 많이 나서

건드리고 싶지는 않지만

결국

건드리게 되더군요.

 

결론적으로

깊이 버퍼 그림자 구현은

 

shadow 맵 생성과 렌더링

+ 카메라 거리에 따라 저품질화되는 shadow 퀄리티 보정

+ shadow 렌더시 부드러운 경계 처리

 

이렇게 세가지 구현이 필수적으로 필요해 집니다.

 

위 세가지 구현외에도,

better better 더 나은 그림자 품질을 뽑아내기 위해서

알려진 많은 기법들이 있습니다.

 

실제 게임에 사용되고 있는 그림자 기법에 대해서는

udn( 언리얼엔진 참조 문서 ) 에 개략적으로 잘 설명되어 있었습니다.

 

http://msdn.microsoft.com/en-us/library/windows/desktop/ee416307(v=vs.85).aspx

 

http://udn.epicgames.com/Three/ShadowingReference.html

 

 

제가 기본적인 필요사항에 촛점을 맞추어,

관심을 가지고 살펴 본 기법들입니다.

 

cascade shadow map

variation shadow map (vsm)

percentage-closer filtering (pcf)

 

 

 

 

728x90
posted by BK dddDang
: