To get some inspiration I was looking through a list of last year competition entries. And I realized that most of them are connected with interiors of rooms, buildings etc. Not very inspirating... And at some moment I understood I would like to play around with lights and reflections. Of course the atmosphere of pop music is most suitable for this. Balancing between the primary idea and performance bottlenecks I've got the final result.
I was building the scene manually but with the help of Blender to clarify locations and rotations. It's pretty simple and consists of 5 spotlights on the ceiling, 5 lamps on the floor and 5 pictures of pop-stars.
It worthes to mention about the disco sphere separately. It is a mirror sphere which also reflects the lights around. So that you can see colored pathces all over the scene. I was struggling with it really a lot because more polygons gives better results but decreases performance erratically. So the sphere contains 10 rows by 20 rectangles in each row (200 faces in total). Implementation details below.
The scene is rendered in 11 hours with 500 samples (i5 2.8GHz). Would be great to increase the number of samples and use more powerful processor.
I've modified an area light a little to emit the light according to the textue at sampled point. For this it was only needed to modify LightHit structure. That's the first reason of performance drain (need more samples for better results).
It's a modified area light which accepts group of polygons instead of a single solid. I've also extended it specifically for this scene. The sphere doesn't emit any light on its own. It emits the light which is reflected from the light sources around the sphere. Algorithmically, we have to sample the most appropriate polygons for the point to emit to (polyarea.cpp/recraytrace.cpp). As a conclusion, getLightHit enumerates all of the polygons and returns corresponding hit. That's the second reason of performance drain.
Nothing interesting: 5 spotlights at the top looking at the sphere only, and 5 spotlights looking at pictures. The philosophy of this scene: more lighting - more fun. So with extended time bounds light sources have great potential.
Yes, there is no smoke. It was the second crucial idea of the scene but I had to refuse due to some reasons. Firstly, when I've implemented a marching the rendering time dramatically increased. Secondly, the smoke I've implemented was very homogeneous and I couldn't clarify the errors in the code in time (fog.h). Most probably I did things completely wrong. Of course, together with sphere reflections the final result could be amazing. But, unfortunately, not today.