쉐도우맵의 원리를 단계별로 설명해드릴게요.
쉐도우맵은 2-Pass 렌더링 방식입니다:
Pass 1: 광원 시점에서 깊이 기록
Pass 2: 실제 카메라 렌더링 + 그림자 판정
// 핵심 로직 (개념)
float shadowMapDepth = ShadowMap.Sample(픽셀UV좌표);
float currentDepth = 현재픽셀의광원거리;
if (currentDepth > shadowMapDepth + bias)
{
// 가려짐 = 그림자
return 0.0;
}
else
{
// 빛 받음
return 1.0;
}
손전등을 들고 벽 앞에 공을 놓았다고 상상해보세요:
쉐도우맵 생성: 손전등 위치에서 본 장면을 찍으면 "공까지 50cm, 벽까지 100cm"라는 깊이 정보가 기록됨
그림자 판정: 벽의 각 점을 그릴 때