Mystery Temple

Participants

Topics

Fractal geometry - Tomasz Jurkiewicz

Fractal geometry - sample 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

Physics of blue body - sample 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

Partial differential equations solution - sample 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

Refraction - sample 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

Volume Rendering - sample 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 - sample 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