TECHARTNOMAD | TECHARTFLOWIO.COM

MAZELINE TOPIC

노말맵, 러프니스맵, 알파맵 제작을 위한 16비트 채널 텍스처 활용 가이드

jplee 2025. 10. 2. 15:09

아티스트 분들을 만나다 보면 가끔 예전에는 그렇게 해 오셨다가 또 습관적으로 체널을 16비트로 사용하지 않는 분들도 계시다는 것을 알게 되어서 간단히 정리 했습니다. 특히 리니어 스페이스를 사용하는 텍스처들은 더욱이 그렇습니다.


게임 아티스트를 위한 실무 중심의 텍스처 제작 길잡이입니다. 16비트 채널 텍스처를 활용하여 최종 게임 내 압축 텍스처의 품질을 극대화하는 방법을 다룹니다.


왜 16비트 채널 텍스처인가?

게임 엔진에서 텍스처는 최종적으로 BC5(노말맵), BC1/BC7(컬러맵) 등의 압축 포맷으로 변환됩니다. 이 과정에서 8비트 소스를 사용하면 압축 아티팩트가 더욱 두드러지게 나타나지만, 16비트 소스를 사용하면 압축 알고리즘이 더 많은 색상 정보를 활용하여 최종 품질을 크게 향상시킬 수 있습니다.

핵심 원리: 16비트 채널 텍스처는 채널당 65,536단계의 색상 정보를 제공합니다. 8비트의 256단계와 비교하면 약 256배 더 많은 정보를 담을 수 있어, 압축 과정에서 손실되는 디테일을 최소화할 수 있습니다.

Crytek 텍스처 제작 가이드라인 핵심 요약

Crytek의 공식 가이드라인에 따르면...

CRYENGINE | Documentation - Tutorial - Texture Creation Guidelines

The complete solution for next generation game development by Crytek

www.cryengine.com

필수 규칙

  • 모든 텍스처는 .TIF 포맷으로 저장하고 CryTIF 플러그인 사용
  • Resource Compiler가 자동으로 최종 .dds 텍스처 생성
  • 텍스처 해상도는 반드시 2의 제곱수 (128×128, 1024×1024, 512×2048 등)
  • 노말맵은 사전 처리 단계에서 압축과 함께 생성하는 것이 효율적

노말맵 제작 권장사항

  • RGB 채널에 탄젠트 스페이스 노말맵 정보 저장
  • 알파 채널에 Gloss 맵 포함 가능 (_ddna 명명 규칙 사용)
  • NormalmapWithGlossInAlpha_highQ 프리셋 사용

BC5 압축 비교: 8비트 vs 16비트 소스

BC5 압축 포맷 이해하기

BC5(구 3Dc, ATI2N)는 노말맵 전용 압축 포맷입니다.

Normal Map Compression - polycount

Normal maps can take up a lot of memory. Compression can reduce the size of a map to 1/4 of what it was uncompressed, which means you can either increase the resolution or you can use more maps. Usually the compression method is to throw away the Blue chan

wiki.polycount.com

 

  • 압축률: 8 bits per pixel (bpp)
  • 채널 구성: Red와 Green 채널만 저장
  • Blue 채널: 셰이더에서 수학적으로 재구성 sqrt(1 - R² - G²)
  • 압축 방식: 각 채널이 DXT5 알파와 동일한 압축 기법 사용
  • 품질: DXT5보다 높은 비트 정밀도로 노말맵 저장

실제 품질 비교

bc5 — TECH/ART — JACK CARON

December 20, 2014 Trying to optimize performance, the question of whether or not to use the alpha of a normal map for hiding a mask in order to minimize texture look-ups.  The other option would be to leave the normal itself and create a separate, lower r

www.jackcaron.com

8비트 소스 → BC5 압축

  • 미묘한 노말 변화에서 블록 아티팩트 발생
  • 완만한 곡면에서 계단 현상(banding) 두드러짐
  • 압축 노이즈가 시각적으로 인지 가능

16비트 소스 → BC5 압축

  • 압축 아티팩트가 현저히 감소
  • 부드러운 그라데이션 유지
  • 디테일한 노말 변화 보존
  • 특히 얼굴과 피부 텍스처에서 차이가 명확
주의: 일반 환경 오브젝트는 8비트로도 충분할 수 있지만, 캐릭터 얼굴/피부, 클로즈업되는 오브젝트는 반드시 16비트 소스를 사용해야 합니다.

실무 워크플로우: 16비트 TIFF 사용법

