Interactive Terrain Synthesis Image Synthesis Interactive Terrain Synthesis
Fractal Terrain Synthesis Goals: Generation of fractal terrain Non-repetitive, infinite extent Interactive frame rates Real-time editable Methods Rescale & Add on GPU
Fractal terrain synthesis Stochastic Fractals „Statistical“ Self-Similarity (Stochastic Fractals) If blown up in scale, any part appears statistically similar to the whole Simulation of Fractal Brownian motion (FBm) Movement of small particles of solid matter in liquid Probability as a tool for modelling Modelling of (dynamic) natural phenomena Terrains, clouds, water etc. Modelling and rendering of solid textures Marble, wood etc. Procedural shaders
Rescale-and-Add Noise synthesis by point evaluation Summation of scaled and dilated noise functions
Rescale-and-Add Add weighted noise octaves to simulate 1/f-noise 1/f noise: as frequency increases, amplitude decreases 25 24 23 22 21 20
Rescale-and-Add Another method to simulate 1/f-noise = Generate noisy copies on-the-fly from a base random texture 20 21 22 = • • • 23 24
Rescale-and-Add H(x,y): synthesized height field F(x,y): basis function n: number of octaves
Rescale And Add Basis function(s) F: Filtered white noise, Perlin noise, images, … Affects basic appearance of terrain Reformulation yields more intuitive parameters: r: roughness l: lacunarity (fractal gap) o: octaves
Rescale And Add - Parameters Roughness r
Rescale And Add - Parameters Lacunarity l
Rescale And Add - Parameters Octaves o
Multifractals and other tricks… Substitute basis function by convex combination: with and More editing possibilities, more realism Add low frequency base geometry Edit basic terrain via base geometry Edit appearance via basis functions Close to spatial and frequency domain editing paradigm Use „odd“ lacunarity / roughness like 2.173482... breaks up repetitions
Rotations & Translations Warp domain with pseudo-random rotations: Substitutes height field H(x,y) H( Rot(x,y)+T(x,y) ) Some basic math involved. Key ideas: Rotation and Translation depend on octave Levels are warped against each other Rotation and Translation depend on roughness Emphasize or de-emphasize high roughness Avoid sine / cosine computations Rotation expressed via unit vector (no explicit angle) Entries are treated as cos(),sin()
Rotations & Translations
Domain Warping
GPU Implementation Tileable textures Basis functions Weights for multifractal Low frequency basis height field Final height field
Demo
Conclusion Terrain visualization: Terrain Synthesis: Major challenge: data volume GPU-friendly compression beyond S3TC needed GPU-friendly geometry compression needed In research… Terrain Synthesis: So far, can achieve ~30fps Faster soon due to improved vertex texture fetches Powerful, interactive WYSIWYG editing tools Editing of basis functions makes sense, now Future direction: fractal geotypical texture synthesis Anti-aliasing for some cases still hard