우들 텍스처

우들 텍스처 인코딩 솔루션을 사용하여 프로젝트의 텍스처를 최적화하는 방법을 간략하게 살펴봅니다.

Choose your operating system:

Windows

macOS

Linux

우들 텍스처(Oodle Texture) 를 통해 다양한 BCn/DXTn 포맷으로 텍스처를 빠르게 고퀄리티로 인코딩할 수 있습니다. 환경설정된 우들 텍스처는 자동으로 백그라운드에서 작동합니다. 우들 텍스처를 전역으로 설정한 다음, LOD 그룹 및 개별 텍스처에 대해 더 구체적으로 정의할 수 있습니다.

우들 텍스처는 ASTC 또는 기타 모바일 포맷은 인코딩하지 않습니다.

우들 텍스처 활성화하기

우들 텍스처 플러그인은 언리얼 엔진에서 기본적으로 활성화됩니다.

우들 텍스처 플러그인

플러그인 외에도 우들 텍스처를 사용하려면 DefaultEngine.ini 파일 설정이 필요합니다.

\Engine\Config\DefaultEngine.ini
[AlternateTextureCompression]
TextureCompressionFormat="TextureFormatOodle"
TextureFormatPrefix="OODLE_"
bEnableInEditor=True

우들 텍스처는 **언리얼 엔진**에서 기본적으로 활성화되므로 위의 라인은 이미 `BaseEngine.ini` 파일에 있습니다.

에디터와 패키지로 만든 빌드 간에 동작 일관성을 유지하기 위해 bEnableInEditor=true 를 그대로 남겨두는 것이 좋습니다. 이를 false 로 설정하면 에디터에서 인코딩 결과를 검토하는 아티스트가 쿠킹 시스템에서 생성하는 것과 다른 결과를 보게 될 것입니다. 로그를 검토하여 우들 텍스처가 활성화되었는지 확인할 수 있습니다.

LogTextureFormatOodle: Display: Oodle Texture 2.9.0 init RDO On with DefaultRDOLambda=30

주어진 텍스처에 우들이 사용되면, 해당 포맷에 OODLE_ 접두사가 포함됩니다.

LogTexture: Display: Building textures: test (OODLE_AutoDXT, 256X256)

우들 텍스처의 핵심 개념

우들 텍스처를 사용하려면 레이트 디스토션 최적화(Rate Distortion Optimization, RDO)람다(Lambda) , 이 두 가지 개념을 이해해야 합니다.

RDO 이해하기

RDO는 크기(레이트)에 대한 퀄리티(디스토션) 절충을 나타내는 용어입니다. 텍스처 인코딩의 경우, 이 말이 이상할 수 있습니다. DXTn/BCn 텍스처는 퀄리티에 따라 크기가 달라지지 않으며, 포맷과 해상도, 밉 수에 따라 고정된 크기이기 때문입니다.

우들 텍스처는 결과로 얻어지는 인코딩된 텍스처 데이터 관리 방법을 선택적으로 노출하므로, 텍스처를 포함하는 uasset이 IOStore/.pak 파일 시스템을 통해 배포용으로 압축될 때 더 작게 압축됩니다. 따라서, 우들 텍스처의 RDO는 배포 크기만 줄입니다.

또한, Kraken 압축 포맷과 함께 작동하도록 조정되어 있습니다. 자세한 내용은 우들 데이터 문서를 참조하세요.

람다 이해하기

얼마나 많은 디스토션이 도입될지 결정함으로써 결과 파일이 얼마나 작을지 결정하는 파라미터를 람다라고 합니다.

람다는 0~100 사이로 설정할 수 있으며, 숫자가 작을수록 디스토션이 적어지고, 따라서 퀄리티가 높아집니다. 30 정도의 람다 값이면 고퀄리티 결과를 생성합니다. 람다 값이 0이면 RDO가 완전히 비활성화되므로, 이론적으로 최고의 퀄리티를 얻을 수 있습니다. 하지만, 최고의 퀄리티를 추구하는 경우라도 람다 값을 1로 하는 것이 좋습니다. 1만 해도 비용 편익 비율이 여전히 매우 좋고 디스토션이 거의 없이 합리적인 배포 크기를 얻을 수 있기 때문입니다.

일반적으로, 람다는 전역으로 설정하고 자주 오버라이드하지 않는 것이 좋습니다. 프로젝트에 적절한 값을 결정하는 것은 필요한 배포 크기를 기반으로 하는 공동 작업이 될 것입니다. 글로벌 람다를 가장 높은 값(최저 퀄리티)으로 설정하고 필요에 따라 LOD 그룹이나 특정한 텍스처에 선택적으로 더 높은 퀄리티/더 낮은 람다 값을 설정하는 것이 가장 좋습니다.

