If this looks ugly, then your browser probably doesn't support cascading style sheets. See the HTML only version
For those of you who are using either Geoffrey DeWan's version of Qrad3 or Tim Wright's Arghrad (1.0 or higher), this is going to be a real treat. If you have read the text file included with the executable, you may have noticed the mention of a sun feature. For whatever reason, everyone I have spoken to has been reluctant to try it.
Not only is the sun feature incredibly easy to use, but it also provides a
lot more versatility than straight environmental lighting. Plus, it looks a
whole lot better. This tutorial is dedicated to helping you get started with
using the sun (you'll never turn back). It also mentions in passing another
useful feature included, the -nocolor option.
As you may be aware, the ability to use environment maps is a welcome improvement that has accompanied the release of Quake2. The Environment maps are pretty gosh darned cool, but outdoor lighting is only so-so.
The _sun feature allows you to chose a direction for the sun to shine, and it lets you control diffuse lighting, highlight intensity, and sunlight color. Also, from what I have noticed areas lit by large amounts of sky can qrad much faster when the area is lit by the sun instead of the sky surface. In the test map I created, qrad took 1016 seconds when the sun was not used. The same map took 509 seconds with the sun activated.
If everything is properly entered, qrad should recognize your sun without having to use command lines. This was what confused me at first, since you activate your sun in your worldspawn entity, and not at the command line. In actuality, this makes things a lot easier.
As you can see, outside areas look really nice, but the light looks like it is coming from everywhere. It also has a really ugly orange hue. That's not the most glaring of the things it lacks, there are no shadows!!! Well, okay, there are shadows, but they are not very well defined. The problem is, how do we get our outdoor lighting to look as cool as our indoor lighting without using a gazillion light entities and spending a couple years putting them in place? It's easier than you thought.
With a few alterations and a couple entities, a drab
outdoor scene can take on a whole lot of life and personality. There are
now clearly defined shadows AND highlights. With the sun activated, outdoor
scenes begin to really look like they are outside. What's better, you
have complete control over the color that the sun emits.
The first thing you need to do is to give the sun a vector. The qrad program looks for an entity that is targeted to an info_null. First, place a light anywhere inside your level (don't put it outside the level, or else you will create a leak). Target the light to the info_null that you are about to create. Now create your info_null and give it the appropriate targetname. The position of the info_null relative to the light that targets it will tell qrad the angle that the sun shines.
Add the _sun key to your worldspawn options (the same place you use to set your map's entering message). Give it a key value that is the same as your info_null's targetname. Here's an example from the .map file I used for the screenshots above.
If you have any brush faces that are on the same plane as a lit sky face, AND they faces have an unobstructed line of sight to each other, then you will get unexpected and undesirable effects. Make sure that your sky and non-sky faces are either not on the same plane, or not visible to each other. Failure to do so may cause sunlight to appear where it doesn't belong.
The final thing you need to do to make sure that your sun is working right is to give all of your sky textures a light value. Apply a light value (any light value) to all of your texture surfaces with the "sky" flag. If you do not do this, your sun may not work right.
Now that your sun is in place, the hard part is done. All that is left is to set the light values. The first thing we shall do is to set the highlight value. This is the value of any surface that has a clear line of sight to the sun. Add the _sun_light key to your worldspawn entity, and give it a value. I have noticed that lower values tend to be quite dark. The screenshot above has a _sun_light value of 800.
How does this work? Well, qrad calculates the x y and z angles of the sun's direction, then checks all surfaces. From each surface, it checks if the sun is viewable at the opposite angle. In other words, the opposite angle of the sun's direction is calculated, the program checks each surface at that angle. If it encounters a lit sky, then it is not in the shadow. If it encounters a solid without the sky flag, then it is in the shade.
With highlights, there must be shadows. If the shadows were completely unlit, it would be too harsh. After all, the diffuse light of a sky emits some light, even if it is not as bright as the sun. The _sun_ambient option allows you to fill your shadows. A value of 50-200 works best for this.
For a good example of how diffuse lighting works, take a look at the shadows outside on a sunny day. If you try to emulate this, you can't go wrong.
To give you absolute control over your sunlight, Geoffrey DeWan included the _sun_color option. This allows you to make your sun project any color without doing any screwy texture swapping.
Simply add the _sun_color key to your worldspawn and give it a color value just like you would to a light entity (I find that 1 1 .85 works good for a medium yellow light). For a review of what your worldspawn entity should look like now, see the example.
First, create a light and target it to an info_null. This will be your sun's angle.
Next, add the _sun key to your worldspawn, and enter the targetname of the info_null.
Make sure all of your sky textures have the light flag checked and a light value.
Add the _sun_light value to your worldspawn, and give it a light value.
Add the _sun_ambient value to your worldspawn, and give it a light value.
Add a _sun_color value to your worldspawn, and give it a value.
Run qrad3 as you normally would (make sure it's the one by Geoffry DeWan, version 1.03, or ArghRad 1.0 or higher).
Version 1.02 of DeWan's qrad3 used the sun, sun_light, sun_ambient, and sun_color keys. This was annoying, because they would pop up a message "sun is not a valid field" when you would run the game. Now that he has added an underscore before the keys, the error is gone, and everything is peachy keen.
The sun feature is incredibly useful. It is a definite improvement over the original qrad3 code. It is by the will of Id software that we have the source code available to improve an already great game, and by the hard work of the fans that the tools are there. Everyone should show their appreciation of the spirit of free information by not plagiarizing or pirating software.
If you have ever compiled a level with colored or texture lighting only to find out later that it looks a lot better without color, you can easily recompile it without having to change all of your entities and messing with your surface properties. All you have to do is add -nocolor to your qrad command line. For example, if you normally compile with this command line:
You just add -noclor to it and you're good to go.
The light intensities may not be the same as it was when you had color, but it shouldn't change too much. Here's a little clip from the text file included with gddqrad3 version 1.03.