Version: 2017.3
UIElements 사용 시작(Getting started with UIElements)
라이트맵 경계 부분 꿰매기

프로그레시브 라이트매퍼(Progressive Lightmapper)

정의

프로그레시브 라이트매퍼는 Unity 에디터에서 프로그레시브 업데이트 방식으로 베이크된 라이트맵과 라이트 프로브를 제공하는 경로 추적 기반 라이트매퍼 백엔드입니다.

프로그레시브 라이트매퍼는 짧은 준비 단계(지오메트리 및 인스턴스 업데이트, G버퍼 및 차트 마스크 생성)를 거쳐 결과물을 매우 빠르게 생성하기 시작합니다. 새 중간 결과가 준비되는 즉시 새 라이트맵과 라이트 프로브가 표시됩니다. 따라서 매우 빠른 반복 워크플로가 가능합니다.

사용해야 하는 이유

Enlighten 기반이었던 이전의 베이크된 라이트맵용 라이트매퍼는 미리 계산된 실시간 GI를 사용하여 간접 조명을 생성했습니다. 이러한 이유로 조명만 변경하면 새 라이트맵을 꽤 빨리 만들 수 있다는 장점과 사용자가 베이크만 하려 할 때에도 모든 UV 레이아웃 제약이 적용된다는 단점이 공존했습니다. 프로그레시브 라이트매퍼의 UV 요구 사항은 베이크된 라이트매핑에서 요구되는 일반적인 사항과 같습니다.영역이 작고 각도 오류가 없는 겹치지 않는 UV가 있어야 하고, 차트 사이에는 적절한 패딩이 유지되어야 합니다.

새 라이트매퍼는 결과물을 즉시 생성한 후 점진적으로 다듬는 방식으로 작동하므로 조명 워크플로가 크게 개선되어 인터랙티브 조명 워크플로가 가능합니다. 또한 베이크 시간도 훨씬 더 규칙적입니다.

인터랙티브 워크플로를 자세하게 설명하는 비디오를 여기에서 시청할 수 있습니다.

또한 이 새로운 기법은 앱샘플링 방식을 사용하거나 복사 조도 캐시 또는 다른 전역 데이터 구조를 사용하지 않고 각 개별 텍셀의 라이트맵 해상도 수준으로 전역 조명을 베이크할 수 있습니다. 따라서 이 기법을 활용하면 라이트맵 일부를 선택하여 베이크할 수 있어 반복 속도를 크게 높일 수 있습니다.

설정

새로 생성된 씬에는 기본적으로 프로그레시브 라이트매퍼가 활성화되어 있습니다. 기존에 만든 씬은 “Progressive (experimental)” 베이크 백엔드를 선택할 때까지 Enlighten이 선택되어 있습니다.

설정 항목

  • Bake Backend - “Enlighten”이 이전 베이크 백엔드이고, “Progressive (experimental)”가 새로운 베이크 백엔드입니다.
  • __Stationary Lighting Mode: __ 씬의 모든 고정 광원에 사용할 씬 조명 모드를 지정합니다. Baked Indirect, Distance Shadowmask, Shadowmask, Subtractive 옵션이 있습니다. 현재는 광원 모드가 지원되지 않으므로 ‘Baked Indirect’로 설정하고 ‘고정’ 광원(stationary light)은 사용하지 않아야 합니다. 이 모드는 곧 지원할 예정입니다.
  • Lightmap Resolution - 월드 단위당 텍셀의 양입니다. 이 값을 2배로 높이면 연산해야 할 텍셀의 양이 4배로 증가한다는 것에 유의하십시오. 아래 통계에서 “Occupied texels” 개수를 확인할 수 있습니다.
  • Lightmap Padding - 아틀라스 내 여러 인스턴스 사이의 패딩(텍셀 단위)입니다. 인스턴스 내 UV 차트 사이의 패딩을 변경하려면 고급 설정의 ‘Generate Lightmap UVs’에서 메시 임포터의 ‘Pack Margin’을 조정해야 합니다.
  • Compress Lightmaps - 중간 라이트맵은 압축되지 않지만 최종 라이트맵은 압축됩니다.
  • Samples - 각 텍셀에서 방출된 샘플(경로)의 양입니다. 일부 씬, 특히 야외 씬에서는 100개 샘플이면 충분할 수 있습니다. 발광 지오메트리가 있는 실내 씬에서는 더 많은 샘플이 필요합니다.
  • Bounces - 경로를 추적할 때 이루어지는 간접 바운스 횟수입니다. 대부분의 씬에서는 두 번 정도의 바운스면 충분합니다. 일부 실내 씬에서는 더 많은 바운스가 필요할 수 있습니다.
  • Filtering - 노이즈를 제한하도록 라이트맵 포스트 프로세싱을 설정합니다. None, Auto, Advanced 중에서 선택할 수 있습니다. Advanced 옵션을 선택하면 수동 설정을 위한 파라미터 세 개가 추가로 나타납니다. Auto 모드에서는 Advanced 모드의 기본값이 사용됩니다.
    • __Direct Radius: __ 라이트맵 내 직접광의 가우스 필터 반지름(텍셀 단위)입니다. 반지름이 클수록 블러 세기가 증가합니다.
    • __Indirect Radius: __ 라이트맵 내 간접광의 가우스 필터 반지름(텍셀 단위)입니다. 반지름이 클수록 블러 세기가 증가합니다.
    • __AO Radius: __ 라이트맵 내 앰비언트 오클루전의 가우스 필터 반지름(텍셀 단위)입니다. 반지름이 클수록 블러 세기가 증가합니다.
  • Prioritize View - 활성화하면 씬 뷰의 카메라 절두체에서 현재 보이는 텍셀을 우선적으로 처리합니다. 라이트매퍼는 이 텍셀을 완료한 이후에 뷰 밖에 있는 다른 텍셀을 계속 처리합니다.

