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


Справочник по шейдеру Asm

Шейдеры управляют программируемым графическим конвейером.

Справочник по вершинным шейдерам

Различия шейдеров вершин суммируют различия между версиями шейдеров вершин.

Справочник по шейдеру пикселей

Различия шейдеров пикселей обобщают различия между версиями шейдеров пикселей.

Справочник по модели шейдеров 4 и 5

В разделах Сборка модели 4 и Сборка модели шейдера 5 описаны инструкции, которые поддерживаются шейдерными моделями 4 и 5.

Поведение регистров констант в шейдерах сборок

Существует два способа задать регистры констант в шейдере сборки.

  • Объявите константу шейдера в коде сборки с помощью одной из инструкций def*.
  • Используйте один из методов API Set***ShaderConstant*.

Константы шейдера 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**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-подобный язык шейдеров

Ознакомьтесь со справочником по HLSL , чтобы ознакомиться с языком шейдеров, похожим на C.

Справочник по HLSL