Fractals/Computer graphic techniques/3D
Rendering
edit API ( C++, JS ...)
 Backends (Renderer BackEnd Architecture):
 OpenGL 4.1+ for Linux, macOS and Windows
 OpenGL ES 3.0+ for Android and iOS
 Metal for macOS and iOS
 Vulkan 1.0 for Android, Linux, macOS, and Windows
 WebGL 2.0 for all platforms
Rendering
 imageorder rendering ( CPUbased ray tracing )
 objectorder rendering ( GPUbased rendering. Faster since we can apply the same instructions, but on different vertices in parallel.)
"A single frame in Toy story 4 could take anywhere between 60 to 160 hours to render using CPU based ray tracing."Brendan Galea The Math behind (most) 3D games  Perspective Projection by Brendan Galea
Elements
edit mesh
 texture ( map )
 geometric transform
 pipline
3D graphics have more in common with vector graphics than with raster graphics. The content of an image is specified as a list of geometric objects. The technique is referred to as geometric modeling.
Rendering the scene = creating 2D image of 3D object/world^{[1]}
Light and shadow
edit3d still images
editThe task of a 3D graphics program is to turn the specification of a 3D environment to 2D pictures. ^{[2]}
There are two ways to generate such pictures:
 realtime rendering (interactive graphics applications such as video games or simulations)
 nonrealtime rendering ( noninteractive graphics applications such as film).
Programming languages for host programs ( CPU) using API
 C
 C++
Special APIs
 OpenGL
 WebGl
 Direct3D
 Vulkan
 OpenCl
 CUDA
programming languages for shader programs ( GPU)
 GLSL ( OpenGl)
 HLSL ( DirectX)
 Cg (NVIDIA's shading language)
Pipeline or workflow
editThe 3D pipeline contains:
 a hardware pipeline ( main memory, CPU, a PCI Express bus, GPU, and GPU memory)
 a software pipeline
software pipelines:
 Host program on CPU ( The 3D programs that run on the CPU )
 Shader programs on GPU ( The bulk of the 3D data processing )
The job of the host program includes :
 Initialization
 Set up or reconfigure the 3D software pipeline
 Build shader programs
 Transfer shader programs to GPU
 Data management
 Load 3D data
 Process the 3D data
 Update 3D data
 Transfer the 3D data to GPU
 Send commands to GPU
 Process user inputs and update the 3D data
Shader programs:
 vertex shaders
 fragment shaders
 geometry shaders
Each APi has it's own pipeline

Pipeline OpenGL 1.0

Pipeline D3D11

Pipeline D3D 10
mesh
edit MeshLab  the open source system for processing and editing 3D triangular meshes.
It provides a set of tools for editing, cleaning, healing, inspecting, rendering, texturing and converting meshes. It offers features for processing raw data produced by 3D digitization tools/devices and for preparing models for 3D printing.
Converting 2D images to 3D
edit 2D fractals mapped onto a Riemann sphere
For height of each pixel one can use :
 distance to boundary : "I'm using the distance estimate method (DEM) as the basis of my height values. (inverted, the log, scaled and streched, etc.)" Duncan C ^{[3]}
 fractional iteration values ^{[4]}
3D to 2D
edit project the points in 3D space into cylindrical surface that can be unwrapped, to a flat surface^{[5]}
video or animation made from 2D images
editWhat is the difference between video and animation ?
Software used to do the conversion :
 answer on fractal forum^{[6]}
 commons help
parameter plane
editOne can make videos using :
 going along some paths on parameter plane ( for example internal and external rays )
 Poincaré halfplane metric for zoom animation^{[7]}
 zoom into parameter plane^{[8]}^{[9]}^{[10]} using automatic determination of Iteration Max number^{[11]}
 changing coloring scheme ( for example color cycling  Fractint)
 changing some parameters of algorithm, for example :
 maximal iteration of escape time algorithm
 bailout value ^{[12]}
path
edit straight line from c=0.75+i to c=0.75i. It is mostly in the exterior of Mandelbrot set ( then Julia set is disconnected with no interior). There is only one point c=0.75 where c belongs to the boundary of Mandelbrot set ( root point between period 1 and 2 hyperbolic components). In that point Julia set has interior ( parabolic ).^{[13]}
 from c=2 to c=1.65 ( real slice of Mandelbrot set ) ^{[14]}
 around a circle centred at 1 and with a radius of 0.25
 around main cardioid ^{[15]}
 parameter traces a circle centred at 0.29848658+0.65843271i and with a radius of 0.004. On the parameter plane, this does a circle around a point of the Mandelbrot fractal that is radiating 11 strands in a very loose spiral.^{[16]}
 races a circle centred at 1.57621921451761 and with a radius of 3.6 x 10^10. On the parameter plane, this does a circle around a minibrot at that location without passing through the minibrot itself.^{[17]}
References
edit ↑ An Introduction_to_Computer_Graphics by David J. Eck
 ↑ Advanced Graphics Algorithms by Professor Ying Zhu
 ↑ Duncanc Champney at fractalforums
 ↑ 3D plot with fractional iteration values by Duncan Champney
 ↑ ronny restrepo blog : Lidar Data to 2D
 ↑ answer on fractal forum
 ↑ Poincaré halfplane metric for zoom animation by Claude HeilandAllen
 ↑ Really Deep Fractal Zoom Movie – Much Faster by Bruce Dawson
 ↑ Making Mandelbrot Set Movies by Tony Finch
 ↑ MLbrot by Daniel de Rauglaud
 ↑ Discussion : A way to determine the ideal number of maximum iterations for an arbitrary zoom level in a Mandelbrot fractal
 ↑ Gif image by jgabase : a wormhole effect on your fractals by changing the bailout dynamicaly
 ↑ Video : "Julia fractal morph: 0.75+i to 0.75i" on youtube by rrwick
 ↑ video on youtube by rrwick
 ↑ video on youtube by rrwick
 ↑ video on youtube by rrwick
 ↑ video on youtube by rrwick