PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Procedural Textures


deekey777
2006-02-16, 14:19:39
Procedural Textures sind "Computer-generierte" und nicht Image-basierte Texturen. Sie beanspruchen keinen (kostbaren) Speicher (nur der Code), werden von Pixelshadern on-fly erstellt...
Was sind denn die genauen Vor- und Nachteile?
Die Nachteile sind (laut einer nVidia-Präsentation) in erster Linie die Dauer, einen Shader-Code für Procedural Textures zu schreiben. Leider war es nicht klar, wie alt diese Präsentation ist.
Gibt es einen bestimmten Grund, warum diese in heutigen Spielen nicht genutzt werden, oder ist es nur cool, wenn ein Spiel so viel wie möglich Grafikspeicher belegt?

HajottV
2006-02-16, 15:30:00
Gibt es einen bestimmten Grund, warum diese in heutigen Spielen nicht genutzt werden, oder ist es nur cool, wenn ein Spiel so viel wie möglich Grafikspeicher belegt?

Damit sich eine prozedurale Textur lohnt, muß das Berechnen schneller sein als der Texturzugriff... und das ist es in den meisten Fällen halt nicht. Hinzukommt, daß die meisten interessanten prozedural erzeugten Texturen eine oder mehrere Hilfstexturen brauchen. Da kann man dann eigentlich gleich die Zieltextur nehmen.

Gruß

Jörg

Neomi
2006-02-16, 16:29:22
Prozedurale Texturen gibt es überall, es gab sie sogar schon vor den "echten" (gerasterten) Texturen. Und zwar ist das die konstante Farbe: f(u,v)=color. Ja, das ist wirklich eine prozedurale Textur. Zwar die simpelste, die es geben kann, aber es ist eine.

Komplexere Funktionen brauchen natürlich mehr Rechenzeit, schon ab einer sehr geringen Komplexität ist das wesentlich mehr, als das Sampling der gerasterten Textur an Zeit verschlingt. Aber selbst dann, wenn man die Geschwindigkeit außen vor läßt, bleibt immer noch der Speicherplatz, den so eine Funktion selbst benötigt. Der Shadercode, der eine beliebige 1024x1024 (gilt auch für jede andere Größe) Texel große Textur nachbilden kann, braucht deutlich mehr Platz als die Textur selbst. Die paar Instruction Slots eines 3.0 Pixelshaders sind da ein regelrechter Witz. Deshalb ist das auch nur für sehr wenige Spezialfälle überhaupt praktikabel.

Coda
2006-02-16, 16:37:08
Sie sind abartig hässlich für die allermeisten Fälle was sich in naher Zukunft auch nicht ändern wird.

Schlagt mich :P

Spasstiger
2006-02-16, 16:39:30
Sie sind abartig hässlich für die allermeisten Fälle was sich in naher Zukunft auch nicht ändern wird.

Schlagt mich :P

Die Texturen in der kkrieger-Demo finde ich nicht hässlich. Sind die nicht auch mehr oder weniger prozedural? In 96kb kann man jedenfalls kaum was Brauchbares an Texturmaterial reinpacken.

Neomi
2006-02-16, 16:50:14
Die Texturen in der kkrieger-Demo finde ich nicht hässlich. Sind die nicht auch mehr oder weniger prozedural? In 96kb kann man jedenfalls kaum was Brauchbares an Texturmaterial reinpacken.

Die paar Texturen sind zwar nicht schlecht, aber keine prozeduralen Texturen. Sie werden bei Programmstart vorberechnet und als gerasterte Texturen im Grafikspeicher abgelegt. Prozedurale Texturen haben noch ein paar Einschränkungen, was die Art der Berechnung angeht.

Asmodeus
2006-02-16, 16:53:46
Auch dürfte es schwer fallen, jeden beliebigen Inhalt einer normalen Textur prozedural zu beschreiben.

Gruss, Carsten.

Coda
2006-02-16, 17:05:20
Die Texturen in der kkrieger-Demo finde ich nicht hässlich. Sind die nicht auch mehr oder weniger prozedural? In 96kb kann man jedenfalls kaum was Brauchbares an Texturmaterial reinpacken.Und ob die hässlich sind. Zumindest um einiges schlimmer als was man mit normalen Texturen hätte draus machen können.

deekey777
2006-02-16, 17:35:03
Was ist mit Wasser(oberfläche), Himmel/Wolken, Lava...

Coda
2006-02-16, 17:46:10
Sie sind abartig hässlich für die allermeisten Fälle was sich in naher Zukunft auch nicht ändern wird.Das Problem ist dass man zwar in einem Shadereditor einen prozeduralen Effekt einbauen kann aber wenn es der Artist nicht mag wird er im Zweifelsfall doch wieder zur Textur greifen. Ich würde mich da nicht einschränken lassen.

Spasstiger
2006-02-16, 17:49:55
Weiß eigentlich einer, wie die Megatexture-Technik in der modifizierten Doom-3-Engine für Quakewars funktionieren wird? Dort soll man ja über das gesamte Level - und die Levels werden riesig sein - nie das gleiche Muster auf der Geländetextur wiederfinden.

Coda
2006-02-16, 17:56:14
Ich denke mit einer Mischung aus prozeduraler Mischtechnik und allerlei Basistexturen. Das ist aber nicht rein prozedural und fällt somit nicht in meine Hass-Kampagne dagegen ;)

RaumKraehe
2006-02-16, 17:59:39
Die Texturen in der kkrieger-Demo finde ich nicht hässlich. Sind die nicht auch mehr oder weniger prozedural? In 96kb kann man jedenfalls kaum was Brauchbares an Texturmaterial reinpacken.

