Shadery i pliki efektów – sprostowaniePłynne przejście od programowania grafiki 3D przy pomocy fixed pipeline do wykorzystania shaderów nie jest z początku takie proste. Jest oczywiście w sieci mnóstwo tutoriali, które to ułatwiają. Zauważyłem jednak, że mają one tendencję do przekazywania naciąganych – mówiąc delikatnie – faktów na temat tego, w jaki sposób shadery oraz pliki efektów .fx (często omawiane łącznie) muszą być wykorzystywane w aplikacjach DirectX.
Dlatego pomyślałem sobie, że dobrze byłoby sprostować kilka mitów, jakie się tutaj pojawiają i wprowadzają zamieszanie do i tak niełatwej dziedziny programowania. Warto bowiem wiedzieć, iż to nieprawda, że:
SetVertex/PixelShader urządzenia DirectX. Plik efektów nie jest wtedy do niczego potrzebny.D3DFVF tak samo dobrze opisują format danych dla vertex shaderów, jak deklaracje wierzchołków (IDirect3DVertexDeclarationX) i DirectX nie ma problemu z łączeniem jednego z drugim. Analogia działa zresztą też w drugą stroną: użycie fixed pipeline nie wymusza korzystania z FVF.m4x4 oPos, v0, c4) sam fakt korzystania z programowalnego potoku grafiki nic nie wymusza w zakresie formatu danych wierzchołków.Dobry tekst! Faktycznie obala powszechne mity na temat shaderów.
Możnaby jeszcze dorzucić mit pt. „Shadery są trudne”. Tak naprawdę niektóre rzeczy łatwiej jest napisać w shaderze, niż kombinując z ustawieniami Fixed Pipeline, a całą potrzebną do tego matematykę i tak trzeba znać.
Ten mit staram się obalać dość regularnie, co zresztą specjalnie trudne nie jest. Ot choćby dzisiejszy przykład z forum Warsztatu, gdzie człowiek musi użyć 3 stage’ów do teksturowania, jeśli nie może/chce pozwolić sobie na pixel shader :)
http://forum.gamedev.pl/index.php/topic,14458.msg176516.html#msg176516
Znaki nowej linii dodawane są automatycznie.
Do wstawiania kodu użyj [code][/code], a do wzorów (w LaTeX-u) [tex][/tex].
Dozwolne tagi HTML:
<a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>