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

Aktuelle Zeit: Mo Jul 14, 2025 17:11

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



Ein neues Thema erstellen Auf das Thema antworten  [ 46 Beiträge ]  Gehe zu Seite Vorherige  1, 2, 3, 4  Nächste
Autor Nachricht
 Betreff des Beitrags:
BeitragVerfasst: Do Mai 08, 2003 14:40 
Offline
DGL Member
Benutzeravatar

Registriert: Mo Sep 23, 2002 19:27
Beiträge: 5812
Programmiersprache: C++
@Vergleich :
Mal sehen.Wenn ich die Lust verspüre sowas zu machen, dann werd ich Ergebnisse posten, allerdings hab ich im Moment vor noch ein paar andere ATI-spezifische Demos nach Delphi zu portieren bzw. auf deren Basis was eigenes zu basteln.Heute werd ich mir vielleicht noch die ATI_envmap_bumpmap-Extension vornehmen, die recht interessant aussieht und EMBM anscheinend sehr einfach macht.
Mehr Infos zu dieser Extension : <a href='http://www.ati.com/developer/sdk/RadeonSDK/Html/Info/ATI_envmap_bumpmap.txt' target='_blank'>http://www.ati.com/developer/sdk/RadeonSDK...map_bumpmap.txt</a>
Und außerdem gibts noch einige Games, die ich gern wieder auf meiner neuen Karte in nie dagewesener Qualität zocken möchte, aber irgendwie komm ich von Delphi und OpenGL momentan nicht los...

@MD2/MD3-Viewer :
Die erste Version ist fertig, und steht unter <a href='http://www.delphigl.de/files/TRUFORM_MD2_3_Viewer.zip' target='_blank'>TRUFORM_MD2_3_Viewer.zip</a> (~850KByte, inklusive 2 MD2-Modelle) zur Verfügung.Momentan noch ohne Quellcode, den ich aber heute noch veröffentlichen werde, nachdem ich bei ATI nachgefragt habe ob sie bereit wären das Teil inklusive Delphisource in ihrer Entwicklersektion bereitzustellen...bin mal gespannt ob die wissen was Delphi überhaupt ist.

Hinweise : Die Texturen für MD2-Modelle müssen vom PCX ins TGA oder JPG-Format gewandelt werden, bevor diese genutzt werden können.MD3-Modelle sind leider oft in .pk3-Files gepackt, und müssen zum Betrachten mit dem Viewer erst entpackt werden.Dazu gibts aber zum Glück den praktischen <a href='http://gfe.ravencommunity.net/' target='_blank'>GameFileExplorer</a>.
Außerdem wirds einige Modelle geben, die mit TRUFORM Probleme machen.Dies liegt dann an fehlenden/falschen Normalen, und dafür kann nur der Modellbauer selbst was...

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


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Do Mai 08, 2003 17:34 
Offline
DGL Member
Benutzeravatar

Registriert: Sa Dez 28, 2002 11:13
Beiträge: 2244
Gibt es eigentlich auch so eine Art Software Emulation für TruForm damit man sich die Technik auch ohne Radeon ansehen kann?
Jedenfalls ist Truform ein starkes Argument für Shadow Maps. Mit Stencil Schatten dürfte es da unter Umständen Probleme geben.
Ich schließe mich Mars's Vorschlag an. Vielleicht kannst du ja die Anzahl der Dreiecke pro Sekunde in verschiedenen Detailstufen mal austesten. Von den NVidia Evaluators her weiß ich noch, das die sich aufgrund irgenwelcher Berchnungen nur ab eine bestimmten Detailstufe gelohnt haben. Wäre interessant zu wissen, ob es da bei der Radeon ähnliche Ergebnisse gibt.


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Do Mai 08, 2003 18:27 
Offline
DGL Member
Benutzeravatar

Registriert: Fr Dez 13, 2002 12:18
Beiträge: 1063
Unter <a href='http://www.ati.com/technology/hardware/pdf/truform.pdf' target='_blank'>http://www.ati.com/technology/hardware/pdf/truform.pdf</a> ist ATI's Algorithmus für TruForm zu finden.

