Nvidia FlameWorks mit dreidimensionalen Voxeln: Beeindruckende Simulation von Flammen und Rauch
Zur realistischen Berechnung von Feuer bietet Nvidia Spielentwicklern FlameWorks an, eine weitere Komponente des Spieleffektbaukastens GameWorks. Auf der GPU Technology Conference 2014 gaben uns zwei Nvidia-Programmierer einen tiefen Einblick in das System.
Auf der GDC 2014 durften wir Mitte März bereits anschauen, wie Menschen und Monster in "The Witcher 3" mit Hilfe von Nvidias HairWorks-Tool Haare und Fell verpasst bekommen. Auf der GPU Technology Conference 2014 gab uns Nvidia einen Einblick in das FlameWorks-Tool, das auf dreidimensionale Voxel statt auf Pixel setzt.
FlameWorks = Simulation + Renderer
"FlameWorks kombiniert eine rasterbasierte Strömungssimulation und einen qualitativ hochwertigen Volumenrenderer", sagt Simon Green, Grafikprogrammierer bei Nvidia. Er und seine Kollegen wollten ein von Offline-Renderern wie Maya Fluids oder Houdini Pyro inspiriertes Echtzeit-Tool entwickeln. Die Strömungssimulation, deren Ergebnisse dann vom Renderer dargestellt werden, basiert auf einem gerasterten Strömungsfeld, das mit Hilfe der MacCormack genannten Methode berechnet wird. Diese Methode besitzt eine Art eingebaute Fehlerkorrektur, die dafür sorgt, dass das brennende Fluid nicht zu "glatt" erscheint, sondern kleine Wirbel und Strömungsvarianzen weiterhin sichtbar sind. Ebenfalls wichtig: Der auf Wunsch auch bewegliche Austrittspunkt der Strömung. In der schon letzte Woche kurz gezeigten Demo eines feuerspuckenden Drachens ist das natürlich sein Maul, doch es kann sich genauso gut um die Düse eines Feuerzeuges oder eine Kanonenmündung handeln. Nach der eigentlichen Verbrennungs- und Strömungsberechnung kommt der Volumenrenderer an die Reihe.
Unser Feuer soll schöner werden
Er besitzt zahlreiche Features, um die erhaltenen Daten aufzuwerten. An erster Stelle steht das Color Mapping, denn die Simulation enthält keine Farbwerte. Die Flamme kann entweder mit physikalisch korrekten Farben, mit einer Feuertextur oder mit komplett eigenen Farben versehen werden - etwa ein kühles Blau für einen Feuerstoß aus dem Maul des Drachen, das auf dessen magische Eigenschaften hinweisen. Mit Hitzeflimmern, zahlreichen Filtermodi, volumetrischen Schatten und angenäherter Volumenstreuung, die rauchenden Verbrennungsprozessen mehr Realismus verleihen, lässt sich die Flamme zusätzlich verschönern, die sich zudem in Objekten der Szene widerspiegelt.
Größere Voxel, größere Simulationsdauer
FlameWorks läuft momentan ausschließlich unter DirectX 11, doch es ist davon auszugehen, dass Nvidia das GameWorks-Paket für DirectX 12 flott macht. Doch das erscheint erst Ende nächsten Jahres, sodass vielleicht in der Zwischenzeit eine laut Simon Green "denkbare Unterstützung von OpenGL" entwickelt wird. Die Demos, die wir zu Gesicht bekommen, laufen auf einer GeForce GTX Titan, die zur Berechnung von 256.000 64 x 64 x 64 Pixel (x, y, z = 64) großen Voxeln eine Millisekunde benötigt. Vergrößern sich die Voxel auf 128 mal 128 mal 128, ist die Karte 5,1 Sekunden beschäftigt. Nach erneuter Verdopplung auf 256 x 256 x 256 braucht die Karte satte 40 Sekunden - definitiv nicht mehr spieltauglich.
In angeblichen "Next-Gen"-Spielen wird das Feuer ohne FlameWorks auch in 5 Jahren noch weiterhin aus 2-D-Textur-layer bestehen, die sich mit der Kamerasicht mitdrehen, ich weiß es doch...