Substance Painter 작업 설정(Export)

작업 후 NormalMap 익스포트 Config 설정에서 GA 를 사용하는 것으로 변경.
BC5를 사용할 경우 XY 를 RG 가 아닌 GA 체널에 저장 후 스위즐링 하여 게임엔진에서 노말패킹 하는 것이 품질이 가장 좋다.

Export settings | Substance 3D Painter

Painter > Getting Started > Export > Export window > Export settings

helpx.adobe.com

 

Photoshop 작업 설정

새 문서 생성 시

  1. 이미지 모드: RGB Color
  2. 비트 깊이: 16 Bits/Channel 선택
  3. 컬러 프로파일: sRGB 또는 Linear RGB (노말맵은 Linear)

저장 시 주의사항

  1. File > Save As → TIFF 형식 선택
  2. 이미지 압축: LZW 또는 ZIP (무손실 압축)
  3. 바이트 순서: Interleaved (RGBRGB)
  4. 레이어 압축: 필요시 레이어 병합 후 저장

텍스처 타입별 권장 설정

노말맵 (Normal Map)

  • 포맷: 16-bit TIFF
  • 컬러 스페이스: Linear (감마 보정 없음)
  • 채널: RGB (탄젠트 스페이스)
  • 게임 엔진 압축: BC5
  • 명명 규칙: ObjectName_Normal.tif 또는 ObjectName_N.tif

러프니스맵 (Roughness Map)

  • 포맷: 16-bit TIFF (그레이스케일 또는 RGB)
  • 컬러 스페이스: Linear
  • 값 범위: 0 (매끄러움) ~ 1 (거칠음)
  • 게임 엔진 압축: BC4 (단일 채널) 또는 패킹
  • 명명 규칙: ObjectName_Roughness.tif 또는 ObjectName_R.tif

알파/마스크맵

  • 포맷: 16-bit TIFF
  • 컬러 스페이스: Linear
  • 채널: 그레이스케일 또는 다중 채널 패킹
  • 게임 엔진 압축: BC4 (단일) 또는 BC7 (다중)

텍스처 채널 패킹 전략

게임 최적화를 위해 여러 맵을 하나의 텍스처로 패킹하는 것이 일반적입니다.
ORM 패킹 (PBR 워크플로우)

  • R 채널: Occlusion (AO)
  • G 채널: Roughness
  • B 채널: Metallic

노말맵 + 알파
GA 채널: Normal X, Y
XY 는 GA 체널을 사용하고 스위즐링 하는 것이 더 바람직하다.
B 채널: 셰이더에서 재구성
R 채널: Height, Gloss, 또는 기타 마스크

팁: 16비트 소스에서 채널 패킹하면 각 채널의 정밀도가 유지되어, 압축 후에도 미묘한 차이를 표현할 수 있습니다.

압축 아티팩트 이해 및 대응

블록 압축의 작동 원리

Understanding BCn Texture Compression Formats – Nathan Reed’s coding blog

www.reedbeta.com

BCn(Block Compression) 포맷은 4×4 픽셀 블록 단위로 압축합니다:

  1. 엔드포인트 저장: 블록 내 최소/최대 색상값
  2. 인덱스 저장: 각 픽셀이 엔드포인트 사이 어디에 위치하는지
  3. 보간: 런타임에 중간값들을 계산

16비트 소스의 이점

  • 엔드포인트 계산 시 더 정확한 색상 선택
  • 미묘한 그라데이션을 더 잘 표현하는 엔드포인트 생성
  • 결과적으로 더 부드러운 보간

일반적인 아티팩트와 해결법

1. 컬러 밴딩 (Color Banding)

  • 원인: 비트 정밀도 부족
  • 해결: 16비트 소스 + 고품질 압축 설정
  • 추가 팁: 노이즈 디더링 적용 (미세한 노이즈 추가)

2. 블록 아티팩트 (Blocky Artifacts)

  • 원인: 4×4 블록 경계에서 엔드포인트 불일치
  • 해결: 16비트 소스 + 고주파 디테일 조절

3. 노말맵 계단 현상

  • 원인: 8비트 정밀도 한계
  • 해결: 16비트 소스 필수, BC5 압축 사용

실전 예제: 캐릭터 피부 텍스처

