Nuta
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować się zalogować lub zmienić katalog.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
Direct3D 10.1 rozszerza zestaw funkcji Direct3D 10.0 o następujące nowe funkcje:
Tryby mieszania — niezależne tryby mieszania na obiekt docelowy renderowania przy użyciu nowego interfejsu blend-state (zobacz ID3D10BlendState1 Interface). Operacje łączenia dwóch źródeł są ograniczone do renderowania miejsca docelowego 0; Użytkownik nie może zapisywać w innych danych wyjściowych ani nie zawierać obiektów docelowych renderowanych powiązanych z miejscami innymi niż slot 0.
Zachowanie wytrysku — powierzchnie zerowe są automatycznie usuwane; ma to wpływ tylko na renderowanie szkieletów.
Reguły zmiennoprzecinkowe — używa tych samych reguł IEEE-754 dla operacji zmiennoprzecinkowych z wyjątkiem 32-bitowych operacji zmiennoprzecinkowych, aby uzyskać wynik w ciągu 0,5 jednostki ostatniego miejsca (0,5 ULP) nieskończonie precyzyjnego wyniku. Dotyczy to dodawania, odejmowania i mnożenia. (dokładność do 0,5 ULP dla mnożenia, 1,0 ULP dla obustronności).
Formaty — precyzja mieszania float16 wzrosła do 0,5 ULP. Łączenie jest również wymagane w przypadku formatów UNORM16/SNORM16/SNORM8.
Multisample Anti-Aliasing — multisampling został ulepszony w celu uogólnienia przezroczystości opartej na pokryciach i zwiększenia wydajności wieloprzedańczej pracy z renderowaniem wieloprzepustowym. Aby to osiągnąć, wszystkie semantyki wieloprzykładowe są definiowane tak, jakby cieniowanie pikseli zawsze było uruchamiane raz na próbkę (częstotliwość próbkowania), obliczanie oddzielnego koloru na próbkę. Jeśli cieniowanie pikseli nie używa żadnych atrybutów dla próbki, obliczy tę samą wartość dla każdej objętej próbki w pikselu. W takim przypadku jest to odpowiednik sprzętu wykonującego cieniowanie raz na piksel (częstotliwość pikseli), replikując wynik do wszystkich omówionych próbek. Oczywiście uruchamianie z częstotliwością pikseli zawsze daje takie same wyniki, jak uruchamianie tego samego cieniowania z częstotliwością próbkowania, gdy atrybuty są próbkowane z częstotliwością pikseli. Statystyka potoku PSInvocations zwiększa się z częstotliwością próbkowania, chyba że cieniowanie działa z częstotliwością pikseli.
Przepustowość etapu potoku — zwiększona ilość danych, które mogą być przekazywane między etapami cieniowania:
Zasób Limity Rejestry między etapami cieniowania 32 (32-bitowy składnik x 4) Rejestry wejściowe cieniowania wierzchołków 32 Wejściowe gniazda wejściowe asemblera 32 Reguły rasteryzacji — reguły rasteryzacji zostały zmienione dla wierszy, a ponadto dodano nowe funkcje.
- Funkcja MultisampleEnable wpływa tylko na rasteryzację linii (punkty i trójkąty nie mają wpływu) i służy do wybierania algorytmu rysunku liniowego. Oznacza to, że niektóre rasteryzacje wieloampowe z direct3D 10 nie są już obsługiwane.
- Nowe wykonywanie cieniowania pikseli z częstotliwością próbkowania z rasteryzacji pierwotnej.
Zasoby — usługa CopyResource jest włączona w dwóch nowych scenariuszach:
- Powierzchnie MSAA w kolorze i głębi/wzorniku mogą być teraz używane z usługą CopyResource jako źródło lub miejsce docelowe
- Konwersja formatu podczas kopiowania między 32/64/128-bitową strukturą, typizowane zasoby i skompresowane reprezentacje tych samych szerokości bitów.
Próbkowanie tekstur — instrukcje sample_c i sample_c_lz są definiowane do pracy zarówno z teksturami2DArrays, jak i TextureCubeArrays, użyj elementu członkowskiego Lokalizacji (składnika alfa), aby określić indeks tablicy.
Widoki — TextureCube i nowy element TextureCubeArray (zobacz D3D10_TEXCUBE_ARRAY_SRV1) nie są rzeczywistymi zasobami, ale są nowymi widokami zasobu Texture2DArray. Utwórz widok zasobów na podstawie zasobu Texture2DArray z nową flagą użycia (D3D10_RESOURCE_MISC_TEXTURECUBE), użyj nowego ID3D10ShaderResourceView1 Interfejs interfejsu, aby powiązać widok tekstury modułu z potokiem.
Nowe funkcje wymagają typu urządzenia 10.1 (zobacz ID3D10Device1 Interface), które można utworzyć przez wywołanie D3D10CreateDevice1lub można utworzyć urządzenie i łańcuch wymiany w tym samym czasie, wywołując D3D10CreateDeviceAndSwapChain1.
W systemie Windows Vista z dodatkiem Service Pack 1 biblioteki DLL Direct3D 10.0 i Direct3D 10.1 istnieją obok siebie. Aby uzyskać dostęp do funkcji 10.1, wykonaj jedną z następujących czynności:
Uzyskiwanie dostępu do funkcji 10.1 w Vista Gold i Vista z dodatkiem Service Pack 1
Deweloperzy, którzy chcą obsługiwać Vista Gold, a także SP1, będą musieli uwzględnić brak nowych rozszerzeń interfejsu API 10.1 w Vista Gold. Zarówno DXUT, jak i D3DX10 zapewnią wygodne funkcje tworzenia odpowiedniego urządzenia na podstawie bibliotek DLL dostępnych w systemie i dostępnego sprzętu (10.0 lub 10.1). Urządzenie 10.1 dziedziczy z urządzenia 10.0 i można je pobrać przy użyciu funkcji QueryInterface(). Zaleca się, aby każda aplikacja śledziła typ urządzenia i utrzymuje wskaźnik na urządzeniu 10.1 (jeśli jest dostępny), aby uniknąć częstych wywołań QueryInterface, gdy wymagana jest funkcja 10.1. Podobnie, gdy widoki zasobów 10.1 i obiekty stanu są skojarzone przez klasę niestandardową aplikacji, zaleca się, aby aplikacja śledzić, czy obiekt jest typem 10.0 lub 10.1, aby uniknąć nadmiarowych wywołań QueryInterface(). D3DX10 zawiera zestaw funkcji narzędziowych, które upraszczają ten proces (zobacz D3DX10CreateDevice i D3DX10CreateDeviceAndSwapChain).
Uzyskiwanie dostępu do funkcji 10.1 w systemie Vista z dodatkiem Service Pack 1 wyłącznie
Niektórzy deweloperzy mogą zdecydować się na wymaganie systemu Vista z dodatkiem Service Pack 1, który będzie szeroko dystrybuowany dla użytkowników końcowych i zawiera szereg ulepszeń poza programem Direct3D 10.1. Ci deweloperzy mogą używać wyłącznie nagłówków i bibliotek Direct3D 10.1, biorąc zależność od bibliotek DLL Direct3D 10.1, które obsługują zarówno sprzęt 10.0,0, jak i 10.1 (niektóre wywołania mogą zakończyć się niepowodzeniem na urządzeniach 10.0, na których nie są obsługiwane nowe funkcje).
Niektóre dodatkowe uwagi:
- Interfejsy API uwidocznione w D3DX10.dll będą akceptować zarówno urządzenia 10.0,0, jak i 10.1, i będą korzystać z funkcji 10.1, jeśli są dostępne.
- D3D10SDKLayers.dll obsługuje urządzenie 10.1 i może wyprowadź odpowiednie debugowanie dla funkcji 10.1.
- D3D10Ref.dll implementuje urządzenie programowe 10.0 i 10.1.
- D3DX10 i FXC obsługują zaktualizowany model cieniowania 10.1 z następującymi celami: vs_4_1, gs_4_1, ps_4_1 i fx_4_1, które mogą być powiązane z urządzeniem 10.1. Urządzenie 10.1 obsługuje cieniowania modeli 4.0 i 4.1.
- Struktura efektu Direct3D 10.0 obsługuje urządzenia 10.0 i 10.1, jednak każda technika obejmująca cieniowania model 4.1 lub nowe funkcje 10.1 muszą używać urządzenia 10.1.
Tematy pokrewne
-
Przewodnik programowania dla Direct3D 10