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

Aktuelle Zeit: Mo Sep 08, 2025 00:45

Foren-Übersicht » Programmierung » Einsteiger-Fragen
Unbeantwortete Themen | Aktive Themen



Ein neues Thema erstellen Auf das Thema antworten  [ 12 Beiträge ] 
Autor Nachricht
 Betreff des Beitrags:
BeitragVerfasst: So Mai 04, 2003 20:03 
Offline
DGL Member
Benutzeravatar

Registriert: So Apr 20, 2003 16:20
Beiträge: 17
Wohnort: Hünfelden
Hi ihr!

Hab' an meinem Terrain ein bisschen weitergearbeitet, so sieht's jetzt aus:

Bild
 

=Problem=

Die Framerate sinkt runter auf 10-20 ( :blink: ) fps, seit ich neue Skybox-Texturen und ein übergeblendetes DetailTex-Terrain eingefügt habe (in diesem screenshot noch keine detail-texturen)... vorher lag die Framerate bei ca. 190-200 fps.

• Sind 5 Himmelstexturen von 512x512 schon zu viel?? Oder kann man die komprimieren irgendwie?
• Multitexturing hab' ich noch nie gemacht. Ist das was anderes / schneller als Blending, oder gar das gleiche?

Alles wird aus Display-Listen gerendert, getrennt sind:
• Skybox
• Terrain
• Detail-Terrain
• Wasser

Habt ihr irgendwelche Tipps (außer Detaillevel, LOD, verschwommene Texturen)?
- Dass eine Möglichkeit LOD ist, weiß ich, aber das ist im Moment wahrscheinlich nicht das Problem, da das Terrain alleine flüssig läuft und Backface-Culling aktiv ist. Das Terrain ist auch nicht so arg groß.
Hab ich vielleicht irgendwas mit dem Texturspeicher falsch gemacht?

Mfg,
-elch-

_________________
<span style='font-family:Arial'><span style='color:blue'><span style='font-size:8pt;line-height:100%'>There are only 10 types of people in this world:<br>those who understand binary and those who don't.</span></span></span>


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: So Mai 04, 2003 20:36 
Offline
DGL Member
Benutzeravatar

Registriert: Di Dez 03, 2002 22:12
Beiträge: 2105
Wohnort: Vancouver, Canada
Programmiersprache: C++, Python
Hi,

also so wie ich das verstehe zeichnest du dein Terrain 2x übereinander, einmal mit blending, einmal ohne.. ja??

Alleine das 2-fache Zeichnen würde bedeuten das deine FPS um die hälfte sinkt, also wenn du früher 200 hattest, sind wir jetzt bei 100 FPS.. *g*

Nun kommt blending dazu, das ganze verlangsamt den prozess nochmals (nehme an das ist ein großes Terrain?), wegen Füllrate etc bla bla... sagen wir, wir sind bei 30 FPS... jetzt noch eine größere Textur für die SkyBox, nochmal 10 FPS... 20 FPS.. ta da *g*

das beste wäre wohl wenn du das ganze per MultiTexturing Extension machst, sollte wesentlich schneller werden.

Au'revoir,
Aya~

PS: Entweder liegt das hier am IE wo ich bin, oder die Bilder die du hochlädst funktionieren NIE... :unsure:


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: So Mai 04, 2003 21:02 
Offline
DGL Member
Benutzeravatar

Registriert: So Apr 20, 2003 16:20
Beiträge: 17
Wohnort: Hünfelden
hi aya,

du hast recht: das 2. terrain ist 'ne ziemliche bremse, da muss wohl mal ein multitex-tut her.

