В HLSL директивы #include
являются типом директивы препроцессора. Они предписывают компилятору включить содержимое одного HLSL-файла в другой. Файл, который они включают, называется включаемым файлом.
В Unity обычные директивы #include
работают так же, как и в стандартном HLSL. Дополнительные сведения об обычных директивах #include
см. в документации по HLSL: директива включения.
Unity также предоставляет дополнительную специфичную для Unity директиву #include_with_pragmas
. Директива #include_with_pragmas
работает так же, как и обычная директива #include
, но также позволяет использовать #pragma
во включаемом файле. Это означает, что директива #include_with_pragmas
позволяет вам совместно использовать директивы #pragma
между несколькими файлами.
Использование директивы include_with_pragmas
Примечание. Чтобы использовать директивы #include_with_pragmas
, необходимо включить Кэширующий препроцессор шейдера.
В этом примере показано, как использовать специфичную для Unity директиву #include_with_pragmas
для включения общего улучшения рабочего процесса: возможности переключения шейдерПрограмма, работающая на графическом процессоре. Подробнее
См. в Словарь отладку включения и выключения нескольких шейдеров без необходимости редактирования каждого исходный файл шейдера каждый раз.
Следующая строка демонстрирует содержимое включаемого файла. Он содержит единственную директиву pragma, которая позволяет отлаживать шейдеры:
// Закомментируйте следующую строку, чтобы отключить отладку шейдера
#pragma enable_d3d11_debug_symbols
В каждый шейдер, который нужно отладить, добавьте директиву #include_with_pragmas
, указывающую на включаемый файл. Поместите директиву рядом с другими директивами #pragma
, например:
// Example pragma directives
#pragma target 4.0
#pragma vertex vert
#pragma fragment frag
// Replace path-to-include-file with the path to the include file
#include_with_pragmas "path-to-include-file"
// The rest of the HLSL code goes here
Теперь, если вы хотите включать и выключать отладку шейдеров для всех шейдеров, использующих включаемый файл, вам нужно изменить только одну строку во включаемом файле. Когда Unity перекомпилирует шейдеры, она включает измененную строку.