Pisania aplikacji 3D bez shaderów sobie nie wyobrażamy, prawda (jeżeli sobie wyobrażamy to polecam zakup GTX 280 -- leczy z tego bardzo szybko)? A owych shaderów nie będziemy przecież klepać w assemblerze jak jaskiniowcy. Do wyboru mamy trzy, a w zasadzie dwie możliwości: GLSL albo HLSL odpowiednio dla OGL/DX, albo CG, który jest uniwersalny (a przy okazji ma najfajniejszą nazwę).
To tyle tytułem zupełnie niepotrzebnego wstępu. Chciałbym bowiem ułatwić życie tym z Was, którzy dotychczas toczyli nierówną walkę z shaderami. Dlaczego nierówną? Bo domyślnie VS nie wspiera shaderów .cg (nie wiem jak jest z HLSL) i praca wygląda tak:
- poprawiam kod shadera
- uruchamiam program
- czytam MessageBoxa o błędach kompilacji shadera długi na pół ekranu (optymistyczny przypadek) albo podziwiam natychmiastowy powrót do IDE (dla pesymistów)
A Visual Studio da się zmusić do ludzkiego traktowania shaderów CG!
- Po pierwsze, można kazać mu kolorować składnię. Wykorzystujemy tu fakt zgodności CG z C i plik z dodatkowymi słowami kluczowymi. W instalce Cg Toolkit są gotowe do ,,odkliknięcia'' pliki włączające kolorowanie. Jedyny mankament jest taki, że od teraz wszystkie użycia tex2D czy lerp będą kolorowe. Dla funkcji min i max jest to trochę wkurzające. Być może istnieje magiczna opcja ustalająca słowa kluczowe tylko dla plików .cg (ale aż tak głęboko nie szukałem).
- Co więcej, można podpiąc kompilator shaderów CG bezpośrednio pod VS. Dzięki temu poprawność składni będzie kontrolowana przez kompilator zupełnie jak w przypadku ,,zwyczajnych'' źródełek. Jak to zrobić?
- do projektu dodajemy folder typu Shader Files (jeżeli jeszcze go nie mamy)
- PPM na projekcie, Custom Build Rules...
- New Rule File (Display Name, File Name i Directory z grubsza dowolne), Add Build Rule...
- uzupełniamy okienko mniej więcej w taki sposób:
I już! Pliki .cg będą przepuszczane przez kompilator cgc i generować błędy podobne do tych z plików .cpp:
Cudo, prawda? (bez skojarzeń z CUDA, chociaż...)
Comments:
-
To ja polecam w to miejsce programik wlasnego autorstwa ;)
http://www.sirmike.org/projects/cgeddie/
Robi dokladnie to czego potrzebujesz i do tego ma podswietlanie skladni i prostego intellisense-a dla funkcji. Enjoy.04.11.2008 22:16:10
-
Jakbyś zrobił to w formie pluginu do VS, miałbyś mnie za oddanego użytkownika. :)
05.11.2008 01:00:32
-
Za duzo ceregieli. Ale przemysle ten pomysl.
05.11.2008 11:31:44