aber wenn ich garnix rendere, bekomme ich ca. 400 fps.
mit skybox alleine sind's nur noch 40! :blink: ?? seltsam.
aber ich will keine 128² texturen haben. *snif* :(
nuja, werd' nochmal alles optimieren.

[EDIT]
wegen der bild-anzeige: seltsam, bei mir geht alles? versuch' doch einfach mal, mit rechtsklick das bild anzuzeigen, oder speicher die url. kannst du denn andere bilder sehen?
<a href='http://www.wasteaway.de/terrain_water.jpg' target='_blank'>http://www.wasteaway.de/terrain_water.jpg</a>


-ölch-

_________________
<span style='font-family:Arial'><span style='color:blue'><span style='font-size:8pt;line-height:100%'>There are only 10 types of people in this world:<br>those who understand binary and those who don't.</span></span></span>


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Mo Mai 05, 2003 08:43 
Offline
DGL Member
Benutzeravatar

Registriert: Fr Dez 13, 2002 12:18
Beiträge: 1063
Manche Grafikkarten haben das Problem, dass sie große Texturen nicht richtig oder nur langsam darstellen können (weil z.B. bereits eine Scanline einen möglichen internen Prozessorcache sprengt).
Versuch mal die Flächen deiner Sykbox zu vierteln/sechzehnteln :D (teile also die Kanten durch 2 oder 4) und weise den einzelnen Flächen dementsprechend kleinere Texturen zu - evtl. gibt das auch einen Geschwindigkeitsschub - der Rechenoverhead ist vernachlässigbar.
Schau auch mal, was glGetIntegerv(GL_MAX_TEXTURE_SIZE, ..) zurückliefert, wenn du da bereits an der oberen Grenze herumkrautest, wirds auch schon kritisch.
Netter Screenshot übrigens.

_________________
Viel Spaß beim Programmieren,
Mars
http://www.basegraph.com/


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Mo Mai 05, 2003 18:47 
Offline
DGL Member
Benutzeravatar

Registriert: Sa Nov 02, 2002 18:06
Beiträge: 299
Wohnort: Dresden
Is Multitexturing schneller? Ja, und wie. Ist ja hardwarebeschleunigt.
Wegen den Skyboxes- Der Tip von Mars war gut. Außerdem würde ich noch Texturcompression verwenden. Könnte auch an deiner GraKa liegen. Manche unterstützen nur 256*256 Texturen.

_________________
"Ich würde ja gern die Welt verändern, aber Gott gibt mir den Quelltext nicht"


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Mo Mai 05, 2003 18:56 
Offline
DGL Member
Benutzeravatar

Registriert: Mo Sep 23, 2002 19:27
Beiträge: 5812
Programmiersprache: C++
Zitat:
Is Multitexturing schneller? Ja, und wie. Ist ja hardwarebeschleunigt.

Ja, sehr viel schneller, und zwar proportional zur Anzahl der reduzierten Passes.Wenn deine Graka also 4 Texturen pro Pass bekleben kann, dann ist es sehr viel schneller (allerdings wohl kaum um den Faktor 4) die 4 Texturen in einem Pass via Multitexturing zu zeichnen, als die Geometrie in 4 Passes mittels Blending zu zeichnen, denn so überträgst du die Geometrie nur einmal statt vier mal.
Das Endergebnis ist zwar fast gleich (im Blending stehen nicht alle Modis zur Verfügung, die man mittels Multitexturing realisierein kann) allerdings sollte man Multitexturing wenn möglich immer nutzen.Multipass hingegen sollte seit der Einführung der TNT (TwinTexelEngine -> 2 TMUs) nicht mehr verwendet werden.

Zitat:
Wegen den Skyboxes- Der Tip von Mars war gut. Außerdem würde ich noch Texturcompression verwenden. Könnte auch an deiner GraKa liegen. Manche unterstützen nur 256*256 Texturen.

Das halte ich auch für ne gute Idee.Texturenkompression würde ich auf jeden Fall nutzen, da dies je nach Szenario nen großen Geschwindigkeitsvorteil bringen kann, und selbst von älteren Grafikkarten unterstützt wird.

Die Tatsache, das deine Szene mit Skybox so langsam gezeichnet wird, liegt evtl. an der begrenzten Füllrate deiner Grafikkarte.Denn das komplette Füllen des Bildschirms ist schon recht viel Arbeit für die Grafikkarte.Allerdings kannst du dir, da deine SkyBox den Schirm ja immer komplett füllt, das Löschen des Farbpuffers sparen.Das bringt auch wieder einige Frames, da das Löschen eines Puffers immernoch eine recht zeitaufwendige Aktion ist.

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


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Mo Mai 05, 2003 20:29 
Offline
DGL Member
Benutzeravatar

Registriert: So Apr 20, 2003 16:20
Beiträge: 17
Wohnort: Hünfelden
hi, das puffer-ausleeren zu überspringen ist 'ne gute idee! :) :huh:
und wegen der füllrate, texturengröße, etc.: hab ne gf4mx,

glGetIntegerv(GL_MAX_TEXTURE_SIZE, 0);
wert := result;

ergibt: wert = 4456072 , sqrt ~= 2110,94
2048²er-texturen wären also möglich, oder? (kanns ja mal testen.)

-> multitexturing und texturenkompression sind also die 2 nächsten
dinge, die ich in mein hirn reinklopfen muss... kaum noch platz
da drinnen. ;)

-elch-

_________________
<span style='font-family:Arial'><span style='color:blue'><span style='font-size:8pt;line-height:100%'>There are only 10 types of people in this world:<br>those who understand binary and those who don't.</span></span></span>


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Di Mai 06, 2003 12:03 
Offline
DGL Member
Benutzeravatar

Registriert: So Apr 20, 2003 16:20
Beiträge: 17
Wohnort: Hünfelden
hmm... also wenn ich aus der zeile
glClear(GL_COLOR_BUFFER_BIT OR GL_DEPTH_BUFFER_BIT);
den color buffer einfach weglasse, bringt das keinen besonderen geschwindigkeitsschub. 5 fps vielleicht. nuja, jedenfalls etwas... :)

