Поделиться через


Справочник по шейдеру 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