통계

‘Auto Generate’ 및 ‘Generate Lighting’ 옵션 아래의 패널에는 생성된 라이트맵의 양, 뷰 안에 있는 라이트맵과 뷰 밖에 있는 라이트맵 수, 베이크 성능이 표시됩니다.

라이트맵 파라미터

라이팅 창의 베이크된 GI 설정 외에, Lightmap Parameters 에셋에는 설정 가능한 새로운 파라미터인 Anti-aliasing Samples, Pushoff, Backface Tolerance가 추가되어 있습니다. 씬의 기본 라이트맵 파라미터는 General GI > Default Parameters에서 설정하거나 렌더러별로 설정할 수 있습니다.

  • Anti-aliasing Samples - 계단현상(앨리어싱)을 줄이기 위해 텍셀을 슈퍼샘플링하는 횟수입니다. [1;3] 샘플은 슈퍼샘플링을 비활성화하고, [4;8] 샘플은 2x 슈퍼샘플링을 제공하고, [9;256] 샘플은 4x 오버샘플링을 제공합니다. (UX의 관점에서 보면 약간 이상하지만, 개선할 계획입니다.) 주로 포지션과 노멀 버퍼에 사용되는 메모리 양에 영향을 미칩니다. (2x 시 메모리가 4배 더 많이 사용되고, 4x 시 메모리가 16배 더 많이 사용됩니다.)
  • Pushoff - 광선 추적을 위해 노멀을 따라 광선 원점을 밀어서 지오메트리에서 멀리 떨어트릴 거리(모델링 단위)입니다. 모든 베이크된 라이트맵에 적용되므로 직접광, 간접광, 앰비언트 오클루전에 영향을 미칩니다. 원치 않는 오클루전/그림자를 없애는 데 유용합니다.
  • Backface Tolerance - 출력 텍셀에서 투사된 광선이 유효한 것으로 간주되기 위해 전면에 닿아야 하는 광선의 비율입니다. 텍셀에서 투사된 광선 중에 후면에 닿는 광선이 너무 많으면(텍셀이 어떤 지오메트리 안에 있음) 텍셀을 무효화할 수 있습니다. 이 경우 주위 텍셀에서 유효한 값을 복제하여 결함을 방지합니다. 예를 들어 후면 허용치를 0.0으로 설정하면, 텍셀에서 후면만 보일 때에만 텍셀이 거부됩니다. 후면 허용치를 1.0으로 설정하면, 후면에 닿는 광선이 하나만 있어도 광선 원점이 거부됩니다. Baked Texel Validity 씬 뷰 모드에서 유효한 텍셀은 녹색으로, 유효하지 않은 텍셀은 빨간색으로 나타납니다. 씬에 단면 메시가 있는 경우 이 기능을 영(0)으로 설정하여 비활성화하는 것이 좋습니다. 나중에 Unity 에디터에서 양면 플래그를 추가하여 이 문제를 해결할 수 있습니다.

나머지는 Unity 5 워크플로입니다. 오브젝트를 정적으로 표시하고, 일부 광원 입력(광원, 환경 조명 또는 정적 오브젝트의 발광 머티리얼)을 베이크됨으로 설정합니다.

“Auto” 모드에서는 라이트맵과 라이트 프로브가 자동으로 연산됩니다. “Auto”를 비활성화했다면 “Build” 버튼을 눌러야만 베이크가 시작됩니다.

기타 기능

Force stop: 요청된 양의 샘플이 실제로 완료되기 전에 베이크를 임의 시점에 중지할 수 있습니다. 조명이 수동으로 빌드된 경우에 사용할 수 있습니다. 최대 샘플 수가 100,000이고 뷰 우선 순위 지정을 비활성화할 수 있는 기능이 있으므로 컴퓨터에서 계속 베이크되도록 놔두고 결과가 좋아 보일 때 언제든지 베이크를 중지할 수 있습니다..

Invalid texels: Backface Tolerance 파라미터(LightmapParameters > General GI)에 따라 유효하지 않은 텍셀이 표시되고, 주위의 유효한 텍셀을 사용하여 유효하지 않은 텍셀을 채웁니다. 이 작업을 처리하는 확장 프로세스는 라이트맵이 계속 개선될 때보다 라이트맵이 통합된 후에 반복을 더 많이 수행합니다.

Supersampling: 조명 품질은 슈퍼샘플링 양에 따라 달라집니다. ‘Anti-aliasing Samples’ 프로퍼티(Lightmap Parameters > Baked GI, 위의 라이트맵 파라미터 섹션 참조)를 사용하여 설정합니다.

프로젝트 예제

프로젝트는 프로그레시브 라이트매퍼에 필요한 설정을 사용하여 설정되었습니다. 에셋 스토어에서 제공되는 Tanks! 프로젝트의 한 버전입니다. 5분 내에 베이크되고, 1024x1024 라이트맵이 11개 있습니다. 이 프로젝트의 인터랙티브 워크플로를 설명하는 비디오를 시청할 수 있습니다.


  • 2017–07–04 편집 리뷰 없이 페이지 게시됨

  • 2017–07–04 Unity 5.6의 새로운 기능(실험 단계)

UIElements 사용 시작(Getting started with UIElements)
라이트맵 경계 부분 꿰매기