Version: Unity 6.0 (6000.0)
언어 : 한국어
ShaderLab 및 HLSL에서 커스텀 셰이더 작성
커스텀 셰이더에 서브셰이더 추가

셰이더 파일 생성

Switch to Scripting

셰이더 에셋은 Unity 프로젝트에서 셰이더 오브젝트를 정의하는 에셋입니다. 이는 확장자가 .shader인 텍스트 파일입니다. 여기에는 셰이더 코드가 포함되어 있습니다.

  1. 메인 메뉴에서 Assets > Create > Shader 를 선택합니다.

  2. 셰이더를 생성합니다.

다음과 같은 유형의 셰이더를 생성할 수 있습니다.

셰이더 유형 설명
표준 표면 셰이더 조명과 상호 작용하는 간소화된 셰이더 코드를 작성할 수 있는 셰이더입니다.
언릿 셰이더 아무 조명 없이 텍스처를 표시하는 기본 셰이더입니다.
이미지 효과 셰이더 C# 스크립트와 연결된 셰이더 파일이며 이미지 효과를 만듭니다.
컴퓨트 셰이더 일반 그래픽스 파이프라인 외부의 GPU에서 계산을 수행하는 셰이더입니다.
레이트레이싱 셰이더 레이트레이싱과 관련된 계산을 수행하는 셰이더입니다.

Unity가 Assets 폴더에 새 .shader 파일을 기본 코드로 채웁니다.

셰이더 파일 수동 생성

ShaderLab에서 셰이더 오브젝트를 정의하려면 Shader 블록을 사용합니다. 이 페이지에는 Shader 블록 사용에 대한 정보가 나와 있습니다.

셰이더 오브젝트의 작동 방식과 셰이더 오브젝트, 서브셰이더, 패스의 관계에 대한 내용은 셰이더 오브젝트 소개를 참조하십시오.

이 예시 코드는 셰이더 오브젝트의 기본 구문과 구조를 보여 줍니다. 예시 셰이더 오브젝트에는 단일 패스를 포함하는 단일 서브셰이더가 있습니다. 이는 머티리얼 프로퍼티, CustomEditor, 폴백을 정의합니다.

Shader "Examples/ShaderSyntax"
{
    CustomEditor = "ExampleCustomEditor"

    Properties
    {
        // Material property declarations go here
    }
    SubShader
    {
        // The code that defines the rest of the SubShader goes here

        Pass
        {
           // The code that defines the Pass goes here
        }
    }

    Fallback "ExampleFallbackShader"
}

다른 렌더 파이프라인과 호환되는 예시 커스텀 셰이더에 대한 내용은 예시 커스텀 셰이더를 참조하십시오.

레거시 셰이더 이름

Unity 5.0 이전에는 셰이더의 일부 기능이 경로와 이름에 따라 결정되었습니다. Unity의 레거시 셰이더는 아직도 이런 방식으로 작동합니다. 셰이더의 이름을 변경하면 해당 셰이더의 기능에 영향을 미칠 수 있습니다.

자동 업그레이드 비활성화

UNITY_SHADER_NO_UPGRADE를 사용하면 Unity가 셰이더 파일을 자동으로 업그레이드하거나 수정할 수 없도록 설정할 수 있습니다.

추가 리소스

ShaderLab 및 HLSL에서 커스텀 셰이더 작성
커스텀 셰이더에 서브셰이더 추가