DGL
https://delphigl.com/forum/

pow() auf ATI und nVidia verschieden?
https://delphigl.com/forum/viewtopic.php?f=20&t=10493
Seite 1 von 1

Autor:  Aya [ Di Jul 03, 2012 09:40 ]
Betreff des Beitrags:  pow() auf ATI und nVidia verschieden?

Hi,

ich habe gestern eines meiner Programme das erste mal auf einer ATI Grafikkarte getestet - lief alles wunderbar bis auf ein Shader, genauer gesagt die pow() funktion.

Auf allen meinen nVidia Karten sieht das Ergebnis korrekt aus, auf der ATI liefert pow() immer 0 (oder nan/inf?) zurück.
Nach einem schnellen googlen scheint es wohl so das die pow() funktion auf ATI Karten nicht korrekt funktioniert sobald einer der beiden Parameter negativ ist - ob das bei mir der Fall war, habe ich gestern aber dann nicht mehr durchgerechnet.

Glücklicherweise war es bei mir nur ein pow(x, 2.0) welches ich dann einfach durch x*x ersetzt habe.
Damit funktioniert der Shader nun einwandfrei.

Gibt es noch mehr solche Stolpersteine? Also gibt es noch andere bekannte "bugs" auf ATI/nVidia Karten in der Art?

Und, kann man Shader irgendwie debuggen? Ich lasse mir immer die Zwischenschritte als Farbe ausgeben was aber halt nur funktioniert wenn der Wert zwischen 0 und 1 liegt.. und immer alles selber auf dem Papier nach zu rechnen für die aktuellen uniform variablen ist etwas anstrengend :(

Danke~,
Aya

Autor:  Coolcat [ Di Jul 03, 2012 16:39 ]
Betreff des Beitrags:  Re: pow() auf ATI und nVidia verschieden?

Zitat:
Glücklicherweise war es bei mir nur ein pow(x, 2.0) welches ich dann einfach durch x*x ersetzt habe.

In so einem einfachen Fall (hoch 2 oder 3) sollte man das sowieso tun. Die pow-Funktion ist darauf ausgelegt das du sie für Exponenten wie "1.465366" benutzt. Das da ein x*x schneller ist sollte klar sein ;)

Zitat:
Gibt es noch mehr solche Stolpersteine? Also gibt es noch andere bekannte "bugs" auf ATI/nVidia Karten in der Art?

Gleich Haufenweise. ;) Wann immer möglich sollte man immer parallel auf ATI und NVIDIA testen, damit man solche Fehler wenigstens schnell merkt. Richtig spannend wird es übrigens mit ATI-Treibern unter MacOS, die haben zum Teil haarsträubende Bugs ;)

Seite 1 von 1 Alle Zeiten sind UTC + 1 Stunde
Powered by phpBB® Forum Software © phpBB Group
https://www.phpbb.com/