캐릭터 피부는 16비트 텍스처가 가장 필요한 영역입니다.
피부 텍스처 세트 구성

  1. Base Color (Albedo)
    • 16-bit TIFF, sRGB 컬러 스페이스
    • 게임 엔진: BC7 압축
  2. Normal Map
    • 16-bit TIFF, Linear 컬러 스페이스
    • 게임 엔진: BC5 압축
    • 노말 디퓨전 적용 (피부 특유의 부드러움)
  3. Material Map (ORM)
    • R: Metallic (피부는 보통 0)
    • G: AO (피부에는 사용 지양)
    • B: Roughness
    • A: Smoothness
  4. TC Map (Thickness & Curvature)
    • R: Thickness (두께 - 서브서피스 스캐터링용)
    • G: Curvature (곡률)
    • 16-bit 필수 - 미묘한 차이가 SSS 품질에 직접 영향
실무 조언: Unity/Unreal에서 linear color space 변환 후 8비트 ASTC/BC 포맷으로 최종 저장되므로, 소스는 반드시 16비트로 유지해야 더 나은 품질을 얻을 수 있습니다.

게임 엔진별 설정 가이드

Unreal Engine

텍스처 임포트 설정

  • Compression Settings:
    • Normal Map → BC5 (Normalmap)
    • Color Map → BC7 (Default)
    • Roughness/Metallic → BC4 (Grayscale) 또는 BC7 (패킹)
  • sRGB: Color 맵만 체크, Normal/Roughness는 해제
  • Mip Gen Settings: SimpleAverage (노말맵은 주의)

Unity

텍스처 임포트 설정

  • Texture Type:
    • Default (Color)
    • Normal map
    • Single Channel (Roughness/AO)
  • Compression: High Quality
  • Max Size: 적절한 해상도 설정

CryEngine

CryTIF 플러그인 사용

CRYENGINE | Documentation - Tutorial - Texture Creation Guidelines

The complete solution for next generation game development by Crytek

www.cryengine.com

  • 프리셋 자동 적용
  • NormalmapWithGlossInAlpha_highQ 선택
  • Resource Compiler가 자동 처리

메모리 vs 품질 트레이드오프

텍스처 메모리 계산

비압축 텍스처

  • 8-bit: Width × Height × 4 bytes (RGBA)
  • 16-bit: Width × Height × 8 bytes (RGBA)

BC5 압축 노말맵

  • 모든 해상도: Width × Height × 1 byte (8 bpp)
  • 2048×2048 = 4MB

핵심 포인트

  • 16비트 소스는 디스크 공간만 차지
  • 게임 런타임에는 압축된 포맷만 VRAM 사용
  • 따라서 16비트 소스 사용에 런타임 비용 없음!
결론: 16비트 소스 사용은 최종 게임 성능에 영향을 주지 않으면서 품질만 향상시킵니다. 망설일 이유가 없습니다!

품질 검증 체크리스트

품질 검증 체크리스트

제작 단계

  • [ ] 소스 텍스처가 16-bit TIFF로 저장되었는가?
  • [ ] 노말맵이 Linear 컬러 스페이스로 설정되었는가?
  • [ ] 텍스처 해상도가 2의 제곱수인가?
  • [ ] 채널 패킹이 올바르게 구성되었는가?

임포트 단계

  • [ ] 게임 엔진에서 올바른 압축 포맷이 선택되었는가?
  • [ ] sRGB 설정이 텍스처 타입에 맞게 설정되었는가?
  • [ ] 밉맵 생성 설정이 적절한가?

최종 검증

  • [ ] 클로즈업에서 밴딩/블록 아티팩트가 없는가?
  • [ ] 노말맵이 부드럽게 렌더링되는가?
  • [ ] 러프니스 변화가 자연스러운가?

추가 리소스 및 참고 자료

공식 문서

실무 아티클

도구

  • NVIDIA Texture Tools
  • AMD Compressonator
  • Photoshop DDS Plugin

마치며

16비트 채널 텍스처 사용은 현대 게임 개발의 표준 관행입니다. 소스 파일 크기가 약간 증가하지만, 최종 게임 품질 향상은 그 비용을 훨씬 상회합니다. 특히 BC5 압축을 사용하는 노말맵에서는 16비트 소스의 이점이 명확하게 드러납니다.
핵심 요약

  • ✅ 16비트 소스는 압축 품질을 크게 향상
  • ✅ 런타임 성능에는 영향 없음
  • ✅ 캐릭터 피부 등 중요 텍스처에는 필수
  • ✅ 작은 노력으로 큰 품질 개선 효과
오늘부터 모든 노말맵, 러프니스맵은 16비트 TIFF로 작업하세요. 여러분의 작품이 게임 속에서 더욱 빛나게 될 것입니다!