쉐도우 맵 원리

lenore·2026년 2월 7일

쉐도우맵의 원리를 단계별로 설명해드릴게요.

기본 개념

쉐도우맵은 2-Pass 렌더링 방식입니다:

Pass 1: 광원 시점에서 깊이 기록

  • 광원 위치에 가상 카메라를 놓고 씬을 렌더링
  • 각 픽셀에 광원으로부터의 거리(depth)를 텍스처에 저장
  • 이게 "Shadow Map"입니다

Pass 2: 실제 카메라 렌더링 + 그림자 판정

  • 각 픽셀을 렌더링할 때:
    1. 해당 픽셀의 월드 위치를 광원 공간으로 변환
    2. 쉐도우맵에서 저장된 깊이값 읽기
    3. 현재 픽�셀의 광원거리와 비교
// 핵심 로직 (개념)
float shadowMapDepth = ShadowMap.Sample(픽셀UV좌표);
float currentDepth = 현재픽셀의광원거리;

if (currentDepth > shadowMapDepth + bias)
{
    // 가려짐 = 그림자
    return 0.0; 
}
else
{
    // 빛 받음
    return 1.0;
}

실제 예시로 이해하기

손전등을 들고 벽 앞에 공을 놓았다고 상상해보세요:

  1. 쉐도우맵 생성: 손전등 위치에서 본 장면을 찍으면 "공까지 50cm, 벽까지 100cm"라는 깊이 정보가 기록됨

  2. 그림자 판정: 벽의 각 점을 그릴 때

    • 벽 위의 점 A: "광원에서 100cm, 쉐도우맵에는 100cm 기록" → 빛 받음
    • 벽 위의 점 B: "광원에서 100cm인데, 쉐도우맵에는 50cm 기록" → 중간에 공이 가림 → 그림자
profile
VFX Artist in Korea

0개의 댓글