Autor Wątek: Test silnika - kłopotliwy shader  (Przeczytany 9153 razy)

Offline Kuba D.

  • Użytkownik

# Marzec 09, 2010, 11:23:29
Cytuj
BTW. nie mam mozliwosci pisac shaderow na bierzaco pod ATI, jedynie testowac je raz na jakis czas.
Wiec mam pytanie: Czy znacie jakies narzedzie/debugger do GLSL ktory by sprawdzal poprawnosc shaderow z trybem zgodnosci z kartami ATI?
No to masz mały problem. Nie możesz po prostu kupić jakiejś taniutkiej, starszej karty ATI za parędziesiąt złotych tylko po to, żeby pisać w GLSL ? Albo przesiądź się na Cg, będzie taniej. Czy są jakieś narzędzia to nie wiem, może pisz shadery w RenderMonkey ATI, może on sprawdza czy są zgodne ze specyfikacją ale wątpię :)

Cytuj
Zresztą na ATI powinno jakiś błąd wywalić a nie po prostu nie działać.
Jak nie ma jakiegoś loga który by powiadamiał o nieskompilowaniu się shaderów to OpenGL żadnego błędu sam z siebie nie wywali przy shaderach tylko po prostu je zignoruje.


Offline Mr. Spam

  • Miłośnik przetworów mięsnych

Offline skoti

  • Użytkownik

# Marzec 09, 2010, 11:42:00
@PsichiX: Mam pytanie... gdzie w specyfikacji GLSL 1.20.x znalazłeś funkcję textureSize()? Bo ja nie widzę... za to widzę jako zmianę względem 1.20 w 1.30 (OpenGL 3.0). Zamiast pobierać za pomocą textureSize() wielkości przekazuj parametr ivec2 z wielkością.

BTW. Mam pytanie do osób piszących w GLSL 1.20, czy glValidateProgram() i sprawdzenie GL_VALIDATE_STATUS nie rozwiąże problemu? Do OpenGL 2.1 używam Cg, a w GLSL 1.50 nawet jak kompilacje i linkowanie przejdzie to po Validate nie przepuszcza rzeczy działających tylko na nVidii i podaje komunikaty błędów.
« Ostatnia zmiana: Marzec 09, 2010, 13:01:20 wysłana przez skoti »

Offline PsichiX (ΨΧΞ)

  • Użytkownik
    • PsichiX Website

# Marzec 09, 2010, 13:00:33
Cytuj
Zamiast pobierać za pomocą textureSize() wielkości przekazuj parametr ivec2 z wielkością.
Trafiasz na listę dziewic do mego haremu za to :D Nie pomyslalem ze to moze sprawic klopoty, trzeba bedzie sie przylozyc bardziej do nauki GLSL :)

Offline .c41x

  • Użytkownik
    • homepage

# Marzec 09, 2010, 13:58:56
jest validator glsl, troche stary, ale sa zrodla (glsl validator):
http://3dshaders.com/home/index.php?option=com_weblinks&catid=13&Itemid=33
mozesz tez jak ktos wspomnial uzyc render małpy, albo AMD GpuPerfStudio (Nie wiem czy dziala na nv?).

Offline Patryk N.

  • Użytkownik

# Marzec 09, 2010, 16:10:10
Jeśli chodzi o sprawdzanie shader'ów to polecam AMD ShaderAnalyzer (nie wiem jednak czy bez karty Radeon będzie działał). Co do samego programu to odwrócona Y oraz brak blura, zarówno w wersji pierwszej jak też "poprawionej". Testowałem na HD4850, Catalyst 10.2.

Offline Furry

  • Użytkownik
    • DevBlog

# Marzec 09, 2010, 21:10:00
A u mnie wyskakuje błąd. Mam zainstalowane najnowsze sterowniki, z resztą na tym samym komie piszę własną grę i wszystko działa. Parametry:
-Windows Vista 32
-Asus M50VC
-Intel Core Duo 2,27GHz
-GeForce 9300M
W załączniku error

Offline PsichiX (ΨΧΞ)

  • Użytkownik
    • PsichiX Website

# Marzec 10, 2010, 08:43:31
@Furry: Dziwne, bo ten blad wyskakuje przy sprawdzaniu przez GLEWa czy OpenGL jest 2.0 lub wiekszy. Czyzby GLEW nie dzialal poprawnie?

Macie tu kolejny (oby ostatni) test, uzylem RenderMonkey i poprawilem w nim shadery pod wersje 1.2 glsl (faktycznie wczesniej pisalem pod specyfikacje 1.5). Wczesniej myslalem ze FBO tez sie kaszani ale ono nie ma prawa, gdyz jesli nie jest wspierane przez karte to standardowo na render targecie dziala.

http://psichix.com/wp-content/uploads/2010/03/XeBlurTest.zip

Mam nadzieje ze teraz na ATI zadziala poprawnie :D

screeny jak powinno wygladac:

