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

Aktuelle Zeit: Mi Jul 16, 2025 11:52

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



Ein neues Thema erstellen Auf das Thema antworten  [ 38 Beiträge ]  Gehe zu Seite Vorherige  1, 2, 3
Autor Nachricht
 Betreff des Beitrags: Re: Performance von GL_LINES
BeitragVerfasst: Fr Feb 04, 2011 14:26 
Offline
DGL Member
Benutzeravatar

Registriert: Mo Sep 23, 2002 19:27
Beiträge: 5812
Programmiersprache: C++
Laut Shaderanalyzer ist dein Shader auf ATI ALU-limitiert (Arithmetic Logic Unit), und deine GTX465 hat vermutlich nicht nur viel mehr solcher ALUs, sondern diese sind dort auch höher getaktet. Dein Shader ist für eine ATI HD5670 also einfach zu umfangreich, laut des Shaderanalyzers hat er am Ende über 600 Assemblerbefehle (auf dieser Karte, auf anderen siehts dann halt anders aus), was letztendlich 10 mal so lang ist wie mein umfangreichster Shader in Projekt "W". Alternativ kannst ja mal statt immer 4 nur 2 Lichtquellen berechnen und dann halt mit Multipass zweimal probieren, evtl. bringt dass was weil du dann die Limitation in einen andere, nicht so limitierende Richtung verschiebst.

Aber wie gesagt sind solche Übershader eigentlich nix für normale Consumerhardware. Ne GTX465 ist ja doch schon High-End.

Und Zyklen haben nicht unbedingt was mit deinen Ifs zu tun. Je nach GPU brauchen bestimmte Befehle halt mehr oder weniger Zyklen, da muss man besonders bei so nem Riesenshader drauf achten und zur Not für andere Karten andere Shader basteln, sieht man oft in kommerziellen Spielen wie S.T.A.L.K.E.R. die dann für ATI andere Shader haben als für NV, und dann nochmal teilweise andere Shader für verschiedene Karten des selben Herstellers.

_________________
www.SaschaWillems.de | GitHub | Twitter | GPU Datenbanken (Vulkan, GL, GLES)


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: Performance von GL_LINES
BeitragVerfasst: Fr Feb 04, 2011 14:32 
Offline
DGL Member
Benutzeravatar

Registriert: Do Dez 29, 2005 12:28
Beiträge: 2249
Wohnort: Düsseldorf
Programmiersprache: C++, C#, Java
Also da beide Grafikkarten OpenGL 4.0 fähig sind bezweifele ich, dass es an den paar if-Abfragen liegt. Aus dem Bauch heraus würde ich sagen das Problem sind die Texturzugriffe. (Edit: Hätte jetzt nicht Sascha gerade was anderes gepostet...)

Vorschläge:
1. Auflösung der ShadowMaps reduzieren. Benutzt du eigentlich schon PerspectiveShadowMaps (PSM)? (=> Speicherbandbreite)
2. Tiefenvergleich mit ShadowMaps nicht selbst durchführen, sondern das die Grafikkarte nativ machen lassen. Hab ich dir irgendwo schon mal geschrieben wie das geht. Wenn ich das richtig im Kopf habe werden Z-Buffer komprimiert gespeichert. Da Tiefenvergleiche eine häufige Operation sind ist es möglich, dass es da eine Art Baumstruktur gibt um die Vergleiche zu beschleunigen. Dich interessiert ja nicht der eigentliche Tiefenwert, sondern nur Schatten ja/nein.

_________________
Yeah! :mrgreen:


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: Performance von GL_LINES
BeitragVerfasst: Fr Feb 04, 2011 14:36 
Offline
DGL Member
Benutzeravatar

Registriert: Mo Sep 23, 2002 19:27
Beiträge: 5812
Programmiersprache: C++
Coolcat hat geschrieben:
Also da beide Grafikkarten OpenGL 4.0 fähig sind bezweifele ich, dass es an den paar if-Abfragen liegt. Aus dem Bauch heraus würde ich sagen das Problem sind die Texturzugriffe. (Edit: Hätte jetzt nicht Sascha gerade was anderes gepostet...)


Sinds im Shader definitiv nicht. Mein Erdshader ist durch die Texturzugriffe limitiert (logischerweise) und dass zeigt mir der GPU Shader Analyzer dann auch entsprechend an (auf manchen Karten limitiert hier aber auch ALU-Durchsatz), und bei seinem Shader ist die Limitierung bei allen Karten die im Shader Analyzer angeboten werden und auf denen der Shader läuft auf den ALUs.