Der Algorithmus ist recht gut erklärt: Definiert sein müssen Vertices und Normale der Schnittpunkte eines Dreieckes. Dann werden zu jeder Kante des Dreieckes zwei zusätzliche Schnittpunkte generiert (einfach dritteln), die dann auf die durch die Normale des näher liegenden Schnittpunktes definierte Ebene projiziert werden (Ebenfalls in Richtung der Normale). Nun hat man neun Schnittpunkte, ein Zehnter in der Mitte des Dreiecks wird einfach durch das arithmetische Mittel dieser neun gebildet.

Also softwaremäßig ist dies relativ leicht zu realisieren - nur kann das eigentlich eh schon jeder 3D-Editor - dort heißt es dann halt Mesh Smooth oder so ähnlich (ok, Mcad kanns (noch) nicht - da habe ich mich eher auf einen Algorithmus konzentriert, der aus einem beliebigen Mesh Schnittpunkte entfernen kann, ohne dass es zu sehr auffällt).

Zum Testen ist die Umsetzung Algoritmus aber nicht notwendig - dazu langt es, einmal eine Kugel mit (z.B. 90000) Dreiecken ganz normal zu rendern - und dann den Vergleich mit einer Kugel mit 10000 Dreiecken und aktiviertem TruForm (eine Stufe, jede Stufe multipliziert die Anzahl der Dreiecke mit neun) anzustellen.

@SoS: das soll jetzt aber nicht so klingen, als wollte ich dich drängen etwas zu programmieren, wozu du gar keine Lust hast (denn das möchte ich garantiert nicht!)

@LarsMiddendorf: was ist eigentlich der Vorteil der NVidia Evaluatoren gegenüber denen, die ohnehin schon von Haus aus bei OpenGL dabei sind.

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


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Do Mai 08, 2003 18:50 
Offline
DGL Member
Benutzeravatar

Registriert: Mo Sep 23, 2002 19:27
Beiträge: 5812
Programmiersprache: C++
Zitat:
@SoS: das soll jetzt aber nicht so klingen, als wollte ich dich drängen etwas zu programmieren, wozu du gar keine Lust hast (denn das möchte ich garantiert nicht!)


Pfff...du denkst wohl, das umgekehrte Psychologie bei mir zieht oder was? :P Naja...hab dann dochmal nen kleinen Test gemacht, und ne Kugel erstellt die von der Anzahl der Dreicke mit dem auf maximale Tesselationsstufe (7) tesselierten Objekt aus dem Demo vergleichbar ist.Bei der Kugel sind aber aufgrund des Algorithums den ich zum Erstellen genutzt habe die Ränder etwas runder.

Ergebnis bei ner Fenstergröße von 640x480 und aktiviertem 6xFSAA und 16xAF (meine aktuelle Standardeinstellung :D ) :
Via TRUFORM tessliertes Objekt : 1010 FPS
Selbstgezeichnete Kugel : 850 FPS

TRUFORM ist also etwas effektiver, wobei sich der Vorteil in einer komplexen 3D-Umgebung wie einem Computerspiel noch weiter in Richtung TRUFORM verschiebt, da ein Spiel ja im Gegensatz zu einem Demo in dem nur ne Kugel gezeichnet wird eher füllratenabhängiger ist, und die Hardwaretesselation dann kaum noch Leistung kostet.
Das ist auch übrigens das Argument von ATI : Wenn die Engine eher durch Füllrate oder die CPU gebremst wird, dann wird TRUFORM kaum Leistung kosten.

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


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Do Mai 08, 2003 19:45 
Offline
DGL Member
Benutzeravatar

