Visual Studio + CG

24.10.2008 18:23 in grafika 3D, programowanie, visual studio, cg

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!

  1. 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).
  2. 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:

  1. SirMike

    SirMike:

    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

  2. Dabroz

    Dabroz:

    Jakbyś zrobił to w formie pluginu do VS, miałbyś mnie za oddanego użytkownika. :)

    05.11.2008 01:00:32

  3. SirMike

    SirMike:

    Za duzo ceregieli. Ale przemysle ten pomysl.

    05.11.2008 11:31:44

Leave comment: