PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : "Curved Surface" -war da was in Quake 3?


mjs
2006-04-11, 20:35:04
Hallo zusammen,

kürzlich bin ich mal wieder über das Thema "Curved Surfaces" (gekrümmte Flächen/Texturen) gestolpert.
Damals wurde ja berichtet, das Quake 3 erstmals eine neue Technik anwenden würde, mit der man z. B. eine Säule wirklich rund bekommen würde (ohne unzählige Polygone von der CPU berechnen zu lassen).

Jetzt habe ich Quake 3 nicht mehr im Haus, aber damals unzählige Stunden damit verbracht. Dabei viel mir auf, das Quake 3 tatsächlich weniger eckige Gänge und mehr Rundbögen (Decken/Torbögen) als z. B. der ältere Vorgänger Quake 2 hatte.

Aber das lag doch eher daran, dass Quake 3 generell mehr Polygone verwendete und nicht weil die Grafikkarte selbstständig welche hinzufügt?

EDIT: ATI TrueForm
Später gab es ja auch noch eine Technologie von ATI (Trueform) die rundere Objekte möglich machen sollte, war das der Versuch Curved Surfaces auf einen eigenen Standard umzuwandeln?

Meine Frage ist jetzt:

Hat Quake 3 damals wirklich an manchen Stellen gekrümmte Oberflächen geboten und falls ja könnte jemand mal ein Screenshot posten (am besten normal und als Drahtgittermodell -die Console sollte das doch ermöglichen?)

Vielleicht könnt Ihr mich da mal technisch aufklären und erläutern, warum es heute wieder von der Bildfläche verschwunden ist (Doom 3 ist ja z. B. sehr kantig um die CPU nicht zu überlasten -wäre hier eine perfekte Rundung mit einem oder zwei gerümmten Polygonen nicht besser gewesen, als z. B. die eckigen Köpfe der Imps?)

Gruß mjs

betasilie
2006-04-11, 20:36:40
Ja, in Q3 gab es diese Technik. Es war nicht perfekt rund, aber die entsprechenden Stellen hatten halt mehr Polygone, weil die CPU nicht belastet wurde.

Und wer sagt, dass es heute nicht mehr eingestetzt wird?

mjs
2006-04-11, 21:22:56
Ja, in Q3 gab es diese Technik. Es war nicht perfekt rund, aber die entsprechenden Stellen hatten halt mehr Polygone, weil die CPU nicht belastet wurde.
Ich habe hier einen Auszug eines 3DConcept Artikels:
Werden Curved Surfaces in Hardware ausgeführt, so müssen nur die Kontrollpunkte (3D - Punkte, welche den Umriss der Kurve definieren) an die Grafikkarte geschickt werden. Da sich nicht 1000ende von Dreiecken durch den AGP - Bus zwängen, bleibt mehr AGP - Bandbreite für andere Daten übrig. Der 3D - Chip zerlegt die Kurve basierend auf den Koordinaten der 3D-Punkte und viel Mathematik selbst in viele kleine Dreiecke. Je nach T&L - Leistung dieses Chips und Position im Raum (LOD) wird die Kurve in 100 Dreiecke oder 50'000 Dreiecke zerlegt, was steht's zu einer optimalen Auslastung der vorhandenen Hardware führt. Der Spieledesigner muss sich nicht um die Skalierbarkeit seiner Modelle kümmern, die Hardware übernimmt dies für ihn - und erst noch optimaler als er es könnte. Ohne Curved Surfaces müsste der Spieledesigner mehrere Modelle desselben Typs anlegen, jeweils mit unterschiedlicher Dreiecksanzahl. Auch wenn die Kurven im lokalen Speicher der Grafikkarte gelagert werden, wird dort weniger Platz für dasselbe Resultat wie mit Dreiecken verschwendet.

Bedeutet dies, dass ich mit meiner alten VooDoo2 PCI nicht das selbe Spiel gesehen habe wie jemand mit leistungsfähiger T&L Hardware (bei 16Bit Farbtiefe)?