Registriert: Sa Dez 28, 2002 11:13
Beiträge: 2244
Zu den NVidia Evaluatoren:
Die Extension ist ja leider wieder entfernt worden und die GFFX unterstützt sie gar nicht. Aber der Vorteil gegenüber den Standard Evaluatoren war das man Stufenlos tesselieren konnte, das ganze hardwarebeschleunigt war und alle 16 Vertex Attribute tesselierbar waren.
Man konnte für jede Kante eine Gleitkommazahl angeben und noch mal eine für den ganzen Patch, die die Unterteilungsanzahl angab. Es gab dreieckige und quatratische Bezier Patches. Gezeichnet wurde der Patch mit einem einzigen Befehl. Es gab nicht die Möglichkeit wie bei den Standard Evaluatoren in einer Schleife durch den Patch zu laufen und man konnte die Werte auch nicht zurücklesen. Ist ja auch klar weil das eben auf Harware berechnet wurde. Irgendwie hat sich das aber nicht durchgesetzt. Vielleicht weil man im Gegensatz zu Truform die Geometrie speziell als Bezier Patch vorliegen muß.


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Do Mai 08, 2003 20:52 
Offline
DGL Member
Benutzeravatar

Registriert: Fr Dez 13, 2002 12:18
Beiträge: 1063
Zitat:
Pfff...du denkst wohl, das umgekehrte Psychologie bei mir zieht oder was?

Na ja, bist selbst schuld - was musst du auch öffentlich zugeben, dass du Zugriff auf brandneue Hardware hast :D . Jedenfalls danke für die Info - das bedeutet, dass doch ein merklicher (aber nicht überwältigender) Geschwindigkeitszuwachs zu erwarten ist (dafür mit wenig Aufwand zu erreichen). Bedenkt man noch, dass man sich eventuell die Verwaltung mehrerer Modelle unterschiedlicher Komplexität sparen kann, ist dies ein echter Vorteil (vor allem auch auf langsameren Rechnern).

@Lars, Auslesen von Evaluatoren:
Also ich habe auch bei den Standardevaluatoren keine Möglichkeit gefunden, Werte wieder zurückzulesen (ist ja nicht ganz unwichtig, um z.B. eine Kamera an einem Spline entlangfliegen zu lassen, oder die Höhe eines 2D-Feldes auszuwerten). Schließlich habe ich halt in den sauren Apfel gebissen und die Auswertungsfunktionen selbst nachprogrammiert (sind eh im Red Book beschrieben) - würde mich aber interessieren, ob ich da ein Wochenende umsonst investiert habe (mal abgesehen vom Lerneffekt und der Befriedigung akademischen Interesses ;) ) - wenn du also zufällig wissen solltest, wie man OpenGL dazu bringen kann, die Koordinaten eines bestimmten Punktes auf einem 1D- oder 2D- Evaluator auszuspucken, wäre diese Info sehr interessant.

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


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Do Mai 08, 2003 21:59 
Offline
DGL Member
Benutzeravatar

Registriert: Sa Dez 28, 2002 11:13
Beiträge: 2244
@Mars: Nein, du hattest Recht. Ich weiß keinen Befehl, der dies macht, aber ich hatte DEINER Beschreibung zu deiner Landschafts Demo entnommen, daß man die Koordinaten zurücklesen könnte. Dabei habe ich mich selber auch noch gewundert, daß ich von dieser Möglichkeit nicht gewußt habe. :) Allerdings habe ich mich dann nicht weiter mit dem Thema beschäftigt.


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Fr Mai 09, 2003 09:25 
Offline
DGL Member
Benutzeravatar

Registriert: Fr Dez 13, 2002 12:18
Beiträge: 1063
Da habe ich mich wahrscheinlich etwas missverständlich ausgedrückt. Als ich sagte, dass es relativ einfach ist, die Position auf einem 2D-Bezierpatch zu bestimmen, meinte ich eigentlich relativ schnell. Es ist nämlich pro Splineabschnitt/Patch nur die Berechnung der Lösung des jeweiligen Polynoms der entsprechenden Schnittpunktkomponenten notwendig - was natürlich schneller ist, erst mal (z.B.) einen Baum entlangzulaufen, die in Frage kommenden Drei-/ oder Vierecke herauszufinden und dann die Höhe innerhalb der Fläche an einer bestimmten Position zu berechnen.
Die Umsetzung der Lösung der Polynomfunktionen fand ich dann nicht ganz trivial (insbesondere auch die Generierung von fließenden Übergängen zwischen benachbarten Patches), obwohl im Nachhinein betrachtet wieder alles ganz logisch ausschaut.
Im Netz gibts auch keine brauchbaren Tutorials (zumindest fand ich keine) - die befassen sich zumeist nur mit der eher einfachen Aufgabe überhaupt einen Patch darzustellen, und nicht mehrere Abschnitte zusammenzuhängen (von der Auswertung ohnehin ganz zu schweigen), sodass hier das RedBook wirklich eine wertvolle Informationsquelle ist.

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


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Mo Jun 09, 2003 22:24 
Offline
DGL Member
Benutzeravatar

Registriert: Sa Okt 26, 2002 17:14
Beiträge: 188
Wohnort: Hannover/Lüneburg
Lossy eX hat geschrieben:
Ich bin derzeit daran, die Header von ATI nach Delphi zu übersetzen. Und diese in die OpenGL12.pas (von Mike Lischke) einzupflegen. Sollte noch so ein paar Tage dauern.

Lossy: Hast du mitlerweile die ATI Header übersetzt? Da ich mich gerade auch etwas mit spezielleren Techniken beschäftige, und eine ATI und keine nVIDIA Karte habe, bräuchte ich ein paar Extensions von ATI. Bevor ich mich sonst daran mache mir die selbst zu übersetzen, wollte ich mal eben fragen, ob du das vielleicht schon erledigt hast mitlerweile, und die auch rausrücken würdest?

_________________
Thunderman
Bei schwierigen Problemen entscheiden wir uns einfach für die richtige Lösung. Klar?


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Mo Jun 09, 2003 22:27 
Offline
DGL Member
Benutzeravatar

Registriert: Mo Sep 23, 2002 19:27
Beiträge: 5812
Programmiersprache: C++
Thunderman hat geschrieben:
Lossy: Hast du mitlerweile die ATI Header übersetzt? Da ich mich gerade auch etwas mit spezielleren Techniken beschäftige, und eine ATI und keine nVIDIA Karte habe, bräuchte ich ein paar Extensions von ATI. Bevor ich mich sonst daran mache mir die selbst zu übersetzen, wollte ich mal eben fragen, ob du das vielleicht schon erledigt hast mitlerweile, und die auch rausrücken würdest?

Das würde mich auch interessieren...evtl. könnte man ja mit vereinten Kräften an der Übersetzung der ATI-Header arbeiten, denn da hätte ich auch interesse dran.

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


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Di Jun 10, 2003 06:51 
Offline
DGL Member
Benutzeravatar

Registriert: Do Dez 05, 2002 10:35
Beiträge: 4234
Wohnort: Dortmund
WOW: Wusste ja nicht, dass da so reges interesse daran besteht. Ich hatte am Anfang zwar auch nur vor die ATI's zu übersetzen habe dann aber irgendwie gefallen daran gefunden. :)
Ich habe euch mal meine aktuelle Header hochgeladen. <a href='http://www.delphigl.com/upload/OpenGLATI.zip' target='_blank'>http://www.delphigl.com/upload/OpenGLATI.zip</a>
Es handelt sich dabei nur um eine Erweiterung der aktuellen Mike Lischke Header. Dieser Header wurde auch mit dem von Mike Lischke abgeglichen um Doppelimplementationen zu vermeiden.

Unterstütze Extensions:
// ----- ARB Extension -----
GL_ARB_matrix_palette
GL_ARB_texture_border_clamp
GL_ARB_texture_env_add
GL_ARB_texture_env_combine
GL_ARB_texture_env_crossbar
GL_ARB_texture_env_dot3
GL_ARB_texture_mirrored_repeat
GL_ARB_vertex_program
GL_ARB_depth_texture
GL_ARB_window_pos
GL_ARB_shadow
GL_ARB_shadow_ambient
GL_ARB_vertex_buffer_object
GL_ARB_fragment_program

