Generating 3 D4 D Fractals Aaron Chad Gabe
Generating 3 D/4 D Fractals Aaron, Chad, Gabe
Schedule • Quaternion Fractals Background Ray marching much faster Generating normal Casting shadows Ambient occlusion Reflections Pretty pictures • 3 D Fractal Flames Developing the algorithm Plotting the point cloud Pretty pictures
Quaternions - Background •
Quaternions - Background •
Quaternions – Ray Marching •
Quaternions – Ray Marching • Problems: This will either be very slow, or very ugly • It would be much better if we didn’t march along the ray in such small increments until we’re near the fractal
Quaternions – Distance Estimator •
Quaternions – Distance Estimator • Keep iterating until the distance is smaller than some epsilon
Quaternions – Distance Estimator •
Quaternions – Ray Marching •
Quaternion – Height Map
Quaternion – Normals • We estimate normal by computing the gradient across each pixel Take the derivative in the x direction, y direction, then cross them • Super sampling normals to reduce noise
Quaternion – Normals
Quaternion – Lights
Quaternion – Shadows
Quaternion – Ambient Occlusion
Quaternion – Colors
Quaternion – Putting it all together
Quaternion – Putting it all together
Quaternion – Putting it all together
Quaternion – Putting it all together
Quaternion – Putting it all together
Quaternion – Putting in the Cornell Box
Quaternion – Putting in the Cornell Box
Quaternion – Putting in the Cornell Box
Quaternion – Putting in the Cornell Box
Quaternion – Reflections at 100%
Quaternion – Reflections at 50%
Quaternion – Reflections at 50%
Timing information – Single Thread 512 x 512 (1 SS) 512 x 512 (64 SS) 1080 x 1080 (64 SS) Height map 0. 51 33. 69 s 149. 38 Normals 0. 07 s 4. 36 s 19. 48 Normals + Reflections 0. 08 s 5. 11 22. 28 All timing information collected on SNB-E 4 Ghz Processor
Fractal Flame 3 D • Iterated Function System, created by tacking on a third dimension to the original Fractal Flame algorithm • We had to create our own 3 D variation functions that looked good
Fractal Flame 3 D – Generation Process p = (0, 0, 0) generate camera locations for each frame Do forever: Apply a random affine transform Apply the variation functions For each frame Map the point to the frame’s perspective Plot the point To save images: Apply super sampling algorithm to reduce noise Apply log density scaling
Do you buffer the points on disk? Point source Max points/second SATA 3 31, 240, 000 1 SNB-E 4 GHz core 75, 800, 000
Fractal Flame 3 D
Fractal Flame 3 D
Fractal Flame 3 D
Fractal Flame 3 D
Thanks! • Questions
- Slides: 38