531. GPU Raytracing
- < Vorheriges Bild
- 531. GPU Raytracing
- Nächstes Bild >
von Noobody
Gepostet am Freitag, 19. Februar 2010
Du musst eingeloggt sein, um eine Bewertung abgeben zu können.
Nach Kauf eines neuen Computers reizte es mich, die Grafikkarte ein wenig auszureizen und schrieb kurzerhand einen GLSL-Shader, der per Raymarching beliebige Funktionen rendern kann. Dank Shader Model 4.0 ist Integer-Arithmetik nun auch auf der Grafikkarte verfügbar, was es mir ermöglichte, eine Implementation von Perlin Noise/FBM zu schreiben. In Normalsprache heisst das, dass von den Wolken bis zum Terrain alles prozedural generiert ist. Man könnte sich also unendlich in alle Richtungen bewegen und käme trotzdem nicht an eine Stelle, die einer anderen ähnelt.
Die Normalen sind teilweise ein wenig verkorkst, was daran liegt, dass ich nicht fähig war, die Ableitung von der verwendeten Funktion zu bilden. Für gewöhnliche Brownsche Bewegung ist die Ableitung schnell gefunden, aber ich baute hier eine Variante ein, um Erosion zu simulieren. Sieht ganz schick aus, aber ist unmöglich abzuleiten. Darum sind im Bild manche Stellen schwarz, die es eigentlich nicht sein sollten, aber seis drum
Renderzeit ca. 18 Minuten bei einer Auflösung von 2048x1563, einem Primärstrahl und einem Schattenstrahl (Strahlenschrittweite jeweils 0.0001), Camerarange ca. 70 Einheiten und 12 Noise-Iterationen. Kurz: Tonnenweise Berechnungen. Da die GPU aber unübertreffbar bei parallelisierbaren Prozessen ist, ist es trotzdem noch vergleichsweise schnell.
Der Fragmentshader ist hier zu finden.
Die Normalen sind teilweise ein wenig verkorkst, was daran liegt, dass ich nicht fähig war, die Ableitung von der verwendeten Funktion zu bilden. Für gewöhnliche Brownsche Bewegung ist die Ableitung schnell gefunden, aber ich baute hier eine Variante ein, um Erosion zu simulieren. Sieht ganz schick aus, aber ist unmöglich abzuleiten. Darum sind im Bild manche Stellen schwarz, die es eigentlich nicht sein sollten, aber seis drum

Renderzeit ca. 18 Minuten bei einer Auflösung von 2048x1563, einem Primärstrahl und einem Schattenstrahl (Strahlenschrittweite jeweils 0.0001), Camerarange ca. 70 Einheiten und 12 Noise-Iterationen. Kurz: Tonnenweise Berechnungen. Da die GPU aber unübertreffbar bei parallelisierbaren Prozessen ist, ist es trotzdem noch vergleichsweise schnell.
Der Fragmentshader ist hier zu finden.
- < Vorheriges Bild
- 531. GPU Raytracing
- Nächstes Bild >
Kommentare
- « ‹ 1, 2
Sehr geil ! und ich beneide Dich um Dein GLSL 4.0 !

(Freitag, 19. Februar 2010 um 06:24 Uhr)
Von vanjolo
WOW Noobody,
ich versteh zwar nur 10% von dem was du erklärt hast aber es sieht trotzem toll aus - 5 Punkte von mir.
Einen Wunsch hätte ich trotzdem - Mach dein Voxelterrain Spieletauglich.
LG
Van
ich versteh zwar nur 10% von dem was du erklärt hast aber es sieht trotzem toll aus - 5 Punkte von mir.
Einen Wunsch hätte ich trotzdem - Mach dein Voxelterrain Spieletauglich.
LG
Van
Von N/A