At first our idea was to make a completly different scene as you can see here. We wanted to make a horror themed scene inspired by the alien movies and games. Since we had some troubles with that at first, we decided to look for a plan b, just in case the alien scene won't work out. For that, we tried to build a street and adding a car into it just to see how that would look like. After we found our car model of this oldschool AC Cobra we thought that a diner would fit very nicely into the background. And thats how the 60s theme was created. After a short time we fell in love with this idea and our plan b was now plan a. The outcome is the scene you can see here.
In order to speed up the whole process of rendering we decided to make the renderer work multithreaded. For that we divided the image into chunks that each thread can take over to render. If a thread is finished with his chunk he goes to the next one that needs to be rendered. It was implemented by Eric Windholz. The implementation can be seen in: rt/renderer.cpp
We made our own MixMaterial for a diffuse and a reflective part, that does not use static weights but weights that are computed by the fresnel term each time the material was hit. That means that when hitting the material at a grazing angle the weight will be pretty low for the diffuse component and pretty high for the reflecttive component while hitting it with a low angle will make the diffuse part contribute more and the reflective part less. That way we were able to make a pretty realistic car paint material. It was implemented by Eric Windholz. The implementation can be seen in: rt/materials/fresnelcombine.cpp
With Fresnel Mix Material
Without Fresnel Mix Material
To give the car a little more credit, and, as we think to give the scene a cooler look we decided to implement depth of field and add into our scene. The car is in focus while everything behind and in front of it is blurred out a little. It was implemented by Eric Windholz. To see the implementation go to rt/cameras/dofperspective.cpp
With Depth of Field
Without Depth of Field
Even before we had the final image of our scene in our heads we thought that normal maps would be a cool idea to give objects a little more depth. So we decided to implement normal mapping and added into our scene. We applied it onto the lanterns, the street and the pavement. It was implemented by Eric Windholz. The implementation can be seen in: rt/primmod/normalmap.cpp
With Normal Mapping
Without Normal Mapping
We noticed that our picture was way too dark.
Therefore we implemented Gamma Correction to get rid of the problem.
The implementation was made by Eric Windholz and can be seen here: rt/renderer.cpp
With Gamma Correction
Without Gamma Correction
What would the scene be without a proper night sky with stars? To get this nice sky into our scene we decided to implemented Spherical Environment Mapping. That was done by Eric Windholz and the implementation can be seen here: rt/solids/envsolid.cpp & rt/coordmapper/environmentmapper.cpp
With Environment Map
Without Environment Map
Buildings and Trashcan: https://blendswap.com/blend/25505
Trashcan Texture: https://www.textures.com/download/PBR0010/133046
Diner: https://blendswap.com/blend/6427
Car: https://free3d.com/3d-model/ac-cobra-269-83668.html
Street Texture: https://www.textures.com/download/PBR0328/136367
Pavement Texture: https://www.textures.com/download/PBR0058/133093
Pavestone Texture: https://www.textures.com/download/3DScans0022/126610
Lantern Texture: https://www.textures.com/download/PBR0533/138568
Environment Map: https://svs.gsfc.nasa.gov/3895