Files |  Tutorials |  Articles |  Links |  Home |  Team |  Forum |  Wiki |  Impressum

Aktuelle Zeit: So Jul 20, 2025 05:17

Foren-Übersicht » Programmierung » Shader
Unbeantwortete Themen | Aktive Themen



Ein neues Thema erstellen Auf das Thema antworten  [ 2 Beiträge ] 
Autor Nachricht
 Betreff des Beitrags: Shader und Performance
BeitragVerfasst: Fr Jan 04, 2008 12:27 
Offline
DGL Member

Registriert: Fr Jan 04, 2008 10:39
Beiträge: 3
hi,

Vorrausgesetzt meine Shader funktionieren mal, haben sie für mich einen ziemlichen Black-Box Charakter, da man den compilierten Shader-Code nie zu Gescicht bekommt, und GPU-Zeiten auch so schlecht messen kann. Vielleicht kann ja jemand Licht in dieses Dunkel bringen (oder mir nen Link geben) :D

:arrow: Der GLSL-Compiler optimiert den SourceCode, das ist klar, aber wie weit geht das?
macht es z.B einen Unterschied, ob ich schreibe
Code:
  1. tmp = texture2D(...);
  2. gl_FragmentColor = tmp;

oder einfach
Code:
  1. gl_FragmentColor = texture2D(...);

Da ich meine Shader nicht direkt schreibe sondern je nach Material generieren lasse, ist der erste Ansatz für mich oft praktischer. Am tollsten wäre natürlich eine Möglichkeit, den optimierten Source wieder auszulesen, dann könnte man einfach mal nachschauen.

:arrow: viele oder wenige shader?
In meiner Szene gibt es viele unterschiedliche Objekte mit sehr unterschiedlichen Materialen. Mit/Ohne Normal-Maps, mit/ohne reflektion, etc... was ist jetzt sinnvoller, ein allgemeinen gehaltener Shader den ich per Uniform-Variable anpassen kann, oder lieber ein Dutzend spezialisierte Shader?
* braucht ein shader viel Platz im GraKa-Speicher?
* wie lange dauert ein glUseProgram(...) Aufruf?
* wie aufwenig ist glUniform*(...) ?
* wie groß ist der Performance-Unterschied zwischen einer Operation mit einer Konstanten und mit einer Uniform-Variablen?

:arrow: lohnt sich ein Shader überhaupt, wenn man den gleichen Effekt auch mit klassischen Texture-Stages erzielen kann, oder ist GLSL dann nur Verschwendung?

Puh, das waren eine Menge Fragezeichen :lol: . Danke schonmal für die Antworten


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Fr Jan 04, 2008 14:24 
Offline
DGL Member
Benutzeravatar

Registriert: Do Sep 02, 2004 19:42
Beiträge: 4158
Programmiersprache: FreePascal, C++
Zu Punkt eins:
Ich glaube nicht, dass man irgendwie an den optimierten Code rankommt, außer als Assembly oder Binärcode. Ich bezweifle, dass der Shader im Reintextformat optimiert wird.
Zu deinem Codebeispiel: Ich vermute, dass das zu den dingen gehört, die optimiert werden, wenn zwischen der Zuweisung auf tmp und der Zuweisung auf gl_FragColor kein Zugriff mehr auf tmp erfolgt.

Zu Punkt zwei:
Da viele, vorallem ältere, Grafikkarten ein Early-Out nicht unterstützen lohnt sich ein universalshader meist nicht. Das Problem ist, dass die Werte in den anderen If-Abzweigungen trotzdem berechnet, danach aber verworfen werden oder der Shader im Extremfall im Softwaremodus, also sehr langsam läuft.

Zu Punkt drei:
Ich kann mir gut vorstellen, dass es sich lohnt, eher die Textur-Stages zu benutzen, dann können auch besitzer von älteren Grafikkarten von den Effekten profitieren. Man kann natürlich auch Primär die Shader benutzen und nur wenn die karte keine Shader kann auf die Texturstages zurückgreifen.

Gruß Lord Horazont

_________________
If you find any deadlinks, please send me a notification – Wenn du tote Links findest, sende mir eine Benachrichtigung.
current projects: ManiacLab; aioxmpp
zombofant networkmy photostream
„Writing code is like writing poetry“ - source unknown


„Give a man a fish, and you feed him for a day. Teach a man to fish and you feed him for a lifetime. “ ~ A Chinese Proverb


Nach oben
 Profil  
Mit Zitat antworten  
Beiträge der letzten Zeit anzeigen:  Sortiere nach  
Ein neues Thema erstellen Auf das Thema antworten  [ 2 Beiträge ] 
Foren-Übersicht » Programmierung » Shader


Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 6 Gäste


Du darfst keine neuen Themen in diesem Forum erstellen.
Du darfst keine Antworten zu Themen in diesem Forum erstellen.
Du darfst deine Beiträge in diesem Forum nicht ändern.
Du darfst deine Beiträge in diesem Forum nicht löschen.
Du darfst keine Dateianhänge in diesem Forum erstellen.

Suche nach:
Gehe zu:  
  Powered by phpBB® Forum Software © phpBB Group
Deutsche Übersetzung durch phpBB.de
[ Time : 0.007s | 16 Queries | GZIP : On ]