씬이 커질수록 성능이 더 중요한 고려사항이 됩니다. 이에 대응할 수 있는 방법 중 하나는 카메라가 오브젝트에서 떨어진 정도에 따라 메시의 디테일 수준(LOD)을 각기 다르게 설정하는 것입니다. 이를 Level of Detail(약자로 LOD)이라고 합니다.
LOD Groups 는 게임 오브젝트의 디테일 수준(LOD)을 관리하는 데 사용합니다. 디테일 수준(LOD)은 하나의 오브젝트에 여러 메시를 사용하는 최적화 기법입니다. 메시는 지오메트리의 디테일이 점점 감소하는 동일한 오브젝트를 나타냅니다. 근본 개념은 오브젝트가 카메라에서 멀 때 디테일이 낮은 메시를 표시해도 차이가 인식되지 않게 하는 것입니다. 지오메트리가 더 단순한 메시는 하드웨어에 가하는 부담이 덜하므로, LOD를 적절히 사용하여 성능을 개선할 수 있습니다.
여러 다른 LOD 수준은 카메라 아이콘이 바로 위에 있는 가로 바에 표시됩니다(LOD: 0, LOD: 1, LOD: 2 등). LOD 바의 백분율은 LOD 수준이 활성화되는 스크린 높이에 대한 바운딩 박스 높이의 분수값을 나타냅니다. 바를 분리하는 세로 선을 드래그하여 백분율 값을 변경할 수 있습니다. 또한 LOD 수준을 마우스 오른쪽 버튼으로 클릭한 후 컨텍스트 메뉴에서 Insert Before 또는 Delete 를 선택하여 추가하거나 제거할 수도 있습니다. 바 위의 카메라 아이콘 포지션은 현재 백분율을 나타냅니다. LOD 바의 백분율은 해당 LOD 수준이 활성화되는 임계값을 나타냅니다. 이 값은 오브젝트가 스크린 공간에서 차지하는 높이와 스크린 높이의 비율로 측정됩니다. LOD 바이어스가 1이 아닌 경우 카메라 포지션은 LOD가 전환되는 실제 포지션이 아닐 수 있습니다.
LOD 바 중 하나를 클릭하여 선택하면 Renderers 패널이 밑에 표시됩니다. “렌더러”는 사실 LOD 수준을 나타내는 메시가 포함된 게임 오브젝트이며, 일반적으로 LODGroup 컴포넌트가 포함된 오브젝트의 하위 오브젝트입니다. Renderers 패널에서 (“Add”라는 단어가 있는) 빈 박스를 클릭하면 해당 LOD 수준에 맞는 오브젝트를 선택할 수 있는 오브젝트 브라우저가 나타납니다. 어떤 오브젝트든 렌더러로 선택할 수 있지만, 이 오브젝트가 하위 오브젝트가 아닌 경우 LODGroup 게임 오브젝트의 상위 오브젝트로 지정할 것인지 묻는 메시지가 나타납니다.
Unity 5부터 각 LOD 수준의 페이드 모드를 선택할 수 있습니다. 페이딩은 두 개의 인접 LOD를 “블렌드”하여 부드러운 전환 효과를 얻기 위해 사용됩니다. 하지만 Unity는 LOD 지오메트리를 블렌드하는 디폴트 빌트인 기술을 제공하지 않습니다. 게임 타입과 에셋 제작 파이프라인에 따라 독자적인 기술을 구현해야 합니다. Unity는 오브젝트의 스크린 크기를 사용하여 “블렌드 인자”를 계산하고 셰이더에 전달합니다.
다음 두 가지 모드로 블렌드 인자를 산출할 수 있습니다.
백분율: 오브젝트의 스크린 높이가 현재 LOD 높이 백분율에서 다음 백분율로 전환될 때 블렌드 인자가 1에서 0으로 변합니다. 현재 LOD의 메시만 렌더링됩니다. 크로스 페이드: 전환 너비 값을 지정하여 현재 LOD 끝에 다음 LOD로 전환될 크로스 페이딩 존을 정의해야 합니다. 전환 존에서 두 LOD 수준이 모두 렌더링됩니다. 블렌드 인자는 현재 LOD의 경우 1에서 0으로 바뀌고 다음 LOD의 경우 0에서 1로 바뀝니다.
블렌드 인자 는 셰이더 프로그램에서 unity_LODFade.x uniform
변수로 액세스됩니다. LOD 페이딩을 사용하여 렌더링된 오브젝트에 대해서는 LOD_FADE_PERCENTAGE
또는 LOD_FADE_CROSSFADE
가 키워드로 선택됩니다.
명명 규칙에 대한 자세한 내용은 디테일 수준(LOD) 페이지를 참조하십시오.
SpeedTree 트리의 예에서 LODGroup 이 설정되는 방법과 SpeedTree 셰이더가 unity_LODFade
변수를 이용하는 방법을 확인해야 합니다.
인스펙터 하단에는 Recalculate 버튼이 2개 있습니다. Bounds 버튼을 누르면 새로운 LOD 수준 추가 후의 오브젝트 바운딩 볼륨이 다시 산출됩니다. Lightmap Scale 버튼을 누르면 변경된 LOD 수준 경계에 따라 라이트맵의 Scale in Lightmap 프로퍼티가 업데이트됩니다.