Справочник по шейдеру Asm
Шейдеры управляют программируемым графическим конвейером.
Справочник по шейдеру вершин
отличия шейдера вершин суммирует различия между версиями шейдеров вершин.
Справочник по шейдеру пикселей
различия шейдера пикселей суммирует различия между версиями шейдера пикселей.
Справочник по модели шейдера 4 и 5
В разделах шейдер модели 4 сборки и шейдер модели 5 сборки 5 описаны инструкции, которые поддерживают модель шейдера 4 и 5.
Поведение постоянных регистров в шейдерах сборок
Существует два способа задать регистры констант в шейдере сборки:
- Объявите константу шейдера в коде сборки с помощью одной из инструкций def*.
- Используйте один из методов API Set**ШейдерКонстант*.
Константы шейдера Direct3D 9
В Direct3D 9 время существования определенных констант в заданном шейдере ограничивается только выполнением этого шейдера (и не переопределяется). Определенные константы в Direct3D 9 не имеют побочных эффектов за пределами шейдера.
Ниже приведен пример использования Direct3D 9:
Given:
Create shader1 which references c4 and defines it with the def instruction
Scenario 1:
Call Set***Shader shader1
Call Set***ShaderConstant* to set c4
Call Draw
Result: The shader will see the def'd value in c4
Given:
Scenario 1 has just completed
Create shader2 (which references c4 but does not use the def instruction
to define it)
Scenario 2:
Call Set***Shader shader2
Call Draw
Result: The shader will see the value last set in c4 by
Set***ShaderConstant* in scenario 1. This is because shader 2
didn't def c4.
В Direct3D 9 вызов Get**Get*ShaderConstant* будет получать только константные значения, заданные с помощью Set***ShaderConstant*.
Константы шейдера Direct3D 8
Это поведение отличается в Direct3D 8.x.
Given:
Create shader1 which references c4 and defines it with the def instruction
Scenario 1 (repeated with Direct3D 8):
Call Set***Shader with shader1
Call Set***ShaderConstant to set c4
Call Draw
Result: The shader will see the value in c4 from Set***ShaderConstant
В Direct3D 8.x Set***ShaderConstant действует немедленно. Рассмотрим этот сценарий:
Given:
Create shader1 which references c4 and defines it with the def instruction
Scenario 3:
Call Set***Shader with shader1
Call Draw
Result: The shader will see the def'd value in c4
Given:
Scenario 3 has just completed
Create shader2 (which references c4 but does not use the def instruction
to define it)
Scenario 4 :
Call Set***Shader with shader2
Call Draw
Result: The shader will see the def'd value in c4 (set by def in shader 1)
Нежелательным результатом является то, что порядок установки шейдеров может повлиять на наблюдаемое поведение отдельных шейдеров.
Требования к модели драйвера шейдера
Интерфейсы Direct3D 9 ограничены драйверами интерфейса драйвера устройства (DDI), которые имеют уровень DirectX 7 и выше. Чтобы проверить уровень DDI, запустите средство диагностики DirectX и проверьте сохраненный текстовый файл.
Для справки интерфейсы Direct3D 8 работают только на драйверах DDI, которые имеют уровень DirectX 6 и выше.
Двоичный формат шейдера
Побитовая структура потока инструкций шейдера определена в D3d9types.h. Если вы хотите разработать собственный компилятор шейдера или строительные инструменты, а дополнительные сведения о потоке маркеров шейдера см. в комплекте средств разработки драйверов Direct3D 9 (DDK).
Язык шейдера C-like
Ознакомьтесь с справочником по HLSL для работы с языком шейдера C.
Связанные разделы
-
Справочник по для HLSL