Ja das sind sie. Sie werden aber nicht in Echtzeit berechnet. Die Krieger-Demo hat einfach alle Texturen beim start berechnet. Deshalb dauert der auch relativ lange. Somit ist der Speicherverbrauch letzendlich der gleiche. Wäre mal interessant zu wissen wie groß die Demo nach dem Erstellen der Texturen ist. :)

Spasstiger
2006-02-16, 18:26:58
Ich hab eben mal kkrieger getestet. Aus 96 kb werden beim Ausführen rund 280 MB im Ram.
Die Grafikspeicherauslastung ist auch ordentlich. Die 128 MB auf meiner Karte waren komplett voll, an Texturspeicher wurde insgesamt rund 130 MB verwendet (von 370 MB noch 240 MB frei).

Die Texturen finde ich allerdings beachtlich dafür, dass sie nur per Code erzeugt wurden. Einige Holztexturen sehen verdächtig prozedural aus und dafür auch noch verdammt gut:
http://img48.imageshack.us/img48/4491/pno000101ql.th.jpg (http://img48.imageshack.us/my.php?image=pno000101ql.jpg) http://img48.imageshack.us/img48/8307/pno000120vv.th.jpg (http://img48.imageshack.us/my.php?image=pno000120vv.jpg)
Die anderen Texturen wiederholen sich zwar ganz offensichtlich, wissen aber trotzdem durch ihre gute Auflösung zu überzeugen:
http://img48.imageshack.us/img48/65/pno000115cz.th.jpg (http://img48.imageshack.us/my.php?image=pno000115cz.jpg) http://img48.imageshack.us/img48/5341/pno000134ke.th.jpg (http://img48.imageshack.us/my.php?image=pno000134ke.jpg) http://img48.imageshack.us/img48/7880/pno000145tm.th.jpg (http://img48.imageshack.us/my.php?image=pno000145tm.jpg) http://img48.imageshack.us/img48/8382/pno000155ry.th.jpg (http://img48.imageshack.us/my.php?image=pno000155ry.jpg)
Auch die Waffen sind stets unterschiedlich texturiert:
http://img48.imageshack.us/img48/3020/pno000166xi.th.jpg (http://img48.imageshack.us/my.php?image=pno000166xi.jpg)

Ich weiß natürlich, dass diese Texturen mit prozeduralen Texturen im eigentlichen Sinne nur wenig zu tun haben, da sie viel zu viel Speicher wegfressen.

P.S.: Alle Bilder ohne AA und AF, ich hoffe, ihr könnt mir das verzeihen. ;)

Coda
2006-02-16, 18:32:10
Dennoch sieht es einfach "künstlich" aus. Realistische Grafik wird man mit rein prozeduraler Technik einfach nicht erreichen.

Spasstiger
2006-02-16, 18:53:37
Hat Demirug nichtmal was in der Richtung gemacht? War doch ne Mischung aus Fototexturen und prozeduralen Variationen davon. Sah auf jeden Fall realistisch aus.

Coda
2006-02-16, 18:56:09
Ich sagte doch, solang man Basismaterial aus guten Texturen hat ist es sicher gut verwendbar. Aber rein prozedural ist einfach nix.

ScottManDeath
2006-02-16, 23:18:34
Außerdem muss man da noch Anti Aliasing einbauen, da man bei rein prozeduralen Texturen keine Texturfilter hat.

Allerdings kann der Artist gut und gerne prozedurale Texturen machen, solange er die dann als ImageTexture zusammendampft.

Es ist halt der klassische Communicate vs Calculate Tradeoff

Gast
2006-02-18, 21:01:02
Ich weiß natürlich, dass diese Texturen mit prozeduralen Texturen im eigentlichen Sinne nur wenig zu tun haben, da sie viel zu viel Speicher wegfressen.



natürlich sind es großteils "richtige" prozedurale texturen, die nur beim laden in "echte" texturen umgerechnet werden.

wahnsinnig gut sehen sie allerdings nicht aus, vor allem wenn man damit eine realistische umgebung nachbilden will wird man sich schwer tun.

Gast
2006-02-21, 04:32:14
Ich denke mit einer Mischung aus prozeduraler Mischtechnik und allerlei Basistexturen. Das ist aber nicht rein prozedural und fällt somit nicht in meine Hass-Kampagne dagegen ;)

Mit Streaming und LOD der Texturen dürfte das möglich sein.Man sieht ja nicht das ganze Level mit all seinen Texturen in der höchsten Auflösung gleichzeitig.

Denkbar wäre ein Streaming von Platte zum Hauptspeicher und dann in den V-Ram.Dann würde nur noch die Festplatte die Anzahl der Texturen limitieren.

Ich finde es sehr lobenswert das nach all den"Plastik-Schmier-Effekten"wieder das Augenmerk in Richtung Texturqualität geht.Dazu zählt nicht nur die Auflösung der Textur sondern auch so wenig wie möglich Wiederholungen und wenn die sie dann so angepasst sind das sie nahtlos vom Content übergehen,wäre sehr sehr viel erreicht.

Es wird soviel über AF und AA und LOD diskutiert,doch meisstens auf Basis lächerlicher Texturen.

Mr. Lolman
2006-02-21, 11:25:30
Dennoch sieht es einfach "künstlich" aus. Realistische Grafik wird man mit rein prozeduraler Technik einfach nicht erreichen.

Imo kann man auch Realismus erreichen. Eine Dreckfunktion reinrechnen, und zusätzlich ein bisschen Farbsättigung rausnehmen. Klar einfach ists nicht, aber auch nicht unmöglich. Es kommt ja nur auf die Komplexität der Prozeduren an. Selbst mit den (uralt) KPT3.0 konnte man mit ein bisschen Mühe schon ganz ansehliche, relativ realsisitsche Texturen basteln.

Coda
2006-02-21, 11:45:25
Ich gehe mit dir jede Wette ein dass ich jede rein prozedurale Textur sofort erkenne.

