Мои Уведомления
Привет, !
Мой Аккаунт Мои Финансы Мои Подписки Мои Настройки Выход
Руководство API скрипты

Директивы include и include_with_pragmas в HLSL

В 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 перекомпилирует шейдеры, она включает измененную строку.

Вы можете отблагодарить автора, за перевод документации на русский язык. ₽ Спасибо
Руководство Unity 2021.3