Version: 2021.2
언어: 한국어
셰이더 키워드와 머티리얼 인스펙터 함께 사용
셰이더 배리언트 컬렉션

셰이더 배리언트 스트리핑

셰이더 배리언트가 컴파일되지 않게 할 수 있습니다. 이를 스트리핑이라고 합니다. 불필요한 배리언트를 스트리핑하면 빌드 시간, 파일 크기, 셰이더 로딩 시간과 런타임 메모리 사용을 크게 줄일 수 있습니다. 큰 프로젝트나 복잡한 셰이더가 있는 프로젝트에서 반드시 고려해야 합니다.

셰이더 키워드 선언 시 셰이더 배리언트 제한

셰이더 키워드 선언 방식을 통해 셰이더 키워드가 만드는 배리언트의 수를 제한할 수 있습니다.

  • 가능한 한 multi_compile 대신 shader_feature를 사용합니다.
  • 사용하지 않는 키워드를 multi_compile로 정의하지 않도록 합니다.
  • 셰이더 키워드가 특정한 셰이더 단계에만 영향을 미치는 경우 이를 표시합니다.

직접 코딩한 셰이더에서 이를 수행하는 방법은 HLSL에서 셰이더 키워드 선언 및 사용을 참조하십시오. 셰이더 그래프에서 이를 수행하는 방법은 셰이더 그래프: Blackboard를 참조하십시오.

에디터 UI에서 셰이더 배리언트 스트리핑

Unity 에디터 UI의 여러 위치에서 셰이더 스트리핑을 설정할 수 있습니다.

  • Graphics Settings 창Shader stripping 섹션에서 다음과 같이 설정합니다.
  • 불필요한 셰이더가 Always-included shaders 설정에 포함되지 않도록 합니다.
  • GPU 인스턴싱, 라이트매핑 및 안개와 관련된 배리언트를 스트리핑합니다.
  • 빌트인 렌더 파이프라인에서는 티어 설정이 다른 것이 중요하지 않다면 티어 설정이 동일하게 하십시오. 자세한 내용은 그래픽스 티어를 참조하십시오.
  • 유니버설 렌더 파이프라인(URP)의 URP 에셋에서 미사용 기능을 비활성화하십시오. 자세한 내용은 셰이더 스트리핑을 참조하십시오.

에디터 스크립트를 사용하여 셰이더 배리언트 스트리핑

다른 방법으로 스트리핑할 수 없는 셰이더 배리언트의 경우, 에디터 스크립트에서 다음 API를 사용하여 빌드 타임 스트리핑을 수행할 수 있습니다.

IPreprocessShaders.OnProcessShader: Unity가 그래픽스 셰이더 패스를 빌드로 컴파일하기 전에 콜백을 수신합니다. IPreprocessComputeShaders.OnProcessComputeShader: Unity가 컴퓨트 셰이더를 빌드로 컴파일하기 전에 콜백을 수신합니다.

이 주제에 대한 자세한 내용은 Unity 블로그 포스트 스크립터블 셰이더 배리언트 스트리핑을 참조하십시오.

셰이더 키워드와 머티리얼 인스펙터 함께 사용
셰이더 배리언트 컬렉션