This page contains information about using shader code blocks. For information about writing HLSL itself, refer to Writing HLSL shader programs.
HLSLPROGRAM and HLSLINCLUDE are compatible with all render pipelines.
| Signature | Function |
|---|---|
HLSLPROGRAM[source code for shader programs]ENDHLSL
|
Creates a shader program block. Unity adds the HLSL shader program to the pass that includes this shader program block. |
HLSLINCLUDE[code that you want to share]ENDHLSL
|
Creates a shader include block. Unity includes this code in all shader programs that are defined in HLSLPROGRAM blocks, anywhere in this source file. |
CGPROGRAM and CGINCLUDE are compatible only with the Built-In Render Pipeline. For most uses, use HLSLPROGRAM and HLSLINCLUDE instead, unless you write surface shadersA streamlined way of writing shaders for the Built-in Render Pipeline. More info
See in Glossary.
If you use CGPROGRAM, Unity includes several of Unity’s built-in shader include files by default, enabling you to use built-in variables and functions. As a result, shaders that use CGPROGRAM might not work if you change the keyword to HLSLPROGRAM.
Note: Although the shader library files in the Built-In Render Pipeline have a .cginc file extension, they contain HLSL code rather than CG code.
| Signature | Function |
|---|---|
CGPROGRAM[source code for shader programs]ENDCG
|
Creates a shader program block. Unity adds the shader program to the pass that includes this shader program block. |
CGINCLUDE[code that you want to share]ENDCG
|
Create a shader include block. Unity includes this code in all shader programs that are defined in CGPROGRAM blocks, anywhere in this source file. |