Początek rozwoju Shader [zamknięty]

Chcę zacząć tworzyć gry za pomocą XNA Microsoftu. Częścią tego jest rozwój Shader, ale nie mam pojęcia, jak zacząć. Wiem, że Nvidia FX Composer jest świetnym narzędziem do tworzenia shaderów, ale nie znalazłem zbyt wiele przydatnych i zaktualizowanych treści, jak naprawdę zacząć.

Jakie tutoriale byście polecili?

 18
Author: Michael Stum, 2008-08-10

9 answers

Rozwój shaderów w XNA (który oczywiście używa DirectX) wymaga znajomości HLSL lub zespołu shaderów. Polecam zapoznanie się z tym pierwszym, zanim zanurzymy się w tym drugim.

Zanim napiszesz jakiekolwiek shadery, dobrym pomysłem jest zrozumienie potoku shaderów i próba zrozumienia tego, co jest możliwe przy użyciu programowalnych shaderów. Gdy znasz życie piksela (od danych źródłowych aż po ekran) wtedy zrozumienie przykładów shaderów staje się o wiele łatwiejsze.

Następnie spróbuj napisać własny HLSL, który robi to, co robił naprawiony rurociąg T&L, aby pobrudzić ci ręce. Jest to odpowiednik programu "hello world" w vertex / pixel shader world. Kiedy jesteś w stanie to zrobić i rozumiesz, co napisałeś, jesteś gotowy, aby przejść do bardziej zabawnych rzeczy.

Kolejnym krokiem może być symulacja podstawowego oświetlenia sepkularnego w jednym z shadery z jednego źródła światła. Następnie można dostosować to w dół toru, aby korzystać z wielu świateł. Baw się kolorami i ruchem świateł. Pomoże to również zaznajomić się z używaniem stałych shadera.

Gdy masz kilka podstawowych shaderów razem, powinieneś spróbować zrobić to tak,aby Twoja gra / silnik używał wielu / różnych shaderów na różnych obiektach. Zacznij dodawać inne bity jak basic bump lub normal maps .

Kiedy dojdziesz do na tym etapie świat jest twoją ostrygą. Możesz zacząć zanurzać się w funky effectcs, a nawet rozważyć użycie GPU dla więcej niż pierwotnie zakładano.

Dla tych, którzy są nieco bardziej zaawansowani, istnieje kilka dobrych książek, które są dostępne za darmo online, które mają kilka świetnych informacji z Nvidia tutaj i tutaj .

Nie zapominaj, że istnieje doskonała seria książek o nazwie Shader X, która obejmuje niesamowite rzeczy shader. Jest 1, 2, 3, 4, 5 oraz 6 już w druku i 7 już wkrótce.

Powodzenia. Jeśli masz jakieś shadery, chętnie je zobaczę:)

 31
Author: OJ.,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2008-08-10 04:21:32

Chciałbym tylko powtórzyć, jak Świetne są książki GPU Gems - naprawdę fantastyczne źródło dla każdego poważnego rozwoju Grafiki.

OJ w zasadzie podsumował naprawdę dobry proces uczenia się, dodam tylko, że nie można lekceważyć dobrego fundamentu w matematyce geometrycznej (wektory/macierze jako minimum) - ale nie jest to tak trudne, jak ludzie czasem się domyślają. Poznanie, czym jest produkt kropkowy, produkt krzyżowy, wektor normalny i mnożenie macierzy jest dobrym pierwszym krokiem :). Spróbuj zrozum dokładnie, co dzieje się między światem/widokiem/projekcją-klipem/przestrzenią ekranu, czym jest podział perspektywy itp.

Kiedy zaczynałem naukę, dobrym ćwiczeniem jest wdrożenie całego rurociągu T & L w oprogramowaniu, wraz z obcinaniem / wycinaniem itp. Jest to długi proces i może nie wydawać się warte zachodu, ponieważ jestem pewien, że chcesz po prostu zanurzyć się w zabawnych rzeczach, ale właściwe zrozumienie tego, co się dzieje, jest naprawdę przydatne i okaże się warte zachodu, gdy niezmiennie natykają się na bardziej podstępne i trudne do zdiagnozowania błędy.

Staraj się nie być na uboczu z narzędziami takimi jak FX Composer początkowo, są one przydatne do prototypowania, ale mając solidne podstawy w podstawach jest o wiele bardziej opłacalne w dłuższej perspektywie.

 5
Author: Ali Parr,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2008-08-14 16:02:48

