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

Aktuelle Zeit: Fr Apr 19, 2024 01:28

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



Ein neues Thema erstellen Auf das Thema antworten  [ 4 Beiträge ] 
Autor Nachricht
BeitragVerfasst: Fr Nov 07, 2014 08:32 
Offline
DGL Member

Registriert: Do Apr 22, 2010 17:17
Beiträge: 543
Moin,

ich bins mal wieder. Ich baue gerade meine dritte DFS implementation und war jetzt am überlegen anstelle einer Tiefentexture (32bit float) und der späteren rekonstruktion der WorldSpace position über die InvViewMat, vielleicht mal direkt die Positionen in eine 128bit texture zu schreiben. Möglich ist beides, doch im ersten fall muss ich natürlich bei jedem sample eines lichts (wovon ich hunderte habe) die Rekonstruktion machen, wobei er im zweiten fall lediglich die Positions texture samplen muss...

Hier mal so ungefähr was da passiert:
-- Depth texture rekonstruktion --
1. Sample des Tiefenwertes (32bit Texture R-float)
2. posw = vec4(texX, texY, Depth, 1.0f) * InvertViewProj Matrix
3. posw / pos.w

-- Position texture --
1. Sample der Position direkt aus der Texture (128bit RGBA float) (alpha wird für andere sachen bentuzt)

So nun was denkt ihr was hier performanter ist? Logisch der 2. Ansatz verbraucht ne menge mehr speicher, jedoch weiß ich nicht ob hier die Berechnungen gegenüber eines 128bit samples schneller sind..

Grüße,
Thomas


Nach oben
 Profil  
Mit Zitat antworten  
BeitragVerfasst: Di Nov 11, 2014 13:55 
Offline
DGL Member

Registriert: Do Apr 22, 2010 17:17
Beiträge: 543
hat denn niemand eine idee?


Nach oben
 Profil  
Mit Zitat antworten  
BeitragVerfasst: Di Nov 11, 2014 21:39 
Offline
DGL Member

Registriert: Do Dez 29, 2011 19:40
Beiträge: 421
Wohnort: Deutschland, Bayern
Programmiersprache: C++, C, D, C# VB.Net
Genau diese Frage habe ich mir vor einer Weile auch mal gestellt, eineindeutige Antwort habe ich leider nicht.
Es kommt sicher auf die Rahmenbedingungen an, wie bei den meisten Abwäge-Fragen.
Nach allem was ich weiß ist Bandbreite vermutlich eher das Kostbarere und wird auch in modernen Engines so verwendet.
Allerdings kann man das trotzdem echt so schwer sagen ohne es in deinem Fall auf mehreren Systemen auszuprobieren. Ich würde es nur so schätzen.

Allerdings würde ich mir ein wenig Sorgen um die Genauigkeit machen. Durch die vielen Berechnungen und durch die eher magereren 24 Bit im Z-Buffer wird möglicherweise zu viel gerundet.


Nach oben
 Profil  
Mit Zitat antworten  
BeitragVerfasst: Mi Nov 12, 2014 09:57 
Offline
DGL Member
Benutzeravatar

Registriert: Mo Nov 08, 2010 18:41
Beiträge: 769
Programmiersprache: Gestern
Grosse G-Buffer bringen schon mehr Geschwindigkeit, allerdings nicht so wie du dir das erhoffst. Der Read/Write wird relativ Konstant bleiben (wenn du intelligent arbeitest). Sprich, du wirst dadurch nicht mehr Lichtquellen hinbekommen, sondern zum Beispiel mehr Texturen (wenn du UV speicherst). Wenn du also mehr Lichtquellen haben willst musst du die Anzahl der Durchlaeufe verringern. Eine gute Methode dafuer ist zum Beispiel ein doppelter Low-Res Z-Buffer mit dem du das Licht in kleinere Tiles aufsplitten und clippen kannst. Allerdings ist dabei die CPU deutlich schneller als die GPU :)

_________________
Meine Homepage


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


Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 41 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:  
cron
  Powered by phpBB® Forum Software © phpBB Group
Deutsche Übersetzung durch phpBB.de
[ Time : 0.117s | 19 Queries | GZIP : On ]