To begin with, it is definitely worth reading the User Manual. Specifically, these pages:
Now let’s talk about how Orange Room is constructed. First of all, here’s the link to the full project:
Orange Room is actually pretty simple. It is a single model with 23 materials. There are two cubemaps in the scene: ‘Sky’ (the external background that acts at the skybox) and ‘Room’ (the room environment rendered to HDR images in 3DS Max where the room was modeled).
The lighting is influenced heavily by the ‘Rendering’ settings:
You can see the Sky cubemap is set as the backdrop here. Note that tonemapping has been set to Filmic, gamma correction is enabled, and the exposure of the scene is set to 12.
The main room has a lightmap applied to everything. The lightmap generated by the artist is named LM03.hdr - it’s an HDR lightmap.
All materials in the scene need to reflect the room itself and not the external skybox. So you’ll notice that all materials have the ‘Room’ cubemap set in the ‘Envrironment’ section. e.g.:
Setting a cubemap on the material itself will force it to override the reflection supplied by the cubemap set in ‘Rendering’ settings for the scene (namely the ‘Sky’ cubemap). This is what enables you to see the room reflected in the TV screen and not the external cityscape:
You might notice a discrepancy between how the scene is rendered in the viewport and how it is rendered when you launch the scene. This is because of this script:
This script sets the projection for the room cubemap as a box projection on all the scene’s materials. This treats the cubemap as ‘local’ rather than infinitely far away (like the skybox). The size of the room is defined by the model on the entity named ‘box-proj-reference’.
The script also does some rather advanced stuff around replacing certain bits of shader coder in the standard material to achieve some graphical tweaks, but that’s probably beyond this scope of this post.