Our scene shows a path in a cave lined by mysterious glowing crystals. Towards the back of the scene the path disappears in the darkness of the cave with only some distant crystals being visible in the distance.
The benefits of shading normals can be seen both in the bridge and the rock on the left side. The path would be a flat surface without shading normals and the rock on the left consists of multiple large faces. Both show significantly more detail due to shading normals.
Most of the crystals in our scene have a constant alpha value of 0.5 and a small circular light within in addition to being weak area lights on the surface. This made the crystals less flat while still allowing them to illuminate the scene. When only using a strong area light for illumination all texture/form disappeared from the crystals, becoming fully monocolored. Thus the alpha mapping helped us achieve better looking glowing objects by combining area lights on the surface with light sources within the object. A general example of an object with alpha masking being redered can be seen below. The render consists of two meshes in sphere form, one enclosing the other. The outer sphere would fully obscure the inner sphere but due to alpha masking we can see the inner sphere and also the form of the alpha map, which differs between partial and full transparency.
On the path, there is a single crystal made of a rough dielectric with a light inside it. This clearly looks different from the surrounding crystals. Due to it not having an area light it shows clearer reflections of the surrounding crystals and the form of the crystal is more clearly visible. The rough dielectric disperses the internal light (and also all incoming light) compared to a normal dielectric meaning it appears more evenly colored instead of showing the light within as clear dot on it. To make it possible to sample the internal light this crystal has an alpha value in addition to a rough dielectric.
The evaluation of the rough dielectric bsdf is a rather complex formula that was difficult to implement, especially because the existing papers we were pointed to used different function signatures then our code. For example the Fresnel dielectric has a different function signature by including the roughness in it compared to the papers that explain the rough dielectric.
Due to the thinlens camera the further away parts of our render appear blurry which makes it possible to have a less detailed background without overly impacting the overall result. Especially the walls towards the back are repetitivly textured which would have been very obvious without a thinlens camera and detract from the overall visual quality. However with the thinlens camera the walls are blurry and the repetitiveness of the walls is not immediately apparent.
Properly focussing the right parts of the scene tends to be hard. Finding the fitting focal distance and lens diameter for our scene involved some trial and error.
Implementing area lights removed a lot of noise from our scene and it enabled us to model the crystals in this way, together with MIS and alpha masking.
Sometimes the area lights behave very weird in tests, but this is most likely due to a mistake in our tracer. The following image looks like the area lights are implemented correctly, however, using this code in combination with our MIS path tracer the veach test is a lot too dark.
Implementing the MIS path tracer enabled us to have visible area lights with less noise. This was very useful for modelling the glowing crystals, as they are both emissive shapes and area lights. Furthermore, due to MIS they do not have a lot of noise. For the rough dielectric crystal it was also very useful, as the light inside was just not visible as a "pure" area light.
Our main challenge has been (and still is) some mistake in our renderer, that makes the next event estimation weaker than it is supposed to be, as you can see in this picture of the veach test, rendered with our renderer: (on the lowest medium, the shine of the lights is noticably smaller than it is supposed to be)
Our code took a lot of inspiration from PBRT.
We used the blender textures rock by Jeronimo Rodriguez and Stone 03 by Julio Sillet