Блоки кода шейдера в ссылке ShaderLab
Эта страница содержит информацию об использовании блоков кода шейдера. Информацию о написании самой HLSL см. в Писание HLSL шейдерных программ.
HLSL
HLSLPROGRAM и HLSLINCLUDE совместимы со всеми конвейерами рендеринга.
| Подпись | Функция |
|---|---|
HLSLPROGRAM[source code for shader programs]ENDHLSL |
Создает блок программы шейдера. Unity добавляет программу шейдера HLSL в проход, который включает этот блок программы шейдера. |
HLSLINCLUDE[code that you want to share]ENDHLSL |
Создает блок включения для шейдера. Unity включает этот код во все программы шейдера, которые определены в блоках HLSLPROGRAM, в любом месте этого исходного файла. |
CG
CGPROGRAM и CGINCLUDE совместимы только с встроенным Render Pipeline. Для большинства применений, используйте HLSLPROGRAM и HLSLINCLUDE вместо этого, если вы не пишете поверхностные шейдеры.
Если вы используете CGPROGRAM, Unity по умолчанию включает несколько встроенных файлов shader include Unity, что позволяет использовать встроенные переменные и функции. В результате, shaders, которые используют CGPROGRAM, могут не работать, если вы измените ключевое слово на HLSLPROGRAM.
Примечание: Хотя файлы библиотеки шейдеров в Встроенном Render Pipeline имеют .cginc расширение файла, они содержат HLSL код, а не CG код.
| Подпись | Функция |
|---|---|
CGPROGRAM[source code for shader programs]ENDCG |
Создает блок программы шейдера. Unity добавляет программу шейдера в проход, который включает этот блок программы шейдера. |
CGINCLUDE[code that you want to share]ENDCG |
Создайте блок включения шейдера. Unity включает этот код во все программы шейдера, которые определены в блоках CGPROGRAM, в любом месте этого исходного файла. |