- if (Light.Position != vec4(0, 0 ,0, 0)) {
DGL https://delphigl.com/forum/ |
|
Performance probleme mit glSlang https://delphigl.com/forum/viewtopic.php?f=20&t=3519 |
Seite 1 von 1 |
Autor: | Aya [ Do Nov 25, 2004 00:25 ] |
Betreff des Beitrags: | Performance probleme mit glSlang |
Hi, hab mal ein paar fragen zur Performance von glSlang.. ich hab nen Shader damit geschrieben und hab schon nurnoch ca. 20 fps... dabei ist da eigentlich nix wildes drin. Aber was genau macht glSlang langsam??? Ich hab rausgefunden das bei meinem Shader z.B. eine if-Abfrage (welche in einer Funktion ist die 5x im Shader aufgerufen wird) knapp 10-12 FPS ausmacht.. also wenn ich sie weglasse hab ich gleich 12 FPS mehr... ausschauen tut sie so (btw.. im PixelShader): Code:
Light.Position ist vom Typ auch vec4... wenn ich diese eine Zeile auskommentiere, also so das der Code in der If-Abfrage IMMER ausgeführt wird hab ich 12fps mehr... (allerdings kann es wenn die Position 0 0 0 ist zu nem fehler kommen, deswegen die abfrage) andere dinge die das ganze beträchtlich langsam machen hab ich nochnicht gefunden... aber gibt es evtl irgendwelche grundregeln...?? Au'revoir, Aya~ |
Autor: | Sascha Willems [ Do Nov 25, 2004 00:40 ] |
Betreff des Beitrags: | |
Karten der Shader2-Generationen unterstützen kein Early-Out, von daher wird immer der komplette Shader abgearbeitet, und einer der beiden Zweige der IF-Abfrage am Ende verworfen. Deshalb zerrt If im FS stark an der Performance und sollte vermieden werden (evtl. zwei Shader nutzen). Generell kann man nicht viel sagen, aber je länger der Shader, desto langsamer. Du musst aber auch sagen welche Graka du verwendest, denn besonders die Geforce FX-Karten sind in Sachen Shaderperformance nicht sehr toll. |
Autor: | Aya [ Do Nov 25, 2004 00:46 ] |
Betreff des Beitrags: | |
Hi, danke schonmal ![]() Benutze ne GeForce FX 5900XT.. ich weiß, is nich die tollste... (sind Schulrechner hier ^^) aber wie meinst du das mit 2 Shader benutzen??? *guckt unsicher* Au'revoir, Aya~ |
Autor: | Sascha Willems [ Do Nov 25, 2004 00:51 ] |
Betreff des Beitrags: | |
Du prüfst doch (wegen dem Code oben) ob dein Licht bei 0/0/0 ist oder nicht. Das ist aber ja eine Prüfung die du auch in deinem Programm machen kannst, also bindest du je nach Lichtposition einen Shader in dem steht was jetzt in deinem If-Zweig steht, bzw. einen zweiten Shader in dem der Inhalt des Else-Zweiges steht. |
Autor: | Aya [ Do Nov 25, 2004 00:56 ] |
Betreff des Beitrags: | |
Hi, oh.. ok, das is ne idee! ![]() Danke! Au'revoir, Aya~ |
Autor: | Linuxhippy [ Do Nov 25, 2004 16:45 ] |
Betreff des Beitrags: | Shader2 |
Yep, deine GF5900 is ne Shader2 karte |
Seite 1 von 1 | Alle Zeiten sind UTC + 1 Stunde |
Powered by phpBB® Forum Software © phpBB Group https://www.phpbb.com/ |