반응형

 

Light Probe는 씬의 GI 정보를 베이킹하는 시스템입니다.

이번 포스팅에서 LightMap 없이 Light Probe만 단독으로 사용 방법에 대한 리서칭 내용을 작성합니다.

 

 

라이트 프로브 배치

우선 씬에 Light Probe를 배치합니다, Light Probe를 손으로 일일히 설치하는 방법도 있지만 Magic LightProbe 에셋을 활용하여 자동으로 배치 가능합니다.

(Unity 2023에서부터 APV를 지원하지만 이 포스팅은 2023을 올리지 않는 프로젝트를 위해 작성했습니다.)

(https://unity.com/kr/products/pricing-updates)

 

 

 

라이트 베이킹

Light Probe 베이킹을 동작 시키는 목적이기 때문에 베이킹 속도를 위해 Lightmap 세팅은 최저 옵션으로 합니다.

Lighting Mode는 Shadowmask로 세팅합니다.

 

샘플 씬에서 URP Lit 쉐이더를 사용했습니다.

유니티 라이트 베이킹하면 Static 오브젝트는 Lightmap에 구워진 GI 정보를 활용합니다.

Dynamic 오브젝트만 LightProbe의 GI 정보를 받게 되어 있습니다.

 

 

 

Lit 쉐이더 수정

Static 오브젝트를 Lightmap 정보를 사용하지 않고 LightProbe GI 정보를 활용 할 수 있도록 쉐이더 수정이 필요합니다.

샘플 프로젝트에서는 URP Lit 쉐이더를 복제하여 수정했습니다.

 

쉐이더 키워드 중에 LIGHTMAP_ON 키워드를 제거합니다.

 

그럼 아래와 같이 Lightmap의 GI 정보를 사용하지 않기 때문에 어둡게 나옵니다.

 

 

다음 LitForwardPass의 InitializeInputData 함수에서 SAMPLE_GI 디파인 키워드 대신 SampleSH 함수를 직접 호출하게 변경합니다.

(예제에서는 기능 작동 확인을 위해 핵심 코드 수정만 설명드리니, 이 내용 이해를 기반으로 프로젝트에 알맞게 적용하시면 됩니다)

 

 

다음 Lightmap 베이킹한 배경 오브젝트를 복제하고 원본은 비활성화합니다.

기존 원본 오브젝트는 Lightmap 베이킹 모드로 전환되는지, 쉐이더 수정해도 반영되지 않습니다.

하지만 복제되어 새로 생성된 오브젝트는 Lightmap이 아닌 LightProbe GI 정보를 받게 됩니다.

좌 : Lightmap 모드 우 : 일반 모드

 

 

 

 

 

여기까지 진행이 완료되면, 처음에 구웠던 라이트맵 텍스처는 더이상 사용할 일이 없으니 삭제해도 상관없습니다.

 

 

후처리

마지막으로 SSAO와 Postprocess 효과를 적당히 입혀 씬 완성도를 높입니다.

 

 

 

 

 

 

 

 

 

 

 

 

반응형

WRITTEN BY
CatDarkGame
Technical Artist dhwlgn12@gmail.com

,