CS/그래픽스 & 게임수학

unity 그림자 구현

혀니리리 2023. 12. 15. 16:20
728x90

Unity) 그림자(Shadow) :: 뻔뻔한블로그 (tistory.com)

 

Unity) 그림자(Shadow)

1. 그림자 빛이 지나가는 경로에 불투명한 물체가 존재하여 빛이 통과하지 못해 생기는 어두운 부분이다. 게임에서 그림자는 모든 물체를 입체감을 더해주는 요소이다. 그림자가 있으면 사물의

funfunhanblog.tistory.com

 

쉐도우 맵의 원리

뎁스 텍스쳐 생성

(카메라를 통해서 현재 씬이 렌더링되는 정보를 렌더링하는 과정)

 

렌더링될 픽셀의 컬러 대신 카메라로부터 픽셀의 위치까지의 거리를 렌더링함
(카메라 가까이 있는 픽셀일수록 검은색 , 멀수록 흰색)

 

그 후, 그림자 처리를 위한 별도의 버퍼 필요.

이 버퍼에는 광원에서 바라보는 오브젝트의 픽셀의 깊이를 저장함.

-> 이것이 쉐도우맵

 

그림자의 깊이를 저장하는 버퍼를 만든 후, 픽셀 쉐이더에서 깊이를 비교하는 과정을 진행함

+ 넓은 영역을 커버하기 위해 여러 구역으로 나누기도 하고, 계단 현상을 없애기 위해 여러번 샘플링하여 필터링 처리하는 부가적인 기능도 추가하기도 함..

 

=> 이 과정으로 인해 그림자가 렌더링비용 중 많은 부분 차지하게 됨

 

뎁스 텍스쳐  + 쉐도우 맵 완성되면

이 둘을 비교하여 그림자 영역을 계산함.

뎁스 텍쳐에 있는 픽셀들 순회하면서 해당 픽셀을 광원으로부터 거리로 변환하여 비교

 

728x90

'CS > 그래픽스 & 게임수학' 카테고리의 다른 글

Double buffering  (1) 2023.12.15
diffuse / ambient / specular  (0) 2023.12.15
DiretX / OpenGL  (1) 2023.12.15
게임에서의 삼각함수 활용  (2) 2023.12.11
게임에서의 외적과 내적  (1) 2023.12.11