Mr. Lolman
2006-02-21, 12:01:38
Ich gehe mit dir jede Wette ein dass ich jede rein prozedurale Textur sofort erkenne.

Vll. bastle ich mal wieder ein paar. Ein paar von diesen hier sind jedoch auch schonmal nicht schlecht: http://www.spiralgraphics.biz/gallery.htm

RLZ
2006-02-21, 12:03:50
Eigentlich bin ich der selben Meinung wie Coda.
Erkennen kann man die reinen prozeduralen Texturen immer.
Es gibt imo aber schon einige Anwendungsgebiete für prozedurale Texturen. Wasser und Wolken sind solche Beispiele.
Was mir auch oft gut gefällt sind Voronoi-basierten Texturen.
http://www.worley.com/media/examples/Cool/demon-2.jpg

Coda
2006-02-21, 12:04:45
Vll. bastle ich mal wieder ein paar. Ein paar von diesen hier sind jedoch auch schonmal nicht schlecht: http://www.spiralgraphics.biz/gallery.htmSo was hab ich mir gedacht. Ich find die wirklich furchtbar.

Spasstiger
2006-02-21, 16:06:14
So was hab ich mir gedacht. Ich find die wirklich furchtbar.

Man kanns auch übetreiben. Für ein Sci-Fi-Szenario ist folgende Textur jedenfalls wunderbar zu gebrauchen:
http://www.spiralgraphics.biz/images/gen2gallery/snake_skin.jpg

Für einen einfachen Marmorfußboden ist die Textur voll ausreichend:
http://www.spiralgraphics.biz/images/gen2gallery/green_granite.jpg

Und für Baumstämme kann man ruhigen Gewissens folgende Textur verwenden:
http://www.spiralgraphics.biz/images/gen2gallery/mossy_rock.jpg

Jedenfalls finde ich die Texturwüsten, die einem teilweise in aktuellen Spielen begegnen, schlimmer. Vor allem großflächige Muster in Outdoor-Szenen.

Coda
2006-02-21, 16:12:02
Woah. Ne echt ey. Schau dir mal ne vernünftige Holztextur in z.B. UT2004 an... Es sieht einfach verdammt künstlich aus, da fehlt die Unregelmäßigkeit.

Und wie gesagt, ich gehe die Wette immer noch mit jedem ein ;)

Trap
2006-02-21, 16:21:08
Prozedural erzeugte Landschaften funktionieren zumindest für offline-rendering schon ziemlich gut:
http://dmytry.pandromeda.com/mojoworld/view_img.php?name=snow_mountains_5c2_pp.jpg

Aquaschaf
2006-02-21, 16:24:15
Landschaften sind ja auch was ganz anderes als z.B. Bäume oder Charaktere.

Spasstiger
2006-02-21, 16:47:02
Welcher der beiden Äpfel wurde prozedural texturiert?

http://img494.imageshack.us/img494/7043/apfel2ri.jpg

Coda
2006-02-21, 17:03:55
Rechts.

RLZ
2006-02-21, 17:06:53
Prozedural erzeugte Landschaften funktionieren zumindest für offline-rendering schon ziemlich gut:
http://dmytry.pandromeda.com/mojoworld/view_img.php?name=snow_mountains_5c2_pp.jpg
Wie mans nimmt.
Ist Mojoworld in der Lage realistische Landschaften zu erzeugen?
Also keine einfach per Noise erzeugten Berge mit abgeschlossenen Tälern, sondern wirklich mit Tälern, die einen sinnvollen Verlauf mit "Abfluss" haben?

Coda
2006-02-21, 17:09:15
Ihr dürft mich nicht falsch verstehen, ich sage ja nur dass rein prozedurale Shader auf GPUs nicht wirklich toll aussehen. Wenn sie das sollen (wie der Apfel da, der wirklich recht gut aussieht) dann müssen die Programme wirklich sehr komplex sein und es würde sich niemals lohnen deswegen einen texture-fetch zu sparen.

Deshalb sage ich ja: Prozedural schön und gut, aber nur zusammen mit Ausgangsmaterial aus Texturen und Mischtechniken.

Spasstiger
2006-02-21, 17:13:00
Beim linken Apfel wurde definitiv mit einer prozeduralen Textur gearbeitet, das Bild stammt aus Folien eines Seminares über prozedurale Texturen (per Google gefunden).
Der rechte Apfel stammt aus einer Sammlung von Renderings und wurde vermutlich mit herkömlichen Texturen überzogen (in manchen der anderen Werke aus der Sammlung sind Texturwiederholungen zu erkennen).

Coda
2006-02-21, 17:17:15
Ich kenne das Tutorial zu dem rechten Apfel, das ist auch prozedural...

Aber das spielt auch keine Rolle, weil sowas auf einer GPU gar nicht möglich ist in diesem Ausmaß.

Trap
2006-02-21, 17:19:26
Ich benutz Mojoworld nicht, hab es nur zufällig gelesen und fand es ziemlich gut: http://www.gamedev.net/community/forums/topic.asp?topic_id=372113&PageSize=10&WhichPage=1

Ein anderes Bild dazu das ich recht gut fand:
http://www.renderosity.com/viewed.ez?galleryid=1037385&Start=1&Artist=Armands&ByArtist=Yes

Gibt es eigentlich mittlerweile Grafikkarten die eine noise Funktion anbieten? Texturen für Zufallszahlen sind nicht wirklich toll...

Coda
2006-02-21, 17:21:04
Die 3DLabs-Chips können das soweit ich weiß.

Mr. Lolman
2006-02-21, 18:18:04
Und, ist diese Felstextur deiner Meinung nach auch unbrauchbar?

http://666kb.com/i/117thqgv5hkap.jpg

