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..
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.
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
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.