Документация по ключевым словам HLSL "техника" - PullRequest
1 голос
/ 24 марта 2020

Очень простой вопрос ...
У меня есть пример кода:

technique Draw
{
    pass
    {
        vertex_shader = VertexShaerName(vec_in);
        pixel_shader  = PixelShaderName(vec_in);
    }
}

Где я могу найти документацию по использованию technique ключевого слова? Здесь нет ссылки с описанием, приведенным для такого заявления ...

1 Ответ

1 голос
/ 21 апреля 2020

Методы используются (в настоящее время устаревшей) системой эффектов.

Она охватывает много API низкого уровня (изначально DirectX9 работал с техниками, поэтому он был создан для облегчения перехода между direct3d9 к direct3d10 / 11 ).

Он предоставляет помощников для управления постоянными буферами и api отражения / переменной для назначения данных шейдерам.

Таким образом, в то время как при низкоуровневом конвейере вы будете компилировать свои вершинные и пиксельные шейдеры независимо, Создайте свои постоянные буферы и структуры, которые go с его помощью позволяют строить все в одном блоке, разбивают постоянные буферы на переменную систему и имеют пароль api, который позволяет выполнять связывание всех в одном go.

У обоих есть свои плюсы и минусы, fx действительно хорош для создания и создания прототипов (например, очень легко использовать их переменную систему для создания автоматов c gui), но так как он управляет множеством шаблонов для вас, но это становится немного неловко, когда дело доходит до эффективного ресурса Повторное использование или сложные перестановки шейдеров.

Одна вещь, которую я особенно упускаю из эффектов, это переменная семантика и аннотации, вы можете установить такие вещи, как:

float2 tex : TARGETSIZE;

и с помощью переменной системы обнаружить, что tex имеет TARGETSIZE semanti c Например, скрытие от пользовательского интерфейса и автоматическое присоединение размера таджета рендера.

Старым распространенным применением аннотаций было предоставление метатады для таких значений, как:

float4 color <bool color=true;> = 1.0f;

Отражение между аннотациями позволяет увидеть, что мы рассматриваем эта переменная как цвет (и отображать палитру цветов в редакторе вместо 4 каналов)

Хотя профиль fx_5_0 устарел в d3dcompiler_47, его все еще можно использовать, а оболочка имеет открытый исходный код: https://github.com/microsoft/FX11

...