Und wer sagt, dass es heute nicht mehr eingestetzt wird?
Da gab es wohl mal ein Interview mit John Carmack... (frag mich bitte nicht wo ich das mal aufgeschnappt habe). Die Kantigen Köpfe der Spielfiguren in Doom 3 werden ja bei einem Wechsel von einer GeForceFX auf eine 7900GTX nicht runder -wobei dies bei einer Unterstützung von Curved Surfaces abhängig von der Leistungsfähigkeit der Grafikkarte dann doch von selbst geschehen sollte?

EDIT: Wenn der einzige Chip der das wirklich per Hardware beschleunigen konnte der R200 war, ist es wirklich bedauerlich dass ATI das nicht mehr in die Nachfolger eingebaut hat.
Man stelle sich die Möglichkeiten vor, alte Spiele sehen mit neuer Hardware automatisch viel besser aus -wenn TrueForm unterstützt worden wäre (ähnlich wie wir Sie jetzt dank Leistung ohne Ende in SSAA und AF investieren...)

Gast
2006-04-11, 21:47:34
die curved-surfaces in quake3 waren allerdings rein cpu-berechnet, das vollständige polygonmodell ging zur grafikkarte.

curved-surfaces in hardware in der Radeon8500 in form von n-patches aka truform (ohne e ;) ).
allerdings hat man dabei viel zu wenig kontrolle über das endgültige aussehen der objekte, und es können auch ander probleme wie polygonlücken auftreten, weshalb sich das ganze nicht durchgesetzt hat und von neueren radeon-chips nicht mehr unterstützt wird. es wird lediglich ersatzweise das ganze als cpu-implementierung angeboten.

nvidia hat in der geforce3 RT-patches als curved-surfaces integriert, was aber meines wissens nie praktisch verwendet wurde. in späteren treibern hat man das auch deaktiviert, weil manche spiele das ganze fälschlicherweise für truform gehalten haben und es damit kompatibilitätsprobleme gab.
ich weiß nicht ob die neueren nv-chips noch entsprechende hardware haben, ich denke aber eher nicht.

mit D3D10 und dem dazugehörigen geometrieshader könnten sich endlich mal hardwarebeschleunigte curved-surfaces durchsetzen.

mjs
2006-04-11, 21:58:15
die curved-surfaces in quake3 waren allerdings rein cpu-berechnet, das vollständige polygonmodell ging zur grafikkarte.

Passt das Spiel die dann mit steigender CPU Leistung auch an, also hat ein Athlon 64 FX57 auf max. Details rundere Flächen als ein Pentium 3 mit gleichen Gamesettings?

Expandable
2006-04-11, 22:32:13
Passt das Spiel die dann mit steigender CPU Leistung auch an, also hat ein Athlon 64 FX57 auf max. Details rundere Flächen als ein Pentium 3 mit gleichen Gamesettings?

Nein, ist mir noch nie aufgefallen. War es nicht so, dass beim Compilen der Map die Dreieicke bereits berechnet werden (oder ist das jetzt bei Doom 3 so? Ich glaub, dass ich da grad was durcheinander bringe)? Das ganze war glaub ich mehr eine Erleichterung für Leveldesigner, Rundungen wirklich einfach rund zu bekommen.

Neomi
2006-04-11, 22:33:48
Doom 3 ist ja z. B. sehr kantig um die CPU nicht zu überlasten -wäre hier eine perfekte Rundung mit einem oder zwei gerümmten Polygonen nicht besser gewesen, als z. B. die eckigen Köpfe der Imps?

Nein, das wäre eher kontraproduktiv gewesen. Die Zahl der Dreiecke war nicht so niedrig, um weniger Dreiecke rendern zu müssen, sondern wegen der Berechnung der Shadowvolumes. Und diese sollten auf der Geometrie basieren, die auch gerendert wird, sonst gibt es Artefakte beim Selfshadowing.

Gast
2006-04-11, 23:01:27
Passt das Spiel die dann mit steigender CPU Leistung auch an, also hat ein Athlon 64 FX57 auf max. Details rundere Flächen als ein Pentium 3 mit gleichen Gamesettings?

