응애맘마조
그림자매핑 본문
주의 : 해당 게시물에서 작성될 내용은 과제를 해결하기 위해 출처의 내용을 그대로 작성한 부분이 많으며 일절 광고나 수익 창출 목적으로 쓰인 것이 아님을 밝힙니다.
그림자매핑은 그림자 맵을 사용 하여 물체의 그림자를 표현하는 한 방법이며 물체의 깊이를 그리는 가장 많이 사용되는 기법입니다. (여기서 그림자 맵은 깊이 값을 가지고 있는 텍스쳐입니다.)
원리는 광원에서 바라본 물체의 깊이값과 카메라에서 바라본 물체의 깊이값이 서로 다르기에 이 값을 이용해서 광원으로부터 차폐물까지 거리 정보를 구할 수 있고 이 값을 깊이 버퍼에 넣어 그림자를 만듭니다.
먼저 광원으로부터 빛이 물체에 차폐되는 빛의 정보를 깊이 버퍼에 기록합니다. 이 정보는 광원에서 출발한 빛이 물체에 차단될 때까지의 거리값입니다. 그리고 렌더링시 차폐되는 부분은 그림자로 처리합니다.
광원 공간에서 깊이값과 카메라 공간에서의 깊이값이 같지 않기 때문에 이 차이가 있는 곳에 그림자가 생기게 됩니다.
세부적인 방법으로는 광원 위치에 카메라를 두고 물체들의 깊이를 그립니다.
렌더링 결과를 담을 수 있는 텍스쳐를 렌더 타깃이라 하는데 그림자를 드리우는 물체들의 깊이값을 텍스쳐에 저장하여 픽셀쉐이더에서 사용할 수 있게 그림자맵을 만듭니다. 픽셀쉐이더에서 각 픽셀별 조명계산을 할 때 물체의 깊이를 구하고 그림자맵에서 작성한 현재 픽셀의 깊이값을 읽어와 비교하여 그림자맵값이 더 작으면 그림자를 생성합니다.
읽어주셔서 감사합니다.
'공부 > 3D과제' 카테고리의 다른 글
키프레임 (0) | 2023.06.28 |
---|---|
포워드 렌더링, 디퍼드 렌더링 (0) | 2023.06.27 |
obj 파일 로드하기 (0) | 2023.06.26 |
노멀 매핑, 탄젠트 스페이스 (0) | 2023.06.23 |
스키닝 애니메이션 (0) | 2023.06.22 |
Comments