Включите файл, содержащий постоянные буферы - как насчет регистров? - PullRequest
0 голосов
/ 14 января 2020

в hlsl, мы можем использовать #include "somefile", как и в C.
Я хотел бы объявить мои постоянные буферы только один раз и включить их в несколько шейдеров. Но как насчет регистров? В некоторых файлах константный буфер установлен на b0, в других - b4. Какова лучшая практика, включая файлы здесь?

1 Ответ

1 голос
/ 19 января 2020

Вы можете # определить имена регистров перед включением вашего заголовка, и в файле заголовка вы можете использовать их как обычные токены препроцессора - вместо того, чтобы иметь register(b0) в заголовке, вы можете напечатать, например, register(B_CAMERA) в это, и прежде чем включать, #define B_CAMERA b0.

Будьте осторожны, однако, если вы хотите просто передать номер регистра, например, 0, а не полное имя регистра, например, b0, так как препроцессор HLSL обрабатывает ## конкатенацию немного отличается от препроцессора C , и есть также различия в том, как шейдерная модель 5 и ниже и как компиляторы шейдерной модели 6 расширяют ее.

...