nicht dass ich wüsste, allerdings nimmt die anzahl der dargestellten polygone mit der entfernung zum objekt ab, also ein integriertes, dynamisches geometrie-LOD.

Gast
2006-04-11, 23:07:18
Die Kantigen Köpfe der Spielfiguren in Doom 3 werden ja bei einem Wechsel von einer GeForceFX auf eine 7900GTX nicht runder -wobei dies bei einer Unterstützung von Curved Surfaces abhängig von der Leistungsfähigkeit der Grafikkarte dann doch von selbst geschehen sollte?


shadow-volumes und curved-surfaces beißen sich, und würden unschöne artefakte ergeben.

ich glaube gelesen zu haben dass man mit D3D10 im geometry-shader auch shadow-volumes erzeugen kann, damit wären auch hardware-curved-surfaces+shadow volumes möglich. mir fehlt allerdings das nötige wissen, das beurteilen zu können.


EDIT: Wenn der einzige Chip der das wirklich per Hardware beschleunigen konnte der R200 war, ist es wirklich bedauerlich dass ATI das nicht mehr in die Nachfolger eingebaut hat.
Man stelle sich die Möglichkeiten vor, alte Spiele sehen mit neuer Hardware automatisch viel besser aus -wenn TrueForm unterstützt worden wäre (ähnlich wie wir Sie jetzt dank Leistung ohne Ende in SSAA und AF investieren...)

truform bringt viel zu viele probleme mit sich um breit eingesetzt zu werden. es ist nichtmal ein einfacher zylinder ohne weiteres möglich, da man nicht garantieren dann dass der "deckel" die gleiche "rundung" aufweist wie der mantel.
außerdem würden die spiele auch mit neuer hardware nicht (zwangsläufig) besser aussehen, da es eine fixe anzahl an "zwischenknoten" zwischen den übergebenen kontrollpunkten verwendet.

Gast
2006-04-11, 23:11:40
Bei Quake3 ist die Variable r_subdivisions für die Curved Surfaces zuständig. Je kleiner der Wert desto mehr Polygone haben die Kurven.

Gast
2006-04-11, 23:17:10
Hier Beispiele:
r_subdivisions -1:
http://img338.imageshack.us/img338/7522/subdivisions14nx.th.jpg (http://img338.imageshack.us/my.php?image=subdivisions14nx.jpg)
r_subdivisions 25:
http://img338.imageshack.us/img338/8335/subdivisions258og.th.jpg (http://img338.imageshack.us/my.php?image=subdivisions258og.jpg)

san.salvador
2006-04-12, 02:03:01
Was ist die Standardeinstellung? Wie siehts mit den fps aus?

Coda
2006-04-12, 02:04:21
ich glaube gelesen zu haben dass man mit D3D10 im geometry-shader auch shadow-volumes erzeugen kann, damit wären auch hardware-curved-surfaces+shadow volumes möglich. mir fehlt allerdings das nötige wissen, das beurteilen zu können.
Ja, ist möglich.

Was ist die Standardeinstellung? Wie siehts mit den fps aus?
Standard is etwas kantiger als das obere. Heutige GPUs kratzt die Einstellung kein bischen.

In Doom 3 gibts auch noch curved surfaces, nur wird da einfach nur eine Auflösung ohne LOD gespeichert.

"Echt rund" ist und war keins von beidem. Es sind einfach tesselierte Patches.

Gast
2006-04-12, 15:25:37
"Echt rund" ist und war keins von beidem. Es sind einfach tesselierte Patches.

"echt rund" ist ja mit viereckigen pixeln auch schlecht möglich ;)

Coda
2006-04-12, 16:22:43
Das spielt in diesem Zusammenhang keine Rolle.

Monger
2006-04-12, 16:38:57
EDIT: Wenn der einzige Chip der das wirklich per Hardware beschleunigen konnte der R200 war, ist es wirklich bedauerlich dass ATI das nicht mehr in die Nachfolger eingebaut hat.
Man stelle sich die Möglichkeiten vor, alte Spiele sehen mit neuer Hardware automatisch viel besser aus -wenn TrueForm unterstützt worden wäre (ähnlich wie wir Sie jetzt dank Leistung ohne Ende in SSAA und AF investieren...)