aths
2006-02-21, 18:25:36
Auch dürfte es schwer fallen, jeden beliebigen Inhalt einer normalen Textur prozedural zu beschreiben.Hier gäbe es aber Möglichkeiten, "normale" Materialien synthetisch zu erzeugen. Die niederfrequenten Eigenschaften kann man per Koeffizienten speichern und rekonstruieren, der hochfrequente wird rein on the fly, aber bezogen auf die Texturkoordinate deterministisch erzeugt.

Eine Hauswand mit Fenstern prozedural zu erzeugen ist natürlich Unsinn, hier kommt man mit prozeduralen Texturen nicht weit, weil die Beschreibung aufwändiger wäre als einfach eine Textur zu nehmen. Man könnte die Mauerwand allerdings on the fly aus Tiles zusammensetzen. Einzelne Materialien lassen sich prozedural ganz gut beschreiben, nur dauert die Berechnung noch länger als der Texturzugriff.

Was ist mit Wasser(oberfläche), Himmel/Wolken, Lava...Dazu sollte ein Noise Generator (ein Zufallszahlengenerator) verfügbar sein, der allerdings deterministisch sein muss. Pro Frame soll sich die Wolke ja nicht (oder kaum) verändern.

Coda
2006-02-21, 18:28:24
Und, ist diese Felstextur deiner Meinung nach auch unbrauchbar?Ja. Im Gegensatz zu ner schönen aus HL² sieht das ziemlich erbärmlich aus.

aths
2006-02-21, 18:29:31
Dennoch sieht es einfach "künstlich" aus. Realistische Grafik wird man mit rein prozeduraler Technik einfach nicht erreichen.Aber sehr gut annähern.

Mr. Lolman
2006-02-21, 18:30:45
Ja. Im Gegensatz zu ner schönen aus HL² sieht das ziemlich erbärmlich aus.

Den Wet-effekt könnte per Specularmap realisieren. Die Vertiefungen per Normalmap und schon sieht die HL2 Textur im Ingame Vergleich ziemlich erbämrlich aus.

aths
2006-02-21, 18:33:00
Und, ist diese Felstextur deiner Meinung nach auch unbrauchbar?Nein, aber zu gleichmäßig für meinen Geschmack. Perlin Noise, was offenbar genutzt wurde, reicht alleine nicht. Man kann heute aber diverse prozedurale Ansätze nehmen, um die Details zu rendern. Ganze Landschaften oder Felsen realistisch auf prozeduralem Wege zu erzeugen benötigt noch weitere Forschung.

Mr. Lolman
2006-02-21, 18:38:08
Nein, aber zu gleichmäßig für meinen Geschmack. Perlin Noise, was offenbar genutzt wurde, reicht alleine nicht. Man kann heute aber diverse prozedurale Ansätze nehmen, um die Details zu rendern. Ganze Landschaften oder Felsen realistisch auf prozeduralem Wege zu erzeugen benötigt noch weitere Forschung.

Dafür ist sie tileable und schaut imo auch gekachelt nicht allzu mies aus. Wobei der Vorteil von prozedural erzeugten Texturen ja ist, dass sie nicht kachelbar sein müssen - nur groß genug.

aths
2006-02-21, 18:43:12
Ich gehe mit dir jede Wette ein dass ich jede rein prozedurale Textur sofort erkenne.Aber nicht unbedingt, weil sie schlechter als eine Foto-Textur sei. Vielleicht anders.

00ich
2006-02-21, 18:53:42
Hier gäbe es aber Möglichkeiten, "normale" Materialien synthetisch zu erzeugen. Die niederfrequenten Eigenschaften kann man per Koeffizienten speichern und rekonstruieren, der hochfrequente wird rein on the fly, aber bezogen auf die Texturkoordinate deterministisch erzeugt.


Also quasi Detailmaps per Pixelshader und die Basistextur eben als Textur?

aths
2006-02-21, 19:02:44
Also quasi Detailmaps per Pixelshader und die Basistextur eben als Textur?Schon etwa mehr als Detailmaps.

Die Sache ist, ganz allgemein, die: Im niederfrequenten Bereich brauchen feine Quantierung, dafür nimmt der Bereich aufgrund der wenigen benötigten Samples wenig Platz weg. Im hochfrequenten Bereich reicht auch gröbere Quantisierung. Hier ist wichtig, dass einige Paranmeter des Musters stimmen. Bei einer grob verputzten Hauswand gucken wir nicht, ob die einzelnen Riffel nun wirklich wie die Hauswand aussehen, die wir zuletzt in der Realität gesehen haben. Auf einer Wiese interessiert die Ausrichtung der einzelnen Grashalme nicht (es sei denn, sie wogt sich gerade im Wind.) Bei einer gerenderten Raufasertapete ist nur wichtig, dass die raue Oberfläche eine realistische Körnung und Verteilung aufweist und nicht, wo exakt die einzelnen Unebenheiten liegen.

Bei der Raufasertapete müsste man bei Verwendung von fertigen Texturen entweder mit Wiederholungen arbeiten, was auffallen kann, oder versuchen mittels Tiling die Wiederholungen zu verschleiern. Prozedurale Oberflächen können eine viel höhere Vielfalt gewährleisten.

Im allgemeinen sehen heutige prozedurale Materialien noch zu langweilig aus. Für Oberflächendetails ist das aber gut genug. Außerdem will der Artworker die für das Aussehen im großen und ganzen wohl noch lieber selbst verantwortlich sein. Aber man kann ihn davon entlasten sich darum zu kümmern, wie nun die einzelnen Texel des Materials aussehen.

Außerdem kann man prozedurale Texturen – sofern sie dafür vorgesehen sind – praktisch beliebig weit vergößern. Endlich hätte man im Vordergrund keine Texturunschärfe mehr.


