이 페이지에는 셰이더 코드 블록 사용에 대한 정보가 포함되어 있습니다. HLSL 자체 작성에 대한 자세한 내용은 Unity에서 HLSL 사용을 참조하십시오.
| 기능 | URP(유니버설 렌더 파이프라인) | HDRP(고해상도 렌더 파이프라인) | 커스텀 스크립터블 렌더 파이프라인 | 빌트인 렌더 파이프라인 |
|---|---|---|---|---|
| HLSLPROGRAM | 지원 | 지원 | 지원 | 지원 |
| CGPROGRAM | 지원 안 함 | 지원 안 함 | 지원 SRP Core 패키지를 사용하는 커스텀 렌더 파이프라인과 호환되지 않음 |
지원 |
| 서명 | 기능 |
|---|---|
HLSLPROGRAM[source code for shader programs, written in HLSL]ENDHLSL
|
이 셰이더 프로그램 블록이 포함된 패스에 HLSL 셰이더 프로그램을 추가합니다. Unity의 빌트인 셰이더 포함 파일은 포함되어 있지 않습니다. |
CGPROGRAM[source code for shader programs, written in HLSL]ENDCG
|
이 셰이더 프로그램 블록이 포함된 패스에 HLSL 셰이더 프로그램을 추가합니다. Unity의 여러 빌트인 셰이더 포함 파일을 기본적으로 포함하므로 빌트인 변수와 함수를 사용할 수 있습니다. |
| 기능 | URP(유니버설 렌더 파이프라인) | HDRP(고해상도 렌더 파이프라인) | 커스텀 스크립터블 렌더 파이프라인 | 빌트인 렌더 파이프라인 |
|---|---|---|---|---|
| HLSLINCLUDE | 지원 | 지원 | 지원 | 지원 |
| CGINCLUDE | 지원 안 함 | 지원 안 함 | 지원 SRP Core 패키지를 사용하는 커스텀 렌더 파이프라인과 호환되지 않음 |
지원 |
| 서명 | 기능 |
|---|---|
HLSLINCLUDE[HLSL code that you want to share]ENDHLSL
|
Unity는 이 소스 파일 어디에서든 이 코드를 HLSLPROGRAM 블록에 정의된 모든 셰이더 프로그램에 포함합니다. |
CGINCLUDE[HLSL code that you want to share]ENDCG
|
Unity는 이 소스 파일 어디에서든 이 코드를 CGPROGRAM 블록에 정의된 모든 셰이더 프로그램에 포함합니다. |
HLSL 또는 CG로 시작하는 블록의 차이는 다음과 같습니다.
CG 접두사가 붙은 셰이더 코드 블록은 이전 버전입니다. 기본적으로 Unity의 여러 빌트인 셰이더 포함 파일이 포함되어 있으며, 이 기능이 필요한 경우 편리합니다. 빌트인 포함은 빌트인 렌더 파이프라인과만 호환됩니다.HLSL 접두사가 붙은 셰이더 코드 블록은 최신 버전입니다. 기본적으로 Unity의 빌트인 셰이더 포함 파일은 포함되어 있지 않으므로 사용하려는 라이브러리 코드를 수동으로 포함해야 합니다. 모든 렌더 파이프라인에서 사용할 수 있습니다.Unity의 빌트인 셰이더 포함 파일에 대한 내용은 빌트인 셰이더 포함 파일을 참조하십시오.
PROGRAM 또는 INCLUDE로 끝나는 블록의 차이는 다음과 같습니다.
PROGRAM으로 끝나는 셰이더 코드 블록을 셰이더 프로그램 블록이라고 합니다. 셰이더 프로그램을 작성하는 데 사용합니다. 이 블록 안에 HLSL 셰이더 코드를 작성한 후__ ShaderLab__셰이더 오브젝트의 구조를 정의하기 위한 Unity 언어입니다. 자세한 정보INCLUDE로 끝나는 셰이더 코드 블록을 셰이더 포함 블록이라고 합니다. 같은 소스 파일의 셰이더 프로그램 블록 간에 공통 코드를 공유하는 데 사용합니다. 이 블록 안에 공유할 HLSL 셰이더 코드를 작성한 후 ShaderLab 코드의 패스, 서브 셰이더 또는 셰이더 블록 안에 넣습니다. 이는 HLSL 코드에 include를 사용하는 것과 유사한 방식으로 작동합니다.