icon안동민 개발노트

그림자 옵션과 성능 최적화


 언리얼 엔진에서 그림자는 게임의 시각적 품질과 분위기를 크게 향상시키지만, 동시에 성능에 상당한 영향을 미칠 수 있습니다.

 이 가이드에서는 그림자 설정과 최적화 방법을 상세히 살펴보겠습니다.

그림자 유형 및 특성

 정적 그림자

  • 특성 : 미리 계산된 그림자, 성능 부하 최소
  • 설정 : Light > Details > Mobility: Static

 동적 그림자

  • 특성 : 실시간 계산, 높은 성능 부하
  • 설정 : Light > Details > Mobility: Movable

 캐스케이드 섀도우 맵 (CSM)

  • 특성 : 디렉셔널 라이트용, 거리에 따라 해상도 조절
  • 설정 : Directional Light > Details > Cascaded Shadow Maps

 예시 설정

Dynamic Shadow Distance: 7000
Num Dynamic Shadow Cascades: 4
Distribution Exponent: 3

그림자 품질 옵션 조정

 그림자 해상도

 설정 : Project Settings > Engine > Rendering > Shadows

Shadow Map Quality: Epic (고품질) ~ Low (저품질)

 그림자 필터링

 설정 : Light > Details > Shadow > Shadow Filter Sharpness

값이 낮을수록 부드러운 그림자 (성능 부하 증가)

그림자 바이어스 설정

 목적 : 그림자 아티팩트 (셀프 섀도잉) 감소

 설정 : Light > Details > Shadow > Shadow Bias

Shadow Bias: 0.5 (기본값, 상황에 따라 조정)
Shadow Slope Bias: 0.5 (경사면 그림자용)

그림자 맵 해상도 최적화

 전역 설정

 Project Settings > Engine > Rendering > Shadows

Shadow Map Resolution: 1024 (기본값, 성능에 따라 조정)

 개별 라이트 설정

 Light > Details > Shadow > Shadow Resolution Scale

값을 낮출수록 성능 향상, 품질 저하

거리 필드 그림자

 특성 : 대규모 환경에서 효율적인 그림자 렌더링

 설정 활성화

  1. Project Settings > Engine > Rendering > Lighting > Distance Field Shadows
  2. Static Mesh > Details > Distance Field > Generate Distance Field

 사용 예

Directional Light > Details > Distance Field Shadows: True

그림자 캐싱 기법

 정적 그림자 맵

 설정 : World Settings > Static Lighting > Generate Static Shadow Field

 캐시된 포인트 라이트 섀도우

 설정 : Point Light > Details > Advanced > Use Cached Shadow Map Resolution

대규모 환경에서의 그림자 렌더링 전략

 1. 레벨 스트리밍 활용

  • 현재 플레이어 주변 영역만 상세 그림자 렌더링

 2. LOD (Level of Detail) 시스템 활용

  • 원거리 오브젝트의 그림자 해상도 감소

 3. 거리 기반 그림자 컬링

Directional Light > Details > Dynamic Shadow Distance: 조정

모바일 플랫폼 최적화

 1. 그림자 해상도 감소

Project Settings > Platform > [Mobile] > Shadow Quality: 낮게 설정

 2. 동적 그림자 사용 제한

  • 주요 캐릭터나 중요 오브젝트에만 동적 그림자 적용

 3. 거리 필드 그림자 활용

  • 저사양 모바일 기기에 효과적

성능과 품질 균형

 1. 프로파일링 도구 활용

stat shadows: 그림자 렌더링 성능 확인

 2. 단계적 최적화

  • 고품질 설정에서 시작, 성능 문제 발생 시 점진적 조정

 3. 중요도 기반 최적화

  • 게임플레이에 중요한 요소에 높은 품질의 그림자 적용

그림자가 게임에 미치는 영향

 1. 시각적 깊이감

  • 적절한 그림자로 3D 공간감 강화

 2. 분위기 조성

  • 긴 그림자로 드라마틱한 효과 연출
  • 부드러운 그림자로 안정적인 분위기 조성

 3. 게임플레이 영향

  • 스텔스 게임에서 그림자를 숨김 요소로 활용

일반적인 그림자 문제 해결

 1. 셀프 섀도잉 아티팩트

  • 그림자 바이어스 값 조정
  • 메시의 노멀 맵 품질 확인

 2. 그림자 깜박임

  • 캐스케이드 섀도우 맵 설정 조정
  • 정적 및 동적 그림자 전환 지점 확인

 3. 성능 저하

  • 그림자 캐스팅 오브젝트 수 줄이기
  • 그림자 해상도 및 품질 단계적 감소

 언리얼 엔진에서 그림자 설정은 시각적 품질과 성능 사이의 균형을 맞추는 중요한 과정입니다.

 정적 그림자는 성능 효율이 높지만 유연성이 떨어지고 동적 그림자는 실시간 상호작용이 가능하지만 성능 부하가 높습니다.

 캐스케이드 섀도우 맵은 대규모 환경에서 효율적인 그림자 렌더링을 가능하게 합니다.

 거리에 따라 그림자 해상도를 조절함으로써 가까운 영역에는 상세한 그림자를, 먼 영역에는 저해상도 그림자를 적용할 수 있습니다.

 그림자 바이어스와 필터링 설정은 그림자의 세부적인 품질을 조절하는 데 중요합니다. 바이어스 값을 조절하여 셀프 섀도잉 아티팩트를 줄일 수 있으며 필터링 설정을 통해 그림자의 부드러움을 조절할 수 있습니다.

 이러한 설정은 그림자의 시각적 품질을 향상시키지만 동시에 성능에도 영향을 미치므로 신중한 조정이 필요합니다.

 대규모 환경에서는 거리 필드 그림자와 그림자 캐싱 기법이 효과적입니다.

 거리 필드 그림자는 복잡한 지오메트리에 대해서도 효율적인 그림자 렌더링을 가능하게 하며 그림자 캐싱은 반복적으로 계산되는 그림자의 성능 부하를 줄여줍니다.