Aber: Die PS2 ist z. B. auf prozedurale Geometrie ausgelegt. Genutzt wird das praktisch nirgends. Die Spiele nutzen durchweg im Modeller erstellte 3D-Objekte. Auch in Echtzeit berechnete prozedurale Texturen werden es (zunächst?) schwer haben.

Ich hatte das schon mal einen Schritt weitergedacht: Der Content (Spielwelten, bei Privateer/Freelancer Planeten, bei Rollenspielen die Landschaften) wird nur grob erstellt. Die Ausarbeitung der Details übernimmt der Computer. Es ist im Rollenspiel im verlassenen Kloster nicht unbedingt wichtig, wo genau der abgebrochene Kerzenhalter steht. Hauptsache, es sieht so aus wie ein verlassenes Kloster. Nur Quest-relevante Objekte sollten in ihrem Ort genau definiert sein.

Spasstiger
2006-02-21, 19:17:34
Ich hatte das schon mal einen Schritt weitergedacht: Der Content (Spielwelten, bei Privateer/Freelancer Planeten, bei Rollenspielen die Landschaften) wird nur grob erstellt. Die Ausarbeitung der Details übernimmt der Computer. Es ist im Rollenspiel im verlassenen Kloster nicht unbedingt wichtig, wo genau der abgebrochene Kerzenhalter steht. Hauptsache, es sieht so aus wie ein verlassenes Kloster. Nur Quest-relevante Objekte sollten in ihrem Ort genau definiert sein.

Gute Idee, nur wird sich das nicht mit dem Trend zum vernetzten Spielen nicht vereinbaren lassen. In World of Warcraft sollte beispielsweise für jeden alles am gleichen Fleck sein. ;)
Für Doom 3 habe ich aber schon Ansätze gesehen, die in deine Richtung gehen, z.b. eine Map, die während der Laufzeit erzeugt wird, dutzende Ebenen hat und wo bei jedem Betreten einer anderen Ebene die Gegner anders platziert werden. Allerdings sieht die Architektur bei jedem Spielen gleich aus. Trotzdem entfallen trotz der Spiellänge (die Map ist als kompletter Mod konzipiert) keine Ladezeiten an.
Es gibt auch eine Map für Doom 3, wo ein zufälliges Labyrinth erzeugt wird. Man kann die Anordnung zunächst aus der Vogelperspektive betrachen und an einer Konsole den Aufbau ändern lassen. Dann kann man runterhüpfen und selbst durchs Labyrinth laufen.

RLZ
2006-02-21, 19:26:35
Gute Idee, nur wird sich das nicht mit dem Trend zum vernetzten Spielen nicht vereinbaren lassen. In World of Warcraft sollte beispielsweise für jeden alles am gleichen Fleck sein. ;)
Wofür gibt es Pseudozufallszahlen? Die sind deterministisch, nur abhängig vom Startwert, wären damit auf allen Rechner gleich und bieten statistisch ein "weißeres" Rauschen als normale Zufallsgeneratoren.

