The goal for the sene is to look as similar as the street in Japan at night. Since I've never visited Japan, I find my inspiration from images online. One of the main aspect the scene focuses is how the light contrast between the warm-orange and the cold-blue color can make a good aesthetic together. Other objects such as buildings, person with umbrella, etc are added to have scene components identical to Japan environment.




There are in total 17103 faces in objects that need to be rendered for the scene. Most of the objects has cook torrance material. For the floor, the scene uses the floor bump-map from previous assignment 8. main/a_competition.cpp, rt/primmod/bmap.h, rt/materials/cooktorrance.h



There are one AreaLight, 4 PointLight, 5 SpotLight and 2 DirectionalLight used for the scene. The lights are focused on two contrast colors, which are the warm-orange color and cold blue color.
rt/lights/arealight.h, rt/lights/pointlight.h, rt/lights/spotlight.h, rt/lights/directional.h


Wet Material

To make it more realistic, the floor has to have a wetness-after-rain feeling. In the floor bump map, the combine material of fuzzy mirror, glass, and cook torrance materials are used.
rt/materials/combine.h, rt/materials/fuzzymirror.h, rt/materials/glass.h, rt/materials/cooktorrance.h



For the rain effect, I implement motion blur on 1500 spheres that are randomly generated. Although the overall process sounds very simple, it took quite a good amount of trial and error to achieve the end result. rt/motionblur.h


Prior to the rendering, the objects that are in the scene were cropped and downsized using the 'decimate' tool in Blender. Although this reduces the detail, it reduces a significant amount of rendering time. After re-arranging the objects and implementing some effects into the scene, the final rendering with high resolution setting took around 4 hours. With low resolution setting, it took around 2 hour. The rendering is done with 6 threads in Intel i7-8750 16GB RAM. A very simple naive multithread is implemented in rt/renderer.cpp.


Motion Blur

Multi Thread

Gamma Correction


Bump Mapping


Combine Material


Source for 3d Models

Japanese House (middle) - sketchfab
House (left) - sketchfab
Person - cgtrader
Umbrella - sketchfab
House (right) - sketchfab