Die folgenden Chips von ATI haben Truform über Shader emuliert (aber immer noch sehr schnell).
Die Technik war eine Totgeburt. Ich kann mich noch an den Release von Quake3 erinnern, und wie sehr diese Technik gepriesen wurde. Spätestens mit UT2003 hat man das Problem einfach mit Masse erschlagen. Ab einer gewissen Menge an Polygonen sieht man den Unterschied zu einer "richtigen" Rundung ohnehin nicht mehr.


Ich hab keine Ahnung warum sich das nicht durchgesetzt hat. Ich vermute, die Zeit war einfach nicht reif dafür. Die Tools (z.B. Editoren) speicherten ihre Daten lieber in Arrays mit Eckpunkten ab, als jetzt das ganze erst in mathematische Formeln packen zu lassen. Und so einfach kann man das eine nicht in das andere umwandeln.
Und heute braucht man es nicht mehr, weil man mit entsprechender Polygonmenge und guten Texturen ohnehin relativ leicht über solche Kanten hinweg täuschen kann.

Neomi
2006-04-12, 16:43:13
Die folgenden Chips von ATI haben Truform über Shader emuliert (aber immer noch sehr schnell).

Nein, das war nur per Software (im Treiber). Erst der noch kommende Geometryshader kann neue Dreiecke erzeugen. Jetzige Vertexshader können nur vorhandene Punkte bearbeiten, einen nach dem anderen.

eXistence
2006-04-12, 17:49:03
Und heute braucht man es nicht mehr, weil man mit entsprechender Polygonmenge und guten Texturen ohnehin relativ leicht über solche Kanten hinweg täuschen kann.

Die Curves von id beziehen sich mehr oder weniger auf die Art und weise wie Geometrie gespeichert wird, nicht wie sie gerendert wird.
Spätestens auf der GraKa wird sowieso tesseliert.