Allerdings kanns natürlich sein dass ausserhalb des Shaders hier der Bus limitiert und es durchaus was brächte Texturenauflösung etc. zu verringern, das kann er ja durchaus mal probieren, geht ja flott.

Vielleicht hat aber auch ne Tiefentextur oder so ein Pixelformat dass nicht in Hardware läuft? Unwahrscheinlich, aber könnte doch evtl. sein.

_________________
www.SaschaWillems.de | GitHub | Twitter | GPU Datenbanken (Vulkan, GL, GLES)


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: Performance von GL_LINES
BeitragVerfasst: Fr Feb 04, 2011 15:22 
Offline
DGL Member

Registriert: Do Apr 22, 2010 17:17
Beiträge: 543
also ich hab jetzt hier mal rumprobiert.. das problem kann ggf. auch ausserhalb des Shaders liegen.. denn wenn ich alles auskommentiere und gl_FragColor = vec4(0.0) mache hab ich trozdem bei meiner Testszene nur 10fps. Und irgendwie werden Modelltexturen auf der ATI nicht dargestellt...


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: Performance von GL_LINES
BeitragVerfasst: Fr Feb 04, 2011 15:26 
Offline
DGL Member
Benutzeravatar

Registriert: Mo Sep 23, 2002 19:27
Beiträge: 5812
Programmiersprache: C++
Dann musst du das Problem halt gezielt eingrenzen. Was ergibt denn die Abfrage der OpenGL-Fehler? Kommt da was? Hast du evtl. innerhalb eines glBegin..glEnd-Blocks das Binden einer Textur? Das ist ja ungültig, und bei NVidia ging das zumindest früher so. Wie gesagt ist ATI sehr strikt was die Vorgaben angeht, da muss man auch entsprechend nah an diesen entwickeln. Aber dank der OpenGL-Fehlerausgabe solltest du schnell rausfinden wo das Problem liegt.

P.S. : Falls du nen "Beta"tester brauchst, ich werkle auch auf eine ATI (HD4850, 512 MByte).

_________________
www.SaschaWillems.de | GitHub | Twitter | GPU Datenbanken (Vulkan, GL, GLES)


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: Performance von GL_LINES
BeitragVerfasst: Fr Feb 04, 2011 15:39 
Offline
DGL Member

Registriert: Do Apr 22, 2010 17:17
Beiträge: 543
Welche Fehlerausgabe meinst du? Hab nur die meldungen von den Shadercompilern.. oder was anders hatte ich noch nicht gefunden bzw. eingbaut.. Danke für dein Testerangebot, doch die Steuerung für Simulation ist etwas aufwändig und nicht mal schnell erklärt.. vielleicht mach ich mal ein integriertes Demo für Tests.


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: Performance von GL_LINES
BeitragVerfasst: Fr Feb 04, 2011 15:43 
Offline
DGL Member
Benutzeravatar

Registriert: Mo Sep 23, 2002 19:27
Beiträge: 5812
Programmiersprache: C++
Code:
gluErrorString(glGetError)

Die wichtigste OpenGL-Funktion überhaupt. Sowas gehört aber auch wieder in den Bereich Grundlagen, die man sich aneignen sollte bevor man mit Shadern und Cp. anfängt. Die Funktion liefert dir den letzten (!) aufgetretenen OpenGL-Fehler.

_________________
www.SaschaWillems.de | GitHub | Twitter | GPU Datenbanken (Vulkan, GL, GLES)


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: Performance von GL_LINES
BeitragVerfasst: Di Feb 08, 2011 09:27 
Offline
DGL Member

Registriert: Do Apr 22, 2010 17:17
Beiträge: 543
Also ich hab jetzt einen 2 Renderpfad mit nur 2 Lichtern pro Shaderdurchgang erstellt. Auf meiner GTX 456 ändert sich nicht viel, aber auf den Notebooks bringts ca. 20% mehr Leistung..


Nach oben
 Profil  
Mit Zitat antworten  
Beiträge der letzten Zeit anzeigen:  Sortiere nach  
Ein neues Thema erstellen Auf das Thema antworten  [ 38 Beiträge ]  Gehe zu Seite Vorherige  1, 2, 3
Foren-Übersicht » Programmierung » OpenGL


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.012s | 15 Queries | GZIP : On ]