Unity HLSL 셰이더 키워드 사용 가이드

이 문서는 Unity의 HLSL에서 셰이더 키워드를 선언하고 사용하는 방법에 대해 설명하며, 다양한 활용 및 응용 예제를 제공합니다.

셰이더 키워드 정의

셰이더 키워드는 특정 기능을 활성화하거나 비활성화하는 데 사용됩니다. HLSL 코드 내에서 #pragma 지시문을 사용하여 키워드를 선언할 수 있습니다.

키워드 선언 예시

#pragma shader_feature REFLECTION_TYPE1 REFLECTION_TYPE2 REFLECTION_TYPE3

셰이더 지시문 종류

지시문 종류 설명
shader_feature 정적 브랜칭을 위한 키워드 조합에 대한 배리언트 생성
multi_compile 모든 가능한 키워드 조합에 대한 배리언트 생성
dynamic_branch 동적 브랜칭을 통해 배리언트 생성이 없음

키워드 세트 사용

셰이더 키워드는 여러 개의 키워드를 세트로 묶어 동시에 활성화하거나 비활성화할 수 있습니다.

예시

#pragma shader_feature REFLECTION_TYPE1 REFLECTION_TYPE2 REFLECTION_TYPE3
#pragma shader_feature RED GREEN BLUE WHITE

커스텀 조건부 코드 작성

HLSL에서 if 문을 사용하여 조건부 코드를 작성할 수 있습니다. 키워드를 기반으로 특정 셰이더 코드의 실행 여부를 결정할 수 있습니다.

예시

#pragma multi_compile QUALITY_LOW QUALITY_MED QUALITY_HIGH

if (QUALITY_LOW)
{
    // 저품질 설정 코드
}

인스펙터를 통한 키워드 제어

Unity 인스펙터 또는 C# 스크립트를 사용하여 셰이더 키워드를 활성화하거나 비활성화할 수 있습니다.

정적 vs 동적 브랜칭

  • 동적 브랜칭: 각 키워드에 대해 균일한 부울 변수를 생성하여 조건부 코드를 처리.
  • 정적 브랜칭: 활성화된 배리언트를 조건부 코드와 함께 GPU에 전송.

지역 키워드 만들기

기본적으로 키워드는 전역입니다. _local을 사용하여 키워드를 지역으로 선언할 수 있습니다.

예시

#pragma shader_feature_local QUALITY_LOW QUALITY_MED QUALITY_HIGH

특정 단계에 대한 키워드 제한

키워드를 특定 단계에만 적용하려면 접미사를 사용할 수 있습니다.

접미사 설명
_vertex 버텍스 단계에서 코드 포함
_fragment 프래그먼트 단계에서 코드 포함
_hull 헐 단계에서 코드 포함

예시

#pragma shader_feature_fragment RED GREEN BLUE

서포트되는 그래픽스 API

선언된 키워드는 OpenGL, Vulkan, DirectX의 그래픽스 API와 플랫폼에 따라 다르게 작동할 수 있습니다. 예를 들어 Metal에서는 _geometry_raytracing 접미사가 작동하지 않습니다.

비활성화된 키워드용 배리언트 생성

Unity는 특정 키워드가 비활성화될 경우를 대비해 추가 배리언트를 자동으로 생성할 수 있습니다.

예시

#pragma shader_feature EXAMPLE_ON

이 가이드는 Unity에서 HLSL을 사용하는 데 필수적인 정보를 제공하여 개발자들이 셰이더 키워드를 효과적으로 활용할 수 있도록 돕습니다. 다양한 예시를 통해 이해를 돕고, 다양한 상황에서의 활용 방안을 제시합니다.

Read more

Unity 매뉴얼 스크립팅 API 해설

이 문서는 Unity의 매뉴얼 스크립팅 API에 대한 간단한 해설과 활용 예제들을 포함하고 있습니다. Unity는 게임 개발 플랫폼으로, 스크립팅 API를 통해 게임의 다양한 기능을 제어하고 수정할 수 있습니다. 버전 Unity 스크립팅 API는 여러 버전으로 제공됩니다. 주의 깊게 선택하여 사용하는 것이 중요합니다. 버전 설명 2023.2 최신 기능 및 버그 수정이 추가됨

By 이재협/실장/시스템개발실/PHYSIA

Unity 매뉴얼 스크립팅 API 설명서 해설

이 문서는 Unity의 매뉴얼 스크립팅 API에 대한 정보를 제공하며, 버전에 따라 다르게 적용되는 내용들을 설명합니다. 본 문서에서는 주요 내용을 간단히 정리하고 활용 가능 예제를 통해 이해를 돕겠습니다. 기본 개념 Unity에서 스크립팅 API는 게임 오브젝트와 그들의 동작을 제어하기 위한 강력한 도구입니다. 이를 통해 게임의 로직, 물리 엔진, 애니메이션 및 사용자 인터페이스를

By 이재협/실장/시스템개발실/PHYSIA

Unity 스크립팅 API 가이드

이 문서는 Unity의 스크립팅 API에 대해 설명합니다. Unity는 게임 개발을 위한 인기 있는 엔진으로, 강력한 스크립팅 기능을 제공합니다. 이 가이드는 Unity에서 스크립트를 작성하고 사용하는 방법을 이해하는 데 도움을 드립니다. 목차 * Unity 스크립팅 소개 * 기본 스크립트 생성 * 스크립트 사용 예제 * 응용 프로그램 * 참고 자료 Unity 스크립팅 소개 Unity는 C# 프로그래밍 언어를

By 이재협/실장/시스템개발실/PHYSIA