« Ostatnia zmiana: Marzec 10, 2010, 09:51:30 wysłana przez PsichiX »

Offline dannte

  • Użytkownik

# Marzec 10, 2010, 10:32:51
U mnie:

---------------------------
XeCore ERROR
---------------------------
OpenGL does not support the GL_NV_vertex_program extension
---------------------------
OK   
---------------------------

Offline Dab

  • Redaktor
    • blog

# Marzec 10, 2010, 10:48:05
Na nv tez można sprawdzać poprawność shaderow. Zrobiłem ostatnio update driverow i niewiarygodne, ale nv pogonila mi kota ;) konkretnie oburzyla się na mul zamiast *.  Rozmawiałem kiedyś z gościem z nv odpowiedzialnym za drivery ogl i powiedział ze ich "rozszerzenia" do glsl to błąd z którego się teraz wycofują (i faktycznie tak jest, przynajmniej w trybie 3.2).

Offline hfjh

  • Użytkownik

# Marzec 10, 2010, 11:06:30
U mnie na radeonie to samo co u danntego.

Offline PsichiX (ΨΧΞ)

  • Użytkownik
    • PsichiX Website

# Marzec 10, 2010, 11:21:55
Ok, przerobiłem test aby sprawdzał czy w ogóle jakikolwiek shader działa na ATI, prosiłbym o sprawdzenie:

http://gmclan.org/up1105_3_XeTestEx.html

Jeśli będzie widać czerwony czworokąt na tle to znaczy że na ATI obsluga shaderow działa a ja zepsułem blura, a jesli cos innego (okno + slonce lub nic, czarne tlo) to znaczy ze te shadery w ogole nie sa obslugiwane na ATI.

EDIT:
Ktos z osob ktore ma ATI dostaly error o OpenGL version less than 2.0? Bo zdaje mi sie ze wiem gdzie jest przyczyna - byc moze GLEW ktorego uzywam do rozszerzen na ATI zle pobiera wersje OpenGL i dla tego nie laduje shaderow mimo iz je obsluguje.
« Ostatnia zmiana: Marzec 10, 2010, 11:26:08 wysłana przez PsichiX »

Offline skoti

  • Użytkownik

# Marzec 10, 2010, 11:46:32
@PsichiX: po błędzie od dannte wnioskuje, że próbujesz pobrać rozszerzenie GL_NV_vertex_program, którego jak sama nazwa wskazuje AMD nie ma (tylko NV) - zamiast niego pobierz GL_ARB_vertex_program (które ma zarówno nVidia jak i AMD).

Offline Dab

  • Redaktor
    • blog

# Marzec 10, 2010, 11:48:50
Nie sprawdzaj czegoś tak efemerycznego jak wersja OpenGL. W wersjach 1.0...2.1 nie ma żadnych haków które zależałyby od wersji. W szczególności OGL 1.0 z rozszerzeniami może oferować dokładnie to samo co 2.1. Dopiero tworzenie kontekstów 3.x zmienia mechanikę paru funkcji. Ergo: w 1.x/2.x sprawdzaj rozszerzenia, nie wersje. W 3.x na szczęście nie trzeba niczego sprawdzać, bo nie ma tam capsów :) (nie licząc oczywiście f-cji vendor-specific).

Offline Kuba D.

  • Użytkownik

# Marzec 10, 2010, 11:52:31
I u mnie podobnie. ATI nie obsługuje rozszerzeń gdzie jest słówko NV ( przynajmniej starsze karty ATI), zmień to czym prędzej, nie używaj żadnych rozszerzeń od NV tylko od ARB ( o czym wspomniał już skoti). W nowym teście jest to samo.

Widzę, że sam sobie nie poradzisz bez karty ATI więc Ci pomogę:

http://www.sendspace.pl/file/e1e0061ece8264ea9f040c6

Te shadery się kompilują ale czy działają jak należy tego nie jestem w stanie powiedzieć, ich działanie jest niezmienione, tylko pozmieniałem parę nazw zmiennych żeby się kompilowało ( i zmień to o czym mówił skoti).

Offline PsichiX (ΨΧΞ)

  • Użytkownik
    • PsichiX Website

# Marzec 10, 2010, 11:54:23
skoti, Kuba D.: blad ten jest przy wlaczonym output error logu do messageboxa i wystepuje na ATI poniewaz przy inicjacji shaderow silnik sprawdza wszystkie wspierane rozszerzenia, w tym NV.
BTW. Sciagam i sprawdzam (nie sprawdze, za stary komp na ktorym siedze teraz ;p).

Dab: w takim razie jak ja mam sprawdzic czy glsl jest natywnie obslugiwany przez karte? bo wyczytalem wlasnie ze przez sprawdzanie wersji i jesli 2.0 lub wyzej to sa obslugiwane, inaczej niet. Czy moze sprawdzac czy jest obslugiwane rozszerzenie shading_language?
« Ostatnia zmiana: Marzec 10, 2010, 11:57:16 wysłana przez PsichiX »