// ----- ATI Extension -----
GL_ATI_envmap_bumpmap
GL_ATI_fragment_shader
GL_ATI_pn_triangles
GL_ATI_separate_stencil
GL_ATI_texture_mirror_once
GL_ATI_vertex_streams
GL_ATI_vertex_array_object
GL_ATI_element_array
GL_ATI_map_object_buffer
GL_ATI_vertex_attrib_array_object
GL_ATI_texture_float
GL_ATI_draw_buffers
GL_ATI_texture_env_combine3
GL_ATI_text_fragment_shader

Die Handhabung ist genau die Selbe wie bei den originalen Header.
Nach dem Initialisieren.
<!--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> ReadImplementationPropertiesATI;
ReadExtensionsATI;</pre><!--pas2--></td></tr></table><span class='postcolor'><!--pas3-->
Und dann kanns los gehen.

Als nächstes hatte ich vor, die noch fehlenden EXT Extensions zu übersetzen. Evtl könnte man das Ganze auch noch so weit erweitern und die nVidia Extensions dort auch noch mit einbringen. (Dann müsste ich die Datei zwar umbennen aber das wäre das kleinste. ;) )


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Di Jun 10, 2003 13:34 
Offline
DGL Member
Benutzeravatar

Registriert: Sa Okt 26, 2002 17:14
Beiträge: 188
Wohnort: Hannover/Lüneburg
Danke erstmal für die Unit!

Allerdings sind da scheinbar noch Fehler drin. Es muss
Code:
  1.  &nbsp;glBindFragmentShaderATI := wglGetProcAddress('glBindFragmentShaderATI');
  2.  &nbsp;glDeleteFragmentShaderATI := wglGetProcAddress('glDeleteFragmentShaderATI');
  3.  &nbsp;glBeginFragmentShaderATI := wglGetProcAddress('glBeginFragmentShaderATI');
  4.  &nbsp;glEndFragmentShaderATI := wglGetProcAddress('glEndFragmentShaderATI');
heißen, und nicht
Code:
  1. glBindFragmentShadersATI := wglGetProcAddress('glBindFragmentShadersATI');
  2.  &nbsp;glDeleteFragmentShadersATI := wglGetProcAddress('glDeleteFragmentShadersATI');
  3.  &nbsp;glBeginFragmentShadersATI := wglGetProcAddress('glBeginFragmentShadersATI');
  4.  &nbsp;glEndFragmentShadersATI := wglGetProcAddress('glEndFragmentShadersATI');
Ansonsten war glaube ich bei den pn_triangles der Eintrag doppelt, mehr habe ich mir noch nicht angesehen...

_________________
Thunderman
Bei schwierigen Problemen entscheiden wir uns einfach für die richtige Lösung. Klar?


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Di Jun 10, 2003 14:10 
Offline
DGL Member
Benutzeravatar

Registriert: Do Dez 05, 2002 10:35
Beiträge: 4234
Wohnort: Dortmund
Jau. Jetzt wo du es sagst. :rolleyes:
Okay. Ist beides gefixt.

Ich habe das ganze mal auf meinen Webspace hochgeladen.
<a href='http://www.dev-center.de/download/OpenGLATI.zip' target='_blank'>http://www.dev-center.de/download/OpenGLATI.zip</a>


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Di Jun 10, 2003 14:23 
Offline
DGL Member
Benutzeravatar

Registriert: Sa Dez 28, 2002 11:13
Beiträge: 2244
Wäre schön, wenn EXT_STENCIL_TWO_SIDE und NV_OCCLUSION_QUERY noch mit hinzukommen würden. Die werden auf GF und Radeon Karten unterstützt.


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Di Jun 10, 2003 14:36 
Offline
DGL Member
Benutzeravatar

Registriert: Do Dez 05, 2002 10:35
Beiträge: 4234
Wohnort: Dortmund
Keine Sorge habe ich vor. Kann allerdings noch ein bissel dauern. Ich weiß nicht genau, wann ich dazu komme.


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


Wer ist online?

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