Window lighting: Difference between revisions

From Valve Developer Community
Jump to navigation Jump to search
m (moved Tips and Tricks to Window lighting: This is the only tip here (and has been for over a year now).)
(Rewrote the manual. Categorized. Removed ns:6 voodoo.)
Line 1: Line 1:
{{stub}}
By default, light will only shine in through a window if the [[env_sun]] angle is set so that sunlight shines directly through it. However, real-world windows will often stream in ''refracted'' (indirect) sunlight, independent of the suns angle.


This is an ongoing list of tips and tricks I have picked up from Valve's maps and elsewhere. Feel free to add to this with anything else you feel is useful.
Valve commonly uses the following technique to simulate this:
 
==Window Lighting==
 
Ever wanted to illuminate a room with outside light streaming in through the windows, but the sun's facing the wrong way? Here's a solution that Valve use commonly...
 
Here's your window frame.
 
[[{{ns:6}}:windowtip1.png|A simple window with a frame.]]


[[Image:windowtip1.png|right|thumb|A simple window with a frame.]]
1. Create the opening that you want light to refract through (such as a window).
{{clr}}
{{clr}}


With the ''nodraw'' texture, create a brush the same width as your wall that completely fills your window.
[[Image:windowtip2.png|right|thumb|The brush-filled window.]]
 
2. Cover the opening with a brush using the ''nodraw'' texture.
[[{{ns:6}}:windowtip2.png|The brush-filled window.]]
 
{{clr}}
{{clr}}


Texture the inward-facing side of this brush with the ''lights/white001_nochop'' texture. This is the texture that will be emitting the light.
[[Image:windowtip3.png|right|thumb|The brush will now emit light.]]
 
3. Texture the inward-facing side of this brush with the ''lights/white001_nochop'' texture. This particular texture emits light in-game. You can adjust the strength of this light with the "Texture scale" settings. (''Lightmap scale'' does nothing in this regard.)
[[{{ns:6}}:windowtip3.png|The brush will now emit light.]]
 
{{clr}}
{{clr}}


This is all very well but not completely what we want. In this state, the light-emitting brush will be solid and visible in-game and will block leaf visibility, seeing as it is not yet a brush entity.
[[Image:windowtip4.png|right|thumb|The properties box.]]
 
4. Tie the brush to a [[func_brush]] entity. In its properties, set '''Render Mode''' to ''Don't Render'' to will prevent the non-transparent brush from blocking the view as a white sheet. (It will still emit its light.) Unless you want the brush to simulate unbreakable glass, also set ''Solidity'' to ''Never Solid''.
For the next step, tie the light-emitting brush to a ''func_illusionary.'' In the properties, set '''Render Mode''' to ''Don't Render.''
{{note|Tying the brush to an non-rendered [[func_illusionary]] would work just as well, but this entity type has been deprecated.}}
{{tip|[[func_brush]] should be used instead to conform to Valve's current mapping standards. Same properties apply.}}
 
[[{{ns:6}}:windowtip4.png|The properties box.]]
 
{{clr}}
{{clr}}


This will ensure that the brush is invisible and doesn't collide in-game, but will cast light into the room when the map is compiled.
[[Category:Level Design]] [[Category:Tutorials]]

Revision as of 08:10, 9 February 2011

By default, light will only shine in through a window if the env_sun angle is set so that sunlight shines directly through it. However, real-world windows will often stream in refracted (indirect) sunlight, independent of the suns angle.

Valve commonly uses the following technique to simulate this:

A simple window with a frame.

1. Create the opening that you want light to refract through (such as a window).

The brush-filled window.

2. Cover the opening with a brush using the nodraw texture.

The brush will now emit light.

3. Texture the inward-facing side of this brush with the lights/white001_nochop texture. This particular texture emits light in-game. You can adjust the strength of this light with the "Texture scale" settings. (Lightmap scale does nothing in this regard.)

The properties box.

4. Tie the brush to a func_brush entity. In its properties, set Render Mode to Don't Render to will prevent the non-transparent brush from blocking the view as a white sheet. (It will still emit its light.) Unless you want the brush to simulate unbreakable glass, also set Solidity to Never Solid.

Note.pngNote:Tying the brush to an non-rendered func_illusionary would work just as well, but this entity type has been deprecated.