GLSL Shader Tester

Sursă Originală: http://www.dgp.toronto.edu/~jacky/shaderdev.html

Ce este?

Acesta este un mic program pe care l-am scris pentru a mă ajuta să proiectez câteva dintre efectele de iluminare pentru programul meu fizxDraw . Se dezvoltă lent într-un pat de testare GLSL shader pentru Linux. Am încercat Shader Designer pe Linux, dar am avut probleme cu modul în care a instalat camera. De asemenea, folosesc o temă de desktop întunecată (similară cu stilul acestor pagini) și nu am putut vedea codul. În plus, eu sunt un mare fan al lui Gvim pentru editarea textului sau codului oricum, așa că am evitat editorul și l-am folosit ca un pat de test. Dar nu am putut să mă ocup de problemele aparatului foto, așa că am ajuns să scriu propriul sistem.

Recunosc că este o aplicație foarte primitivă și că nu am folosit niciodată unelte pro, cum ar fi FX Composer de la NVIDIA sau RenderMonkey AMD / ATI, deoarece acestea nu rulează pe Linux. Deci, nu încercam să le imită, doar scriam ceva care a lucrat pentru mine.

Imaginea teaser de mai sus arată graficul de bază pentru shaderDev . Panoul “Shadere” vă permite să încărcați orice număr de shadere de vârfuri și fragmente și să le compilați într-un singur program. De asemenea, va încărca valorile uniforme nerezervate și va stabili valorile. Interfața de stabilire a valorii este destul de clunky – probabil că o voi revizui în viitor. Dar a fost o treabă rapidă și murdară. Imaginea arată șamponul meu de iluminare pentru pixuri cu pixel, cu o textură pentru culoarea difuză.

Această imagine prezintă aceeași configurare ca înainte, dar folosind conducta OpenGL fixă. Observați cât de diferit este umbrirea! Textura lemnului maschează unele dintre efectele de discretizare, iar shaderul meu are mai multe proprietăți reflexive ale lemnului lustruit. Am proiectat inițial acest shader pentru utilizarea în fizxDraw , dar se pare că la performanța ecranului scade cu un factor de 10!

Această imagine prezintă de asemenea panoul de iluminare, care vă permite să configurați toate proprietățile luminilor. Panourile rămase sunt prezentate mai jos și vă permit să specificați materiale, texturi și forme.

Ce trebuie făcut

ShaderDev este departe de a fi terminat. Există o mulțime de lucruri de făcut. Iată câteva dintre lucrurile care necesită îmbunătățiri și unele caracteristici neimplementate.

  • Mai multe forme, inclusiv încărcarea ochiurilor de plasă (probabil fișiere OFF).
  • Includeți în panoul “Forme” un mod de a edita seturile de coordonate de textură.
  • Încărcarea atributelor vertex din fișier pentru a intra într-un shader.
  • Interfață mai bună pentru setarea valorilor valorilor uniforme.
  • Mai mult control al stării OpenGL, cum ar fi funcțiile de amestecare și funcțiile de testare a adâncimii.
  • Aveți nevoie de o modalitate de a atrage lumini direcționale.
  • <Funcția ta preferată aici>

Buguri cunoscute:

  • Nu se pot seta variabile uniforme până când programul nu este utilizat. Ar trebui să poată face acest lucru dacă programul este valabil.
  • Texturile nu se afișează până când valoarea filtrului de minificare nu este modificată.
  • Programul ocazional se blochează la eliminarea texturilor din scenă.
  • Pictograma pentru lumină este texturată atunci când texturarea este activată.

Încearcă!

Codul pentru shaderDev este disponibil aici . De asemenea, veți avea nevoie de următoarele biblioteci multi-platformă:

Am testat doar acest lucru pe Ubuntu Linux Gutsy , dar cred că ar trebui să funcționeze bine pe orice altă platformă Linux.