Mystery Temple
Participants
- Piotr Dabrowiecki
- Tomasz Jurkiewicz
Topics
Fractal geometry - Tomasz Jurkiewicz
Class for creating objects definied by 2D surface with incorporated noise of desired amplitude initially intended just for generating mountains.
Implementation
Since we are using SAH KD-Tree, I've decides to do generate triangles (rather than to fractal traversing).
Algorithm creates lattice of vertices on 2D surface with desired density, then transofrm them to 3D space
using provided functions and fianlly add perlin noise distortion.
Source code
Physics of blue body - Tomasz Jurkiewicz
This addition provides possibility of moving according to blue body phisics (and not only) in the project,
positions are recalculated according to differential equation.
Implementation
Algorithm is implementation of (RK4) Runge-Kutta method.
Source code
Partial differential equations solution - Tomasz Jurkiewicz
Wave equation simulator os ment as solution of R2->R3
Implementation
Algorithm is implementation of explicit method with accuracy O(h6+t2)
Source code
Tone Mapping - Tomasz Jurkiewicz
This functionatity allows to reditribute brightness over image.
Implementation
Procedure transform image to HSV format, colects values of brightness, redistribute brightness uniformly
(obbiting pixels with brightness equal to 0 or 1) and then it bask to RGB format
Source code
Refraction - Tomasz Jurkiewicz
Shader combines refraction, reflection and solid color in desired proportions
Implementation
function checks if total internal reflection appears, possibly changes proportions of components and retrace scene with
those rays with nonzero participation.
Direction of refracted ray is an effect of simple mathematical derivation
Source code
Animated Clouds - Tomasz Jurkiewicz
Feature which almost doesn't appear in final animation ... almost ;P ... one can find it if he wants
Implementation
Clouds are generated with 3D perlin noise where 3'rd dimension is time, ans spatial dimention coordinates are also
affected by time variable
Source code
Procedural shading - Tomasz Jurkiewicz
This part of code allows applying 3D textures, like marble texture used with cow monument and altar
Source code
Choreography and idea - Tomasz Jurkiewicz & Piotr Dabrowiecki
Source code
Music - Klaus Badelt
Music is borrowed from amazing movie Time Machine
Multithreading - Piotr Dabrowiecki
Multithreading is used to improve rendering time of the frames.
Implementation
Class providing functionality of threads takes a pointer to a function and each time the method start is called the new thread is created. In the class is stored a counter of current running threads and the main thread may wait until other theads finish their tasks.
Source code
Integrated Intensity Volume Rendering - Piotr Dabrowiecki
In the animation the Volume Rendering is present in transparency of fearies.
Implementation
The shader gets the color of the scene after the object and samples the transparency of the object. After getting the transparency of the object it is applied to the previous pixel color.
The function which returns transparency is based on perlin noise.
Source code
SAH KD-Tree - Piotr Dabrowiecki
SAH KD Tree is used to improve rendering time of the frames by faster intersecting big object such like Temple.
Implementation
Implementation is based on O(N log2N) algorithm presented in "On building fast kd-Trees for Ray Tracing, and on doing that in O(N log N)" by Ingo Wald and Vlastimil Havran.
Source code
Bump Mapping - Piotr Dabrowiecki
Bump mapping is used in animation to make the surface of water wavy and surface of temple's wall more rough.
Implementation
To the Primitive was added pointer to the parent object.
Object has a pointer to normalmap.
New type of Triangle was added, which has a matrix to transform vector from texture space to object space. The method GetNormal gets the vector, from the objects normal map, coresponding to texture position. Transforms it to the object space and return.
Additionally to use normals from Partial Equation Simulator the DynamicBumpTexturedSmoothTriangles get the normal vector from WaveEquationSimulator and from normal map.
Source code