_________________
<span style='font-family:Arial'><span style='color:blue'><span style='font-size:8pt;line-height:100%'>There are only 10 types of people in this world:<br>those who understand binary and those who don't.</span></span></span>


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Di Mai 06, 2003 12:12 
Offline
DGL Member
Benutzeravatar

Registriert: Mo Sep 23, 2002 19:27
Beiträge: 5812
Programmiersprache: C++
-elch- hat geschrieben:
hmm... also wenn ich aus der zeile
  glClear(GL_COLOR_BUFFER_BIT OR GL_DEPTH_BUFFER_BIT);
den color buffer einfach weglasse, bringt das keinen besonderen geschwindigkeitsschub. 5 fps vielleicht. nuja, jedenfalls etwas... :)

Natürlich bringt das nicht den riesigen Performanceschub, allerdings sind 5fps ja schonmal was, und wenn man die noch so leicht rausholen kann, dann ist das doch ne gute Optimierung.

Texturenkompression ist auch sehr einfach zu implementieren, da du beim Erstellen der MipMaps mittels gluBuild2DMipMaps statt des herkömmlichen GL_RGBA bzw. GL_RGB-Komponentenparameter bloß GL_COMPRESSED_RGBA_ARB bzw. GL_COMPRESSED_RGB_ARB übergeben mußt.Schon werden deine Texturen (falls es die Grafikkarte unterstützt) komprimiert.Wenn du beim Komprimierungsformat noch etwas spezifischer sein willst, dann empfehl ich dir die S3TC-Variablen zu nutzen, da man bei diesen auch bestimmten kann, wie stark die Texturen komprimiert werden (siehe u.a. auch Tut auf meiner Page).Die Texturenkompression hat bei neinem NapalmBomber3D je nach Szenario bis zu 20% mehr Leistung gebracht.Es lohnt sich also, und der Qualitätsverlust durch die Kompression hält sich im Normalfall in Grenzen und ist je nach Textur kaum sichtbar.

Aber spätestens wenn du dein Terrain per Multitexturing zeichnest gibts den erwarteten riesigen Geschwindigkeitssprung.Wenn du zu dem Thema noch'n Tut suchst, dann schau mal auf meine Seite.Dort hab ich nämlich zu dem Thema ein Tutorial verfasst.

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


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Di Mai 06, 2003 12:22 
Offline
DGL Member
Benutzeravatar

Registriert: Fr Dez 13, 2002 12:18
Beiträge: 1063
Was ist denn das für ein komischer Aufruf von glGetIntegerv ?

<!--pas--></span><table border='0' align='center' width='95%' cellpadding='3' cellspacing='1'><tr><td>Delphi-Source </td></tr><tr><td id='CODE'><!--pas1--><pre>
<span class='reserved'>var</span> max: GLuint;
<span class='reserved'>begin</span>
glGetIntegerv(GL_MAX_TEXTURE_SIZE, Addr(max));
// <span class='reserved'>in</span> max steht die maximale Kantenlänge einer Textur drin
<span class='reserved'>end</span>;
</pre><!--pas2--></td></tr></table><span class='postcolor'><!--pas3-->

So funktionierts, in max müsste dann die exakte Kantenlänge drinstehen (bei einer GF4mx übrigens wirklich 2048, glaube ich). Eigentlich sollte der Delphicompiler deinen Code gar nicht schlucken...

_________________
Viel Spaß beim Programmieren,
Mars
http://www.basegraph.com/


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Di Mai 06, 2003 12:52 
Offline
DGL Member
Benutzeravatar

Registriert: So Apr 20, 2003 16:20
Beiträge: 17
Wohnort: Hünfelden
hab' ihm gut zugeredet... :unsure: irgendwann hat's dann funktioniert. :rolleyes:

zum thema "komisch"... irgendwie hab' ich das gefühl, dass mein kompletter quellcode
etwas seltsam ist, zusammengeflickt aus den verschiedensten tutorials halt.

:( :blink: hab ja gerade erst angefangen mit ogl sozusagen, und in delphi
fehlen mir auch einige theoretische grundlagen. aber das wird schon noch alles... :)

_________________
<span style='font-family:Arial'><span style='color:blue'><span style='font-size:8pt;line-height:100%'>There are only 10 types of people in this world:<br>those who understand binary and those who don't.</span></span></span>


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Di Mai 06, 2003 12:59 
Offline
DGL Member
Benutzeravatar

Registriert: Fr Dez 13, 2002 12:18
Beiträge: 1063
Mein Delphi ist auf dem Ohr ja leider taub :rolleyes: . Dabei hab ich doch erst vor zwei Monaten upgegradet! Undank ist der Welten Lohn.

_________________
Viel Spaß beim Programmieren,
Mars
http://www.basegraph.com/


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


Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 16 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.009s | 16 Queries | GZIP : On ]