Udostępnij za pośrednictwem


Odwołanie do cieniowania asm

Cieniowania napędzają programowalny potok grafiki.

Odwołanie do cieniowania wierzchołków

Różnice cieniowania wierzchołków podsumowuje różnice między wersjami cieniowania wierzchołków.

Odwołanie do cieniowania pikseli

Różnice cieniowania pikseli podsumowuje różnice między wersjami cieniowania pikseli.

Odwołanie do modelu cieniowania 4 i 5

Sekcje Shader Model 4 Assembly i Shader Model 5 Assembly opisują instrukcje obsługiwane przez model cieniowania 4 i 5.

Zachowanie stałych rejestrów w cieniowaniach zestawów

Istnieją dwa sposoby ustawiania rejestrów stałych w cieniatorze zestawu:

  • Zadeklaruj stałą cieniowania w kodzie zestawu przy użyciu jednej z instrukcji def*.
  • Użyj jednej z metod interfejsu API Set***ShaderConstant*.

Stałe cieniowania Direct3D 9

W trybie Direct3D 9 okres istnienia zdefiniowanych stałych w danym cieniatorze jest ograniczony tylko do wykonywania tego cieniowania (i nie jest zastępowalny). Zdefiniowane stałe w trybie Direct3D 9 nie mają efektów ubocznych poza cieniatorem.

Oto przykład użycia funkcji 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.

W trybie Direct3D 9 wywołanie metody Get***ShaderConstant* spowoduje pobranie tylko wartości stałych ustawionych za pomocą polecenia Set***ShaderConstant*.

Stałe cieniowania Direct3D 8

To zachowanie różni się w wersji 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

W trybie Direct3D 8.x Set***ShaderConstant natychmiast następuje. Rozważmy ten scenariusz:

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)

Niepożądanym wynikiem jest to, że kolejność ustawiania cieniowania może mieć wpływ na obserwowane zachowanie poszczególnych cieniowania.

Wymagania dotyczące modelu sterowników cieniowania

Interfejsy Direct3D 9 są ograniczone do sterowników interfejsu sterownika urządzenia (DDI), które są na poziomie DirectX 7 i wyższym. Aby sprawdzić poziom DDI, uruchom narzędzie diagnostyczne DirectX i sprawdź zapisany plik tekstowy.

Do celów referencyjnych interfejsy Direct3D 8 działają tylko na sterownikach DDI, które są na poziomie DirectX 6 i wyższym.

Format binarny cieniowania

Układ bitowy strumienia instrukcji cieniowania jest zdefiniowany w D3d9types.h. Jeśli chcesz zaprojektować własny kompilator cieniowania lub narzędzia budowlane i chcesz uzyskać więcej informacji na temat strumienia tokenu cieniowania, zapoznaj się z zestawem Direct3D 9 Driver Development Kit (DDK).

Język cieniowania przypominający język C

Zobacz HLSL Reference to experience a C-like shader language (Dokumentacja języka cieniowania przypominającego język C).

dokumentacja dla HLSL