Dance of the Dragons

Computer Graphics Rendering Competition
Winter Term 2018/19

Concept behind the scene

We know dragons don't exist. Or do they? What if, unbeknown to us, they are thriving on a distant island where no human has ever set foot? They live happily within their own kind and do not venture out into the outside world. In this scene, we see a family of these dragons playing together in their pristine natural habitat — far, far removed from the claustrophobic and polluted world of humans.

The idea of dragons in the wild, powerful and completely free, has always fascinated me. So I decided to build this scene, inspired by a shot from the movie series "How to Train Your Dragon", to capture my imagination.



I got the model of the dragon from Blendswap and that of the cliff from Turbosquid. I duplicated the dragon model into three using Blender and adjusted them until I was satisfied with their positions on the scene. I put together the dragons and the cliff and after some more adjustments I finally got the model I was opting for. My model has 29664 faces. It is loaded as a .obj file and I have used BVH to intersect the model.
Codes: bvh.cpp, obj.cpp


  • Glass material. The water surface is a glass material both refracting and reflecting light.
    Code: glass.cpp
  • Lambertian and Combined materials. The sky and the moon are combined materials with an image texture and a Lambertian material emitting some amount of light to give the scene a soft glowing effect. The grassy patch in front is also a combined material with a grassy texture and a Lambertian material reflecting green color. It has some smooth rocks on it which are also Lambertian materials.
    Code: combined.cpp, lambertian.cpp

Texture and Bump Mapping

  • Triangular mapping. It has been applied on the grassy patch, the sea, and the sky.
    Code: tmapper.cpp
  • Spherical mapping. The texture mapping on the moon is spherical.
    Code: spherical.cpp
  • Bump mapping. I used a bump map on the water surface to give me the desired ripple effect.
    Code: bmap.cpp


  • Point Light. Two point lights are used in the scene to give an indirect lighting effect on the dragons.
    Code: pointlight.cpp
  • Area Light. A small area light has been cast on the scene from behind the camera, to get the desired silhouette effect on the dragons.
    Code: arealight.cpp

Depth of Field

I added a slight depth of field effect, to focus on the dragons and blur the grassy patch at the front of the scene.
Code: dofperspective.cpp

Implementation Details

  • The scene was rendered in an i5 8th generation 1.60GHz processor using stochastic sampling with 200 samples per pixel.
    Code: render.cpp
  • Models were used for the dragons and the cliffs.
  • Other parts of the scene were built using solids.
  • Image resolutions and render times:
    • Small: 480 × 270, took 17m 46s.
    • Full: 1920 × 1080, took 4h 51m 10s.