Unity 내일배움캠프 TIL 1128 | Baked Lighting

cheeseonrose·2023년 11월 30일
0

Unity 내일배움캠프

목록 보기
88/89
post-thumbnail

[유니티 TIPS] 핵심만 쏙쏙! Baked Lighting 이해하기

💡 Baked Lighting



🥕 Shadow

  • 입체감과 공간감을 직관적으로 보여줌
  • 그래픽에서 표현하기 위해서 매우 비싼 연산
  • 대부분 Shadowmap 기법을 사용해서 표현
  • Dethmap (Depth from the camera)
    • 카메라로부터 픽셀이 얼마나 떨어져있는지
    • 카메라 기준
  • Shadowmap (Depth from the light)
    • Light 기준의 Depthmap
    • Directional Light는 방향만 있어서 Position이 없음
      → Shadowmap에서 만들기 위해 가상의 Position을 이용
  • 그림자가 생긴다 ⇒ 빛이 맺힌다
    • 표면에 빛이 맺히지 않아서 어둡게 보이는 것
    • Light로부터의 거리를 Shadowmap에 저장
    • 현재 그림자 처리를 하려는 pixel이 Shadowmap에 저장된 데이터보다 멀리 있는가, 가까이 있는가
      → 멀리 있으면 그림자로 판단
  • Hard Shadow는 한 번만 샘플링
  • Soft Shadow는 경계를 부드럽게 만들기 위해 여러 번 샘플링



🥔 Global Illumination

  • 직접 광(Direct)과 간접 광(Indirect)
  • 직접 닿는 빛이 직접 광, 다른 곳에 반사되어 닿는 빛이 간접 광
  • GI를 실시간으로 연산하는 것은 성능에 매우 큰 영향
    → 미리 구워놓음
  • 환경 광
    • GI를 시뮬레이션 한 것
    • 3가지 모드
      • Skybox : Skybox로부터 빛을 뽑아냄
      • Gradient : 오브젝트의 Normal 방향에 따라 세 가지 컬러를 간략히 표현
      • Color : 단색 컬러
    • 기본 환경 광만으로는 부족
      → Lightmap, Light Probe, Reflection Probe 등이 필요



🍠 Lightmap

  • Light를 map(Texture)로 만든 것
  • 오브젝트의 UV를 펴서 그 위에 Light를 그리는 것
  • Ambient Occlusion도 Lightmap에 넣을 수 있음
  • Mesh Renderer - Receive Global Illumination
    • Lightmap 사용 설정 가능
  • 메모리 이슈 발생 가능
  • 드로우 콜 배치에 영향
    • Texture가 나눠지게 되므로 한 번의 콜에 처리할 수 없음
  • Lightmap의 해상도를 높일수록 퀄리티는 좋아지지만 메모리를 많이 차지
  • Directional vs Non-Directional
    • Directional은 Normal 정보까지 포함해서 더 정밀한 Light 표현
      → Specular까지 표현하진 않음
    • 시각적 효과보다 메모리 크기가 늘어날 수 있음
  • 프로젝트와 메모리, 해상도 등의 상황에 따라 적절하게 사용 결정
  • Baked Indirect
    • 간접 광 정보만 저장
    • 그림자는 Realtime
  • Substractive
    • 전통적인 라이트 맵 처리 방법
    • 동적인 오브젝트만 Realtime 연산
    • Realtime과 Baked 그림자 차이 발생
  • Shadowmask
    • 그림자 정보를 따로 저장
    • Realtime과 Baked가 자연스럽게 이어짐
  • Distance Shadowmask
    • 가까운 거리는 Realtime
    • 일정 거리 이상은 Realtime 대신 Baked
    • 드로우 콜이 많아질 수 있음



🌽 Light Probe

  • 주로 동적인 오브젝트에 사용
  • 표면에 대한 정보를 기록한 것이 Lightmap, 공간에 대한 정보를 기록한 것이 Light Probe
  • 어두운 영역에 가면 Shadow가 어두워지고 밝은 영역에 가면 밝아짐
  • Light Probe끼리 서로 보간을 해줌
    • 오브젝트가 이동할 때마다 서로 보간하여 자연스럽도록 처리
  • 실제 Scene에서는 Light Probe들을 수동으로 깔아야 함
    • 자동 API가 있지만 수동으로 할 수 밖에 없음
  • 무작정 많이 하면 Volume이 커질 수 있음
  • Mesh Renderer - Receive Global Illumination
    • Light Probe 사용 설정 가능
  • 구면 조화 함수(SH)
    • 숫자를 저장하는 것 (계수)
      → 데이터 사이즈가 작음
  • 선형 보간 가능



🌰 Reflection Probe

  • 반사 정보를 Texture로 저장
  • Cubemap Texture
    • 6장의 이미지
    • Scene에 많이 배치하게 되면 메모리 이슈 발생 가능



끄읏

0개의 댓글