Udostępnij przez


Efekty (Direct3D 11)

Efekt DirectX jest kolekcją stanu potoku, ustawianą przez wyrażenia napisane w HLSL i niektóre składnie specyficzne dla struktury efektów.

Po skompilowaniu efektu użyj interfejsów API platformy efektu do renderowania. Funkcje efektu mogą wahać się od czegoś tak prostego, jak cieniowania wierzchołka, który przekształca geometrię i cieniowanie pikseli, który generuje pełny kolor, do techniki renderowania, która wymaga wielu przejść, używa każdego etapu potoku grafiki i manipuluje stanem cieniowania, a także stan potoku niezwiązany z programowalnymi cieniowaniami.

Pierwszym krokiem jest zorganizowanie stanu, który chcesz kontrolować w efekcie. Obejmuje to stan cieniowania (wierzchołek, kadłub, domena, geometria, piksel i cieniowanie obliczeniowe), tekstura i stan próbkatora używany przez cieniowanie oraz inny nieprogramowalny stan potoku. Możesz utworzyć efekt w pamięci jako ciąg tekstowy, ale zazwyczaj rozmiar jest wystarczająco duży, że jest przydatny do przechowywania stanu efektu w pliku efektowym (plik tekstowy kończący się rozszerzeniem fx). Aby użyć efektu, należy go skompilować (aby sprawdzić składnię HLSL, a także składnię struktury efektu), zainicjować stan efektu za pomocą wywołań interfejsu API i zmodyfikować pętlę renderowania w celu wywołania interfejsów API renderowania.

Efekt hermetyzuje cały stan renderowania wymagany przez określony efekt w jednej funkcji renderowania nazywanej techniką. Przekazywanie jest podzestawem techniki, która zawiera stan renderowania. Aby zaimplementować efekt renderowania wielokrotnego przekazywania, zaimplementuj co najmniej jeden przebieg w ramach techniki. Załóżmy na przykład, że chcesz renderować geometrię z jednym zestawem głębokości/wzornika, a następnie narysować niektóre sprites na górze. Renderowanie geometrii można zaimplementować w pierwszym przebiegu oraz rysunek sprite w drugim przebiegu. Aby renderować efekt, wystarczy renderować oba przebiegi w pętli renderowania. W efekcie można zaimplementować dowolną liczbę technik. Oczywiście im większa liczba technik, tym większy czas kompilacji dla efektu. Jednym ze sposobów wykorzystania tej funkcji jest tworzenie efektów za pomocą technik, które są przeznaczone do uruchamiania na innym sprzęcie. Dzięki temu aplikacja może bezpiecznie obniżyć wydajność na podstawie wykrytych możliwości sprzętowych.

Zestaw technik można zgrupować w grupie (która używa składni "fxgroup"). Techniki można grupować w dowolny sposób. Na przykład można utworzyć wiele grup, jedną na materiał; każdy materiał może mieć technikę dla każdego poziomu sprzętu; każda technika zawierałaby zestaw podań, które definiują materiał na konkretnym sprzęcie.

W tej sekcji

Temat Opis
organizowanie stanu w efektów
W przypadku wersji Direct3D 11 stan efektu dla niektórych etapów potoku jest zorganizowany przez struktury.
interfejsy systemowe efektowe
System efektu definiuje kilka interfejsów do zarządzania stanem efektu.
specjalne interfejsy
ID3DX11EffectVariable ma wiele metod rzutowania interfejsu do określonego typu potrzebnego interfejsu.
interfejsy i klasy w efektów
Istnieje wiele sposobów używania klas i interfejsów w efekty 11.
renderowanie efektu
Efekt może służyć do przechowywania informacji lub renderowania przy użyciu grupy stanu.
klonowanie efektów
Klonowanie efektu tworzy drugą, prawie identyczną kopię efektu.
składni strumienia wychodzącego
Cieniator geometrii ze strumieniem wychodzącym jest zadeklarowany przy użyciu określonej składni.
różnice między efektami 10 i efektami 11
W tym temacie przedstawiono różnice między efektami 10 i Efekt 11.

Przewodnik programowania dla Direct3D 11