Technologie i wydarzenia
Artykuł
Marcin Bieńkowski, Środa, 20 czerwca 2007, 09:30

Shader Model 4.0

Model cieniowania 4.0 (Shader Model 4.0) zaimplementowany w DirectX 10 jest znacznie bardzie elastyczny niż jego poprzednik Shader Model 3.0 z DX 9. Programiści przy pisaniu programów shaderowych mają do dyspozycji znacznie więcej rejestrów. Liczba rejestrów stałych wzrosła z 256 do 65.536. Pogrupowane są one w bloki 16 buforów z 4096 rejestrami każdy. Liczba rejestrów tymczasowych wzrosła zaś z 32 do 4096. Zwiększono też rozmiar obsługiwanych tekstur. W DirectX 9.0c tekstury mogły mieć maksymalny rozmiar 4096×4096 pikseli, zaś w DX10 jest to wymiar 8192×8192 punktów. Zwiększona została też liczba obiektów, które mogą być jednocześnie renderowane techniką MRT (multiple render targets). Dotychczas można było nakładać tekstury na cztery obiekty, teraz tych obiektów może być osiem. Wprowadzono też tablice tekstur (texture arrays) mieszczące do 512 pojedynczych bitmap. Programiści mają tez do swojej dyspozycji mechanizm strumienia danych (stream out). Pozwala on wysłać w dowolnej chwili rezultaty pracy jednostek geometrycznych wprost do pamięci karty.

To nie koniec nowości wprowadzonych w SM 4.0. Nowe są również dwa formaty danych stosowane podczas renderingu HDR (High Dynamic Range). Pierwszy z nich używa cyfr o pięciobitowej dokładności, stanowiących wykładnik potęgi opisującej każdy kolor mantysą o dziewięciobitowej dokładności. Drugi, prostszy wykorzystuje tekstury o formacie R11G11B10. Zwiększono tutaj dokładność odwzorowania barwy czerwonej i zielonej do 11 bitów. Informacje o barwie niebieskiej w dalszym ciągu są zapisane z 10-bitową dokładnością.

 


DX8 SM 1.x DX9 SM 2.0 DX9 SM 3.0 DX10 SM 4.0
Instrukcje Vertex 128 256 512 64k
Instrukcje Pixel 4+8 32+64 512 64k
Rejestry stałe Vertex 96 256 256 16×4096
Rejestry stałe Pixel 8 32 224 16×4096
Rejestry tymczasowe Vertex 16 16 16 4096
Rejestry tymczasowe Pixel 2 12 32 4096
Dane wejściowe Vertex 16 16 16 16
Dane wejściowe Pixel 4+2 8+2 10 32
Liczba renderowanych jednocześnie obiektów 1 4 4 8
Liczba pobieranych przez moduł Vertex tekstur Niedostępne Niedostępne 4 128
Liczba przetwarzanych przez moduł Pixel tekstur 8 16 16 128
Rozmiar tekstur 2D Brak Brak 2000×2000 pikseli 8000×8000 pikseli
Operacje wewnętrzne Brak Brak Brak Jest
Pętle wewnętrzne Brak Brak Brak Jest
Pochodne Brak Brak Jest Jest
Kontrola przepływu operacji Vertex Niedostępna Statyczna Statyczna/Dynamiczna Dynamiczna
Kontrola przepływu operacji Pixel Niedostępna Niedostępna Statyczna/Dynamiczna Dynamiczna
Ocena artykułu:
Ocen: 2
Zaloguj się, by móc oceniać
Artykuły spokrewnione
Facebook
Ostatnio komentowane