Die Variante von id hat aber zwei entscheidene Vorteile:
1. Runde Oberflächen lassen sich sehr elegant bearbeiten
2. Zumindest bei Q3A konnte man nachträglich einstellen, wie rund die Rundungen tatsächlich sein sollen. Schade dass es dies bei D3 nicht mehr gibt :(

Banshee18
2006-04-12, 17:57:30
Eine kleine Anmerkung an den Threadstarter: Es muss TruForm ohne e heißen.

mjs
2006-04-12, 22:53:27
Nein, das wäre eher kontraproduktiv gewesen. Die Zahl der Dreiecke war nicht so niedrig, um weniger Dreiecke rendern zu müssen, sondern wegen der Berechnung der Shadowvolumes. Und diese sollten auf der Geometrie basieren, die auch gerendert wird, sonst gibt es Artefakte beim Selfshadowing.
shadow-volumes und curved-surfaces beißen sich, und würden unschöne artefakte ergeben.
Ok, dann können wir also festhalten das sich diese Technik wegen der von Anfang an geplanten Schablonen-Schatten in Doom3 disqualifiziert hat.
Bei Quake3 ist die Variable r_subdivisions für die Curved Surfaces zuständig. Je kleiner der Wert desto mehr Polygone haben die Kurven.

Hier Beispiele:
r_subdivisions -1:
http://img338.imageshack.us/img338/7522/subdivisions14nx.th.jpg (http://img338.imageshack.us/my.php?image=subdivisions14nx.jpg)
r_subdivisions 25:
http://img338.imageshack.us/img338/8335/subdivisions258og.th.jpg (http://img338.imageshack.us/my.php?image=subdivisions258og.jpg)

Mensch, das gibts ja nicht:
Quake3 lässt sich tatsächlich mit steigender Rechenleistung "Pimpen" -was die Levelgeometrie angeht!
Schade, das John Carmack in Doom3 wegen der Stencil-Shadows darauf verzichten musste.

Jetzt meine nächste Frage -kann man alle diese Games ebenfalls "Pimpen"?

Heavy Metal: F.A.K.K.² (2000) — Ritual Entertainment
Star Trek: Voyager Elite Force (2000) — Raven Software
American McGee's Alice (2000) — Rouge Entertainment
Medal of Honor: Allied Assault (2002) — 2015 inc.
Medal of Honor: Allied Assault - Spearhead (2003) — Electronic Arts Los Angeles
Medal of Honor: Allied Assault - Breakthrough (2003) — Electronic Arts Los Angeles
Return to Castle Wolfenstein (2001) — Gray Matter Interactive
Wolfenstein: Enemy Territory (2003) — Splash Damage
Soldier of Fortune II: Double Helix (2002) — Raven Software
Star Wars Jedi Knight II: Jedi Outcast (2002) — Raven Software
Star Wars Jedi Knight: Jedi Academy (2003) — Raven Software
Star Trek: Elite Force II (2003) — Ritual Entertainment
Call of Duty (2003) — Infinity Ward
Call of Duty: United Offensive (2004) — Infinity Ward

Ich glaub ich werd nicht mehr...

Kann es sein, das dies immer noch so etwas wie ein "Geheimtip" ist, seine Rechenleistung (Quake3-Engine Klassiker) in bessere Grafik zu investieren? :naughty:

Ansonsten vielen Dank für eure zahlreichen Antworten, das ist ein sehr interessantes Thema das wie ich finde viel zu wenig Aufmerksamkeit bekommt -gerade wenn man sich die beiden geposteten Vergleichsbilder mal näher anschaut!

PS: TruForm ohne e -werd´s mir ausrichten! :wink:

Coda
2006-04-12, 22:58:05
Ich glaube du übertreibst etwas. So unglaublich sichtbar ist das nämlich nicht gerade.

mjs
2006-04-12, 23:12:03
Also ich finde schon, vor allem wenn es an helleren Stellen auftritt!

Ich würde so gerne mit den alten Klassikern auf Q3 Basis experimentieren -leider habe ich die alle weiterverkauft... :(

Gast
2006-04-13, 12:52:43
Hier Beispiele:
r_subdivisions -1:
http://img338.imageshack.us/img338/7522/subdivisions14nx.th.jpg (http://img338.imageshack.us/my.php?image=subdivisions14nx.jpg)
r_subdivisions 25:
http://img338.imageshack.us/img338/8335/subdivisions258og.th.jpg (http://img338.imageshack.us/my.php?image=subdivisions258og.jpg)
mit -1 gibts grafikfehler (siehst du z.B. rechts unten, wo die eigentlich runde wand wieder ecken bekommt), der niedrigste sinnvolle wert ist +1.
standardwert für r_subdivisions ist übrigens 4, sieht also schon auf default ziemlich rund aus.

Wishnu
2006-04-14, 14:58:02
btw bot nicht NV1 bereits Hardware-Unterstützung für curved surfaces (was dann in den künftigen Designs wieder rausflog)?

RLZ
2006-04-14, 15:04:48
btw bot nicht NV1 bereits Hardware-Unterstützung für curved surfaces (was dann in den künftigen Designs wieder rausflog)?
Ja. Ansonsten war er aber katastrophal langsam. Die wenigen Titel (z.B. Virtua Fighter) liefen mit Softwarerendering wesentlich flüssiger. X-D

Coda
2006-04-14, 15:59:48
Jaja, die berüchtigten 3D-Decellerators :D

Gast
2006-04-14, 16:00:53
btw bot nicht NV1 bereits Hardware-Unterstützung für curved surfaces (was dann in den künftigen Designs wieder rausflog)?

so was in der art, aber er unterstützte keine polygone. da polygone wesentlich einfacher handzuhaben sind, hat kaum jemand dafür programmiert ;)

aths
2006-04-17, 00:25:50
Ja, in Q3 gab es diese Technik. Es war nicht perfekt rund, aber die entsprechenden Stellen hatten halt mehr Polygone, weil die CPU nicht belastet wurde.Natürlich wird die CPU belastet.

Und wer sagt, dass es heute nicht mehr eingestetzt wird?JC selbst hat sich später kritisch dazu geäußert, weil die Technik diverse Probleme aufwirft.

Coda
2006-04-17, 10:44:20
Natürlich wird die CPU belastet.
Nö wird sie nicht. Die LOD-Level sind vorberechnet.

JC selbst hat sich später kritisch dazu geäußert, weil die Technik diverse Probleme aufwirft.
Gibts in Doom 3 immer noch als Modelling-Tool im Editor. Das LOD-Zeug konnte er sich dort sparen.

MeLLe
2006-04-17, 15:35:03
Nö wird sie nicht. Die LOD-Level sind vorberechnet.
Kommt auf die Definition an.
In den Maps selbst liegen die Curved Surfaces nur in ihren Kontrollpunkten vor. Erst zur Loadtime wird daraus echte Geometrie - ob nun in einem oder mehreren LODs, ist ja erstmal egal. Aber genau da ist CPU-Last da. Während der Runtime selbst wird dann diese "fertige" Geometrie benutzt, und die CPU hat dann damit keine Extra-Belastung mehr.

Coda
2006-04-17, 16:14:04
Kommt auf die Definition an.
In den Maps selbst liegen die Curved Surfaces nur in ihren Kontrollpunkten vor. Erst zur Loadtime wird daraus echte Geometrie - ob nun in einem oder mehreren LODs, ist ja erstmal egal. Aber genau da ist CPU-Last da. Während der Runtime selbst wird dann diese "fertige" Geometrie benutzt, und die CPU hat dann damit keine Extra-Belastung mehr.
CPU-Last zur Ladezeit ist für mich ziemlich irrelevant, vor allem dauert das wohl nichtmal ne halbe Sekunde.

betasilie
2006-04-17, 16:19:40
Natürlich wird die CPU belastet.
Da hatte ich wohl falsche Vorstellungen, als das damals promoted wurde. Da war die Rede davon, dass es die CPU-Last verringert.

JC selbst hat sich später kritisch dazu geäußert, weil die Technik diverse Probleme aufwirft.
Mag sein, trotzdem gab es noch andere Engines und Spiele, die curved surfaces genutzt haben - SS z.B.

Aber klar, diese Technik ist dann wohl nicht mehr aktuell.

MeLLe
2006-04-17, 16:26:28
CPU-Last zur Ladezeit ist für mich ziemlich irrelevant, vor allem dauert das wohl nichtmal ne halbe Sekunde.
Irrelevant für dich, ok. Aber sie ist da =)
Allerdings geht es hier ja um die Lesitungskennzahlen zur Laufzeit der 3D-Engine. So gesehn ist deine Argumentation schon nicht verkehrt :)

