콘텐츠로 이동

빌드 및 Shader Stripping

NiloToon의 빌드 설정과 Shader Stripping, 소스 코드 편집 시의 버전 관리 전략을 설명해요.


빌드 및 Shader Stripping

Editor에서 다음 파일을 빌드할 때:

  • 타겟 플랫폼용 애플리케이션
  • .warudo
  • Asset Bundle / Addressable

일반적으로 NiloToon이 빌드에서 올바르게 실행되기 위한 추가 단계가 필요하지 않아요. 하지만 Editor에서 사용한 일부 기능이 대상 플랫폼의 기본 빌드에 포함되지 않는 경우가 있어요.

기본 미포함 기능 예시

  • Receive URP Shadow
  • Dither Fadeout
  • Dissolve
  • BaseMap Override
  • Screen Space Outline
  • Debug 기능
  • XR 기능 (예: VR에서 캐릭터 Vertex 형태가 양쪽 눈에서 동기화되지 않음)

해결 단계

  1. NiloToonShaderStrippingSettingSO Asset을 생성해 주세요

    NiloToonShaderStrippingSettingSO 생성

  2. 타겟 빌드 플랫폼에 필요한 기능을 활성화해 주세요. 예를 들어 Android와 iOS에서만 Dissolve가 누락된 경우 Android와 iOS용 Dissolve를 활성화해 주세요.

    플랫폼별 기능 활성화

  3. 1-2단계의 NiloToonShaderStrippingSettingSO모든 타겟 NiloToon Renderer Feature에 할당해 주세요

    Renderer Feature에 할당

  4. 동일한 NiloToonShaderStrippingSettingSOEdit > Project Settings > NiloToon > Shader Stripping Setting에도 할당해 주세요. 이 단계는 Command Line으로 빌드하는 경우에 필요해요.

    Project Settings에 할당

  5. 다시 빌드하고 Shader 컴파일을 기다리면 문제가 해결돼요. 이는 일반 직접 애플리케이션 빌드, Asset Bundle, Addressable, .warudo 모두 동일하게 적용돼요.

빌드 시간 단축

Shader 빌드 시간이 너무 길고 빌드 속도를 높이기 위해 불필요한 Shader Variant를 제거하고 싶다면, 반대로 플랫폼에서 기능을 제거할 수 있어요. 자세한 내용은 최적화 가이드를 참고해 주세요.


NiloToon 소스 코드 편집

프로그래머가 아닌 경우

이 섹션을 건너뛸 수 있어요.

NiloToon의 소스 코드를 편집하는 것은 향후 업데이트를 어렵게 만들기 때문에 권장하지 않아요. 반드시 해야 하는 경우, 다음 버전 관리 전략을 제안해요.

3 Branch 전략

일반적으로 버전 관리에서 향후 병합을 개선하기 위해 2개의 추가 Branch가 필요해요.

Branch 용도
Extra Branch A (NiloToon 소스 업데이트 전용) 새로운 NiloToon .unitypackage 업데이트만 이 Branch에 Push하며, 다른 편집은 하지 않음
Extra Branch B (사용자의 NiloToon 편집) 위의 "Branch A"를 수시로 이 Branch에 병합하고, NiloToon 코드 변경만 이 Branch B에 Push
Main Branch Branch B를 수시로 Main Branch에 병합

이 3 Branch 설정으로 많은 병합 충돌을 줄이면서 NiloToon을 계속 업데이트하고, NiloToon 코드에 대한 변경 사항을 유지할 수 있어요.

충돌 가능성

NiloToon을 업데이트할 때(예: "Branch A"를 "Branch B"에 병합) NiloToon의 소스 코드 중 편집한 부분에 따라 NiloToon 개발자와 동일한 코드 줄을 편집했다면 여전히 충돌이 발생할 수 있어요.

NiloToon의 HLSL 편집

NiloToon 관련 HLSL을 편집하기 전에, 먼저 Project Window에서 다음 파일을 열어보세요.

  • NiloToonCharacter_ExtendFunctionsForUserCustomLogic
  • NiloToonEnvironment_ExtendFunctionsForUserCustomLogic

이 파일은 사용자가 편집하도록 설계된 HLSL로, MonoBehaviour의 빈 함수(Update() / LateUpdate())처럼 Shader의 다양한 시점에 커스텀 로직을 주입할 수 있는 빈 함수(Entry Point)를 제공해요.

권장 사항

이 파일을 먼저 사용해 보세요. 이 파일을 사용하면 개발이 훨씬 깔끔하고 쉬워져요. NiloToon 팀이 오랫동안 이 파일을 편집하지 않을 예정이므로 버전 관리 충돌이 매우 드물 거예요. 안전하게 추가 렌더링 로직을 개발하면서 향후 Breaking Change를 걱정하지 않아도 돼요.

HLSL 개발에 Rider 사용

HLSL 개발에 Rider를 강력히 권장해요. C#과 동일하게 HLSL을 작성/읽을 수 있어요.

기능 단축키
Go to Declaration or Usages F12
Go Back (이전 위치로) Ctrl + -
Extract Method Ctrl + . 또는 Ctrl + R, M
Rename Ctrl + R, R