Jednym z najlepszych sposobów na rozpoczęcie pracy z shaderami jest przeczytanie wstępu do programowania gier 3D z DirectX 9.0 c a Shader autorstwa Franka Luny. Autor najpierw wprowadza DirectX i HLSL, a następnie stopniowo ujawnia moc shadera. Zaczyna od bardzo prostych shaderów, ale pod koniec książki wiesz, jak tworzyć oświetlenie, cienie, układy cząstek itp. Świetna Książka.

OJ sugerował byś przeczytał serię Shader, ale rzeczy tam nie są dla początkujących więc to nie pomoże Ci wiele, gdy robisz swoje pierwsze kroki.

Zamieściłem również Artykuł tutaj o najlepszych książkach, które pomogą Ci zacząć pracę nad grą.

 3
Author: Milan Nankov,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2008-12-09 06:49:07

Dołączyłbym do pochwał udzielonych OJ-naprawdę dobra odpowiedź. Mimo to, gdy już opanujesz podstawy, możesz się wiele i szybko nauczyć, pobierając jedno z następujących dwóch świetnych narzędzi:

Gdy to zrobisz, przejdź do bibliotek projektów i zacznij przeglądać przykłady, zaczynając od podstawowego cieniowania i przechodząc do cieni, normalnego mapowania, materiałów, efektów i wszystkiego, co Cię interesuje. weź projekt, zacznij zmieniać algorytmy zgodnie z określonymi celami i zobacz, jak go uzyskać. Przekonasz się, że wiele przykładów jest naprawdę zaawansowanych i otworzy twoje horyzonty.

Baw się dobrze

 2
Author: Adi,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2008-09-17 19:03:08

Podczas gdy wiele dobrych rad zostało już udzielonych, jeśli masz ciężką pracę nad opanowaniem zaangażowanych kroków, Mental Mill zapewnia wizualny sposób konstruowania shaderów (Edycja artysty jest dołączona za darmo z FX Composer-sama również za darmo!).

Podczas gdy lepiej byłoby długoterminowo uczyć się kodu HLSL bezpośrednio, Mental Mill może wygenerować te pliki Fx dla Ciebie (abyś mógł zerknąć na zmiany). Uwaga, jak wszystkie generatory kodu, jest to trochę bardziej gadatliwe niż możesz zrobić, gdy zrozumiesz HLSL!

Wizualny postęp efektów, z jednej metody do drugiej, jest bardzo imponujący!

 2
Author: Ray Hayes,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2008-10-27 17:02:04

Sams ' s XNA Unleashed Chada Cartera jest świetnym punktem wyjścia dla XNA i zakłada niewielką wiedzę na temat praktyk tworzenia gier lub trudnych matematyki przed rozpoczęciem. Zawiera dwa rozdziały na temat podstawowych i zaawansowanych shaderów.

Jako boczna notka, miej oko na Google dla samouczków WPF Shader, teraz używa tej samej technologii, aby umożliwić shadery klientów w aplikacjach WPF i samouczkach, które moim zdaniem są w dużej mierze kompatybilne z XNA.

 1
Author: Nidonocu,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2008-08-10 00:45:01

Nie używałem XNA ani DirectX. Ale, aby poznać podstawy programowania shaderów z Cg, CG Tutorial jest najlepszą książką, jaką znalazłem.

 1
Author: Ashwin Nanjappa,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2008-08-18 10:34:11

Powinieneś również spojrzeć na RenderMonkey. To dobre narzędzie. Jeśli chodzi o książki, sprawdź XNA 2.0 przepisy programowania gier z Riemer Grootjans ... świetna książka.

 1
Author: Joel Martinez,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2008-08-28 15:08:18

Jedna szybka myśl o edytorach Visual shader. Tego typu edytory są bardzo fajną rzeczą do zabawy, ale naprawdę, naprawdę polecam trzymać się pracy z tekstowym HLSL (tam zarówno RM, jak i FXC robią to). Pracuję jako programista gier i zbudowałem kilka systemów shaderów (ten w Battlefield 2 i Farcry 2, na przykład) i, szczerze mówiąc, odkryłem, że HLSL jest bardziej wartościowy niż jakakolwiek sieć shaderów graficznych do tej pory.

Są takie rzeczy jak podążanie za przepływem wykonanie, debugowanie shadera lub możliwość szybkiego iteracji przypadków testowych, które dają wgląd, który jest prawie niemożliwy do uzyskania przez narzędzie wizualne.

Sam używałem visual shader builderów i lubię je, a pewnego dnia, gdy cieniowanie nie jest tak ważne pod względem wydajności, jak dziś, mogą być odpowiednim narzędziem do tego zadania.

..chociaż domyślam się, że zobaczymy odroczone oświetlenie i prawdopodobnie pełne renderowanie oprogramowania, zanim nadejdzie ten dzień;)

 1
Author: Rodrigo Lopez,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2008-11-15 01:46:28