Coda
2006-04-17, 16:36:20
Aber klar, diese Technik ist dann wohl nicht mehr aktuell.
Heute wird das Zeug einfach ausmodeliert und gut is.

MarcWessels
2006-04-17, 17:18:51
Bei Quake3 ist die Variable r_subdivisions für die Curved Surfaces zuständig. Je kleiner der Wert desto mehr Polygone haben die Kurven.Und den nciht vergessen->

seta r_lodCurveError "30000"

collapse
2006-04-17, 17:21:44
Bei UT2k3 und 2k4 glaubich auch sah man den Unterschied aber schon besonders an den Schultermetallplatten. Ich such jetz mal n screen.

MarcWessels
2006-04-17, 17:24:40
Ich glaube du übertreibst etwas. So unglaublich sichtbar ist das nämlich nicht gerade.Ähm, gerade bei Heavy Metal FAKK2 ist der Unterschied gewaltig.

Schon allein das Gebäud ebeim Spielstart. Sieh Dir den Turm in Standard "High"-Einstellung an und nach dem "Pimpen". Der "Lod-Curve"-Eintrag war immer der erste, der von mir in Q3A-Engine-Spielen verändert wurde.

Ab COD und Elite Force 2 gab's aber keinerlei Veränderungen mehr dadurch.

Gast
2006-04-17, 21:23:17
Bei UT2k3 und 2k4 glaubich auch sah man den Unterschied aber schon besonders an den Schultermetallplatten. Ich such jetz mal n screen.

die beiden verwenden n-patches für die modelle.