디퓨즈/알베도 맵 이외의 텍스처는 더 낮은 람다 값(보통 5~20)이 필요할 것이며, 특히 노멀 맵이 그렇습니다. 육안으로는 볼 수 없는 디스토션이 스페큘러 하이라이트와 같은 텍스처에서 더 눈에 띌 수 있기 때문입니다.

우들 텍스처 환경설정하기

우들 텍스처는 기본적으로 DefaultEngine.ini 파일을 사용하여 환경설정하지만, 텍스처 LOD 그룹 및 텍스처별로 람다를 노출하기도 합니다.

글로벌 환경설정

DefaultEngine.ini 파일의 TextureFormatOodle 섹션에는 우들 텍스처에 대한 글로벌 세팅이 포함되어 있습니다.

\Engine\Config\DefaultEngine.ini
[TextureFormatOodle]
DefaultRDOLambda=30
GlobalLambdaMultiplier=1.0
bForceAllBC23ToBC7=False
bForceRDOOff=False
bDebugColor=False

세팅

정의

DefaultRDOLambda

다른 곳에서 설정되지 않은 경우 사용되는 RDO 람다입니다.

GlobalLambdaMultiplier

인코더에 전달되는 람다 스케일을 조절합니다. 개별 텍스처나 LOD 그룹을 추적할 필요 없이 배포 크기를 관리하기 위한 마지막 컨트롤로 제공됩니다. 이 값은 람다에 직접 적용됩니다. 즉, 배수 값이 1보다 크면 디스토션이 추가되고 퀄리티가 감소하며, 배수 값이 0~1 사이이면 디스토션이 감소하고 퀄리티가 추가됩니다. 그 결과는 사용할 수 있는 가장 가까운 정수로 반올림됩니다. 결과가 최소 1이 되므로, 이 세팅으로는 RDO를 비활성화할 수 없습니다.

bForceAllBC23ToBC7

활성화되면, BC2 또는 BC3(예: DXT3 및 DXT5) 포맷이 요청될 때마다 우들이 대신 BC7 텍스처를 압축합니다. BC7은 보통 퀄리티가 더 좋지만, 최소 사양에 따라 사용하지 못할 수도 있습니다.

bForceRDOOff

활성화되면, 텍스처별 RDO 세팅에 상관없이 RDO가 항상 비활성화됩니다.

bDebugColor

활성화되면, 텍스처가 시각적 식별을 위해 인코딩된 포맷을 나타내는 단색으로 압축됩니다.

포맷

BC1

빨간색(0xff0000)

BC2

어두운 녹색(0x008000)

BC3

녹색(0x00ff00)

BC4

어두운 노란색(0x808000)

BC5

노란색(0xffff00)

BC6

보라색(R = .5f, G = 0.0f, B = .8f)

BC7(불투명)

짙은 파란색(0x8080ff)

BC7(투명)

파란색(0x0000ff)

텍스처 LOD 그룹 환경설정하기

RDO 람다를 나타내는 LOD 그룹 파라미터를 손실 압축량(Lossy Compression Amount) 이라고 합니다. 이 파라미터는 DefaultDeviceProfiles.ini 파일에서 LOD 그룹에 대해 정의됩니다.

TextureLODGroups=(Group=TEXTUREGROUP_WorldNormalMap,MinLODSize=1,MaxLODSize=8192,LODBias=0,MinMagFilter=aniso,MipFilter=point,MipGenSettings=TMGS_SimpleAverage,**LossyCompressionAmount=TLCA_Low** )

손실 압축량은 다음과 같은 값을 사용할 수 있습니다.

설명

TLCA_Default

상속받습니다. 텍스처에 설정하는 경우, LOD 그룹에서 상속받습니다. LOD 그룹에 설정하는 경우, DefaultRDOLambda 에서 상속받습니다.

TLCA_None

RDO(0)를 비활성화합니다.

TLCA_Lowest

5 - 최고 퀄리티, 최대 파일 크기입니다.

TLCA_Low

15

TLCA_Medium

30

TLCA_High

40

TLCA_Lowest

60 - 최저 퀄리티, 최소 파일 크기입니다.

개별 텍스처 환경설정하기

RDO 람다는 손실 압축량 파라미터를 사용하여 개별 텍스처에 대해 설정할 수도 있으며 위에 표시된 것과 동일한 값을 사용합니다.

단일 텍스처에 파라미터를 설정하는 방법은 다음과 같습니다.

  1. 콘텐츠 브라우저(Content Browser) 에서 RDO 람다를 설정하려는 텍스처를 더블클릭하여 텍스처 에디터(Texture Editor) 에서 엽니다.

  2. 디테일(Details) 패널에서 압축(Compression) 섹션을 펼치고 화살표 아이콘을 클릭하여 고급(Advanced) 옵션을 표시합니다.

    고급 압축 옵션 열기

  3. 손실 압축량 파라미터 옆에 있는 드롭다운 메뉴를 사용하여 원하는 값을 선택합니다.

    손실 압축량 드롭다운 메뉴를 사용하여 RDO 람다 선택