Ich hatte das schon mal einen Schritt weitergedacht: Der Content (Spielwelten, bei Privateer/Freelancer Planeten, bei Rollenspielen die Landschaften) wird nur grob erstellt. Die Ausarbeitung der Details übernimmt der Computer.
Guckst du hier (http://www.gamedev.net/community/forums/topic.asp?topic_id=365210).
Pro Planet werden ein paar Parameter festgelegt. Der Rest wird komplett zur Laufzeit berechnet.

aths
2006-02-21, 22:17:44
Guckst du hier (http://www.gamedev.net/community/forums/topic.asp?topic_id=365210).
Pro Planet werden ein paar Parameter festgelegt. Der Rest wird komplett zur Laufzeit berechnet.Ja, und die Planeten sehen doof aus.

Auf wichtigen Planeten müsste man wichtige Sachen (Hauptstädte etc.) eh noch von Hand designen, abgelegene Bereiche könnten vollständig prozedural erzeugt werden. Da ist aber offenbar noch Forschung nötig.

ScottManDeath
2006-02-22, 00:05:27
Ja, und die Planeten sehen doof aus.

Auf wichtigen Planeten müsste man wichtige Sachen (Hauptstädte etc.) eh noch von Hand designen, abgelegene Bereiche könnten vollständig prozedural erzeugt werden. Da ist aber offenbar noch Forschung nötig.


IIRC gibts ein SIGRAPH paper (zw. 2000 und 2004) welches beschreibt, wie man Stadtpläne künstlich generieren kann. Die hatten dazu Statistiken verwendet (wie z.b. Bevölkerungsdichte, Büroflächen, Einkommen...) und darauf basierend Straßen generiert, Häuser... Manhattan sah nach deren Methode schon Manhattan like aus :)

Asmodeus
2006-02-22, 10:16:24
Mein Wissen um die Probleme bei "prozedural" beschriebenen Inhalten bezieht sich in erster Linie auf die Landschaftsgenerierung, dabei die Terraingenerierung mal ausgeklammert, da wurde ja schon einiges zu gesagt. Gerade bei der Erstellung von natürlich wirkenden Landschaften sollte es ja das Ziel sein, nur noch mit Attributen versehene Wachstumsbereiche vorzugeben, anstatt jede einzelne Pflanze "per Hand" zu setzen. Bei SpeedTree werden dafür ja zum Beispiel Dichtetexturen verwendet. Die Handhabung ist realtiv einfach und performant. Der entscheidende Nachteil ist jedoch die Größe der Textur. Je feiner die Bepflanzung aufgelöst sein soll, um so größer muss die Textur sein. Außerdem verbrauchen Leerstellen in einer Textur genauso viel Platz wie belegte Stellen. Ideal wären Bepflanzungspolygone, die z.B. in GIS sowieso schon verwendet werden. Der Nachteil davon ist dann wieder der Berechnungsaufwand zur Laufzeit. Ein "Punkt in Polygon"-Test ist nun mal mit etwas Aufwand verbunden und wenn man das für 100.000 Punkte pro Frame machen will, und am liebsten noch mit über 30 FPS, dann wird es schon eng. Es fehlt in vielen Anwendungsfällen schlicht einfach die notwendige Rechenpower um heute schon prozedurale Ansätze großflächig einzusetzen. Sie müssen aber in Zukunft kommen, denn schon heute ist z.B. Leveldesign und Modellierung sicher am aufwendigsten und kostspieligsten.

Gruss, Carsten.

svenw
2006-02-22, 11:01:56
Ich kann Asmodeus nur zustimmen: vorgerechnete prozeduale texturen können die Grafiker stark entlasten. Holztisch modelliert, Ein Paar angaben über die FAserrichtung und das Prog batscht täuschend echt aussehende Texturen auf den Tisch. Gleiches auch für z.B. Gesichter. Ein paar Regler für die Hauteigenschaften und der Compi erledigt den rest. Je nach einstllungen hat man eben Akne-Face oder Claudia Schiffer. Nur muß der Grafiker dann nicht hinter jeder einzelnen Falte her sein.

Gmax
2006-07-15, 21:22:13
Hey, bin gerade über diesen Artikel gestolpert:

Games that never age - The Unrecognized Potential of Procedural Synthesis (http://nintendo.about.com/library/procedural/blprocedural1.htm)

zappenduster
2006-07-16, 19:42:22
prozedurale texturen bieten doch aber auch den vorteil das ihre aufloesung quasi beliebig hoch ist man kann also zb. an eine wand beliebig nahe herangehen ohne das sie sich in pixel aufloest (wobei das problem mit den immer groesseren mengen an speicher auf den grafikkarten eh hinfaellig wird)

ich meine mich auch erinnern zu koennen das in black and white fuer die bodentextur mit prozeduralen texturen experimentiert wurde wie weit die aber wirklich im spiel vorhanden waren keine ahnung mehr

StefanV
2006-07-16, 20:34:09
Spasstiger[/POST]']Ich hab eben mal kkrieger getestet. Aus 96 kb werden beim Ausführen rund 280 MB im Ram.
Die Grafikspeicherauslastung ist auch ordentlich. Die 128 MB auf meiner Karte waren komplett voll, an Texturspeicher wurde insgesamt rund 130 MB verwendet (von 370 MB noch 240 MB frei).

Die Texturen finde ich allerdings beachtlich dafür, dass sie nur per Code erzeugt wurden. Einige Holztexturen sehen verdächtig prozedural aus und dafür auch noch verdammt gut:
http://img48.imageshack.us/img48/4491/pno000101ql.th.jpg (http://img48.imageshack.us/my.php?image=pno000101ql.jpg) http://img48.imageshack.us/img48/8307/pno000120vv.th.jpg (http://img48.imageshack.us/my.php?image=pno000120vv.jpg)
Die anderen Texturen wiederholen sich zwar ganz offensichtlich, wissen aber trotzdem durch ihre gute Auflösung zu überzeugen:
http://img48.imageshack.us/img48/65/pno000115cz.th.jpg (http://img48.imageshack.us/my.php?image=pno000115cz.jpg) http://img48.imageshack.us/img48/5341/pno000134ke.th.jpg (http://img48.imageshack.us/my.php?image=pno000134ke.jpg) http://img48.imageshack.us/img48/7880/pno000145tm.th.jpg (http://img48.imageshack.us/my.php?image=pno000145tm.jpg) http://img48.imageshack.us/img48/8382/pno000155ry.th.jpg (http://img48.imageshack.us/my.php?image=pno000155ry.jpg)
Auch die Waffen sind stets unterschiedlich texturiert:
http://img48.imageshack.us/img48/3020/pno000166xi.th.jpg (http://img48.imageshack.us/my.php?image=pno000166xi.jpg)

Ich weiß natürlich, dass diese Texturen mit prozeduralen Texturen im eigentlichen Sinne nur wenig zu tun haben, da sie viel zu viel Speicher wegfressen.

P.S.: Alle Bilder ohne AA und AF, ich hoffe, ihr könnt mir das verzeihen. ;)
Naja, ich weiß nicht, ich find das schaut ziemlich scheiße aus :|

So eine bescheidene Umgebung hab ich schon seit Jahren nicht mehr gesehen, das erinnert mich irgendwie wieder an die Zeit, als das 3D Zeitalter gerade erst begonnen hat...

Die Details sind ja schön und gut aber das ganze schaut irgendwie nicht wirklich realistisch aus, da kann man auch nicht wirklich viel dran ändern, außer man nimmt 'echte' Texturen...

aevil
2006-07-16, 20:56:27
StefanV[/POST]']Naja, ich weiß nicht, ich find das schaut ziemlich scheiße aus :|

So eine bescheidene Umgebung hab ich schon seit Jahren nicht mehr gesehen, das erinnert mich irgendwie wieder an die Zeit, als das 3D Zeitalter gerade erst begonnen hat...

Die Details sind ja schön und gut aber das ganze schaut irgendwie nicht wirklich realistisch aus, da kann man auch nicht wirklich viel dran ändern, außer man nimmt 'echte' Texturen...
der Gag ist doch das es aus 96kb erzeugt wird ;)
Das Platz-Aussehen Verhältnis überbietet kein Spiel und kein vorgezeichnetes Demo.

Aquaschaf
2006-07-16, 21:19:01
Aus der Sicht ist sieht es natürlich gut aus, aber andererseits ist Speicherplatz zur Genüge vorhanden :)

aths
2006-07-17, 11:02:19
zappenduster[/POST]']prozedurale texturen bieten doch aber auch den vorteil das ihre aufloesung quasi beliebig hoch ist man kann also zb. an eine wand beliebig nahe herangehen ohne das sie sich in pixel aufloest (wobei das problem mit den immer groesseren mengen an speicher auf den grafikkarten eh hinfaellig wird)

ich meine mich auch erinnern zu koennen das in black and white fuer die bodentextur mit prozeduralen texturen experimentiert wurde wie weit die aber wirklich im spiel vorhanden waren keine ahnung mehrDas mit der Auflösung ist nicht grundsätzlich der Fall – vielleicht verhindert man ein sich auflösen in Texel, aber neue Details gibts nicht unbedingt. Das hängt vom konkreten Shader ab. Mit SM 3 ist es aber möglich, "adaptives Detailmapping" zu gestalten.


Aquaschaf[/POST]']Aus der Sicht ist sieht es natürlich gut aus, aber andererseits ist Speicherplatz zur Genüge vorhanden :)Wenn du einen Marmorkachelboden mit lauter individuellen Marmorkacheln texturieren willst, gelangst du schnell an die Grenzen. Nun ist die Frage, was kostet so ein Material – 50 Takte? 70? Gar 100? Eine Textur kostet selbst bei guter Filterung im Schnitt vielleicht 4-8 Takte. Da kann man mit Pixelshader-Support gewisse Sachen unternehmen, um Wiederholungen in ihrer Sichtbarkeit zu reduzieren, was im Endeffekt günstiger als echte Material-Shader kommen dürfte. .kkrieger rendert ja auch die Texturen in den Speicher vor und nutzt keine Material-Shader. Trotzdem bleibe ich stur dabei, dass Material Shader in der Zukunft an Bedeutung gewinnen (Kunststück, da die Bedeutung im Moment Null ist.)

Aquaschaf
2006-07-17, 12:26:07
Wenn Wiederholungen auf dem Marmorboden einem Spieler auffallen ist das Spiel wahrscheinlich ziemlich langweilig ;) Aber sicher gibt es Situationen in denen die Technik praktisch ist.

aths
2006-07-17, 13:08:08
Aquaschaf[/POST]']Wenn Wiederholungen auf dem Marmorboden einem Spieler auffallen ist das Spiel wahrscheinlich ziemlich langweilig ;)Das Argument halte ich für vorgeschoben. Ich spiele z. B. GT4 trotz heftiger Texturwiederholung. Man kann es spielen. Es wäre aber schöner, wenn es keine wahrnehmbare Texturwiederholung gäbe. Texturspiegelungen z. B. sind, wenn man sie einmal entdeckt hat, nicht mehr aus dem Wahrnehmungsfokus zu bekommen. Auch in Max Payne 2 und natürlich Half-Life 2 finde ich die Texturwiederholungen nervig.

Monger
2006-10-10, 17:48:20
Also, für Details (Kratzer, Schmutzflecken, Staub etc.) auf einer Oberfläche könnte ich mir prozedurale Texturen schon vorstellen. Eine der interessantesten Anwendungen die man halt mit konventionellen Texturen gar nicht hinkriegt, ist eine Neutexturierung zur Laufzeit, z.B. zum künstlichen Altern einer Umgebung.

Aber ich fürchte, dem sind Grenzen gesetzt. Nicht alles ist regelmäßig, und ist trotzdem nicht unstrukturiert. Ein menschliches Gesicht z.B. setzt sich aus sehr unterschiedlichen Hauttönen zusammen. Mag sein dass man auf Basis der Knochen ein realistisch wirkendes Gesicht modellieren könnte (Blutgefäße unter der Haut simulieren, dann Haut künstlich altern lassen...), aber sowas nimmt dem Künstler wahrscheinlich wieder zu viel Kontrolle aus der Hand.

Der Trend geht ganz klar Richtung generische Inhalte, logisch. Aber da werden sich imho mittelfristig Mischformen durchsetzen. Manchmal ist es doch besser, wenn der Künstler nochmal mit dem Pinsel nachhelfen kann.

tokugawa
2006-10-10, 18:03:57
Also, für Details (Kratzer, Schmutzflecken, Staub etc.) auf einer Oberfläche könnte ich mir prozedurale Texturen schon vorstellen. Eine der interessantesten Anwendungen die man halt mit konventionellen Texturen gar nicht hinkriegt, ist eine Neutexturierung zur Laufzeit, z.B. zum künstlichen Altern einer Umgebung.

Aber ich fürchte, dem sind Grenzen gesetzt. Nicht alles ist regelmäßig, und ist trotzdem nicht unstrukturiert. Ein menschliches Gesicht z.B. setzt sich aus sehr unterschiedlichen Hauttönen zusammen. Mag sein dass man auf Basis der Knochen ein realistisch wirkendes Gesicht modellieren könnte (Blutgefäße unter der Haut simulieren, dann Haut künstlich altern lassen...), aber sowas nimmt dem Künstler wahrscheinlich wieder zu viel Kontrolle aus der Hand.

Der Trend geht ganz klar Richtung generische Inhalte, logisch. Aber da werden sich imho mittelfristig Mischformen durchsetzen. Manchmal ist es doch besser, wenn der Künstler nochmal mit dem Pinsel nachhelfen kann.

Genau meine Meinung.

Realismus in allen Ehren, allerdings vermisse ich bei der aktuellen CG-Forschung (nicht nur in der Echtzeitgrafik, sogar noch etwas mehr in der Offline-Photorealistischen Computergrafik) etwas, den Content Creator im Auge zu behalten, der das Zeug dann einsetzen will.

Wenn man tolle Algorithmen für Oberflächensimulation und -berechnung entwickelt, oder etwa physikalische Modelle für Skydome Rendering, und Wolkenbildung, usw., darf man nicht vergessen dass dabei ein gewisser kreativer Freiraum bleiben sollte - es sollte auch unrealistisch gehen, wenn das der Künstler so will.

Ich jedenfalls habe den x-ten Shooter mit dem generischen amerikanischen Proleten-Soldaten mit dicken Muskeln in generischer Rüstung ziemlich satt (sorry, habe vor kurzem die God of War Screenshots gesehen und mußte meinen Brechreiz wirklich zurückhalten).

Spasstiger
2006-10-10, 18:08:49
Wie ist das eigentlich bei der Wasserdarstellung, wird da immer noch mit Texturen gearbeitet (wie z.B. auch in HL2)? Wasser wäre ja so ein Bereich, wo man prozedurale Verfahren ideal einsetzen kann, oder?

AnarchX
2006-10-10, 18:13:08
Wie ist das eigentlich bei der Wasserdarstellung, wird da immer noch mit Texturen gearbeitet (wie z.B. auch in HL2)? Wasser wäre ja so ein Bereich, wo man prozedurale Verfahren ideal einsetzen kann, oder?

Etwas anderes als einen Shader wird man wohl heute kaum noch für Wasser einsetzen wollen...;)

tokugawa
2006-10-10, 18:26:29
Etwas anderes als einen Shader wird man wohl heute kaum noch für Wasser einsetzen wollen...;)

Texturen werden trotzdem verwendet. Schließt sich ja nicht mit einem Shader aus.

Texturen speichern ja nicht nur Bilder, die direkt so raufgeklatscht werden, sondern können auch einfach nur "Werte" speichern (etwa eine Wave-Map für dynamische Wellen, oder eine Perturbations-Map).

Also ja: Wassershader verwenden nach wie vor Texturen für diversestes. Irgendwo muß ja die Reflektion der Umgebung auch herkommen, das ist meistens die Szene in eine Textur gerendert, die dann im Wassershader verwendet wird.

100% prozedurales (bzw. analytisch definiertes) Wasser (speziell die, die ins unendliche "seamless" sind), ... ein Kollege von mir versucht grad eine Diplomarbeit/Paper für diesen Bereich zu machen, da gibt's einige schwere mathematische Probleme, die noch nicht gelöst sind. So einfach ist das nicht. Aber selbst dann muß ja die Reflektion der Umgebung irgendwie auf das Wasser kommen, das geschieht wohl durch nichts anderes als eine Textur.

Mastermind
2006-10-10, 18:50:42
Texturen werden trotzdem verwendet. Schließt sich ja nicht mit einem Shader aus.

Texturen speichern ja nicht nur Bilder, die direkt so raufgeklatscht werden, sondern können auch einfach nur "Werte" speichern (etwa eine Wave-Map für dynamische Wellen, oder eine Perturbations-Map).

Also ja: Wassershader verwenden nach wie vor Texturen für diversestes. Irgendwo muß ja die Reflektion der Umgebung auch herkommen, das ist meistens die Szene in eine Textur gerendert, die dann im Wassershader verwendet wird.

100% prozedurales (bzw. analytisch definiertes) Wasser (speziell die, die ins unendliche "seamless" sind), ... ein Kollege von mir versucht grad eine Diplomarbeit/Paper für diesen Bereich zu machen, da gibt's einige schwere mathematische Probleme, die noch nicht gelöst sind. So einfach ist das nicht. Aber selbst dann muß ja die Reflektion der Umgebung irgendwie auf das Wasser kommen, das geschieht wohl durch nichts anderes als eine Textur.
Die Texturen für Reflexionen ließen sich aber mit RayTracing umgehen. :D

ScottManDeath
2006-10-11, 00:50:28
Wir hatten letzens an der Uni ein paar Pixar Leute da, die bischen erzählt haben:

Cars war der erste Pixar Film, der nicht ausschließlich gerastert wurde. Zum ersten mal haben sie für Reflexionen und Ambient Occlusion zusätzlich Raytracing eingesetzt, während der Rest weiterhin gerastert wurden. Sie meinten dass das nicht ganz einfach gewesen ist...

Für Dreck & co nutzen sie hybride Techniken, zum einen prozedurale Texturen, aber auch das Aufbringen von Dreckspuren, Kratzern... per Hand

tokugawa
2006-10-11, 07:56:15
Die Texturen für Reflexionen ließen sich aber mit RayTracing umgehen. :D

Aber selbst GPU-Raytracing verwendet oft (Float-)Texturen, um die Zwischenergebnisse zu speichern.

Gast
2006-10-15, 21:38:38
Wie sieht es denn bei animiertem Texturinhalt aus gibt es dabei Vorteile ?

up¦²
2006-11-10, 04:24:51
Das ist doch erstaunlich :rolleyes:

We recently published a widely debated news story about one company's claim that its new texturing process will make games 70% smaller. That company is called Allegorithmic and the technology the guys there are developing is designed to keep texture quality standards as high as they are now, whilst making the size of the texture files 90% smaller. The key to all this? A little thing called procedural textures.
http://www.bit-tech.net/gaming/2006/11/09/Procedural_Textures_Future_Gam/1.html

Roboblitz (http://www.roboblitz.com/HTML_SITE/gallery/gallery_gs.shtml) wird ja bissel belächelt als Bonzai-verschnitt der UE3, aber: es ist nunmal das erste (seit gestern!) releasde Spiel damit, Demo leider nicht da, aber das Spiel wird wohl auch kaum grösser sein :biggrin: teuerist es neben bei auch nicht.

Hier nochmal der Artikel auf den verwiesen wird:
http://www.bit-tech.net/news/2006/10/04/Game_file_sizes_could_soon_be_70_smaller/

PS:
Sorry, es gibt ein Roboblitz-Demo und einen Fred dazu im 3dcf:
http://www.forum-3dcenter.org/vbulletin/showthread.php?t=331750

micki@work
2006-11-10, 16:16:47
ich glaube dafuer gab es schon nen extra thread.