# ericw-tools

Map compile tools for Quake and Hexen 2

downloads github

###### Windows builds require Visual C++ Redistributable Packages for Visual Studio 2013

Documentation:

qbsp vis light bspinfo bsputil discuss

# Features

## Bounce / radiosity

Bounce is enabled with the `-bounce` command-line option.

Screeshots of ad_azad by mfx: (NOTE: This map also has some indirect lighting from `"_sunlight2_color" "0.5 0.56 1.00"` and `"_sunlight2" "190"`)

`-bounce -bouncescale 2`
`-bounce`
`-bounce -bouncescale 0.5`
``

## Phong shading

Phong shading is enabled on a brush entity using `"_phong" "1"`. It can be used on `func_detail` or `func_group` with a supported qbsp, which writes a mapname.texinfo file. A modified txqbsp-xt build is available here.

Screenshot of ad_crucial by mfx:

With `-phongdebug` to render normals to the lightmap.
With `-phongdebug` to render normals to the lightmap.

## Ambient occlusion (aka dirtmapping)

The `-dirtdebug` flag causes the whole map to be lit at 50% gray, with ambient occlusion applied. It's good for previewing the AO settings.

`-dirtdepth` controls the distance tested for occlusion, in quake units. You can see at 512+ the palace rooms start to self-shadow.

`-dirtgain` controls the intensity of the dirt with an exponential scale while `-dirtscale` is a simple multiplier.

Once you are happy with the command-line settings, you can transfer them to worldspawn keys; see the light documentation for details.

Screeshots of One Thousand Cuts by SimonOC:

`-extra4 -dirt -dirtdebug`
`-extra4 -dirt -dirtdebug -dirtdepth 256`
`-extra4 -dirt -dirtdebug -dirtdepth 512`
`-extra4 -dirt -dirtdebug -dirtdepth 1024`
`-extra4 -dirt -dirtdebug -dirtgain 0.75`
`-extra4 -dirt -dirtdebug -dirtgain 0.5`
`-extra4 -dirt -dirtdebug -dirtgain 0.5 -dirtmode 1`
`-extra4 -dirt -dirtdebug -dirtscale 1.5`
`-extra4 -dirt -dirtdebug -dirtscale 2.0`

## Sunlight

the new `_sunlight2` worldspawn key creates a hemisphere of suns around the level. It's good for avoiding pure black shadows in outdoor areas (fake indirect lighting).

    "_sunlight_color" "0.83 0.91 1.00"
    "_sun_mangle" "60 -45 0"
    "_sunlight" "300"
    "_sunlight_penumbra" "4"

    "_sunlight2" "300"

    "_sunlight_color" "0.83 0.91 1.00"
    "_sun_mangle" "60 -45 0"
    "_sunlight" "300"
    "_sunlight_penumbra" "4"
    "_sunlight2" "300"

## Sunlight penumbra

## fake area lights (deviance)

`_deviance` lets you split a point light into several lights, so it casts softer shadows.

    {
    "delay" "2"
    "light" "600"
    "origin" "376 0 408"
    "classname" "light_globe"
    }

    {
    "_deviance" "24"
    "delay" "2"
    "light" "600"
    "origin" "376 0 408"
    "classname" "light_globe"
    }

    {
    "_deviance" "48"
    "delay" "2"
    "light" "600"
    "origin" "376 0 408"
    "classname" "light_globe"
    }

    {
    "_deviance" "96"
    "delay" "2"
    "light" "600"
    "origin" "376 0 408"
    "classname" "light_globe"
    }

## Surface lights

surface lights are good to quickly light a scene, especially if there are runic-style light fixtures. The shot below is lit entirely with one light entity.

    {
    "classname" "light"
    "origin" "-640 -192 656" // ignored for surface lights
    "delay" "2"
    "light" "150"
    "_color" "0.827111 0.908589 1.000000"
    "_surface" "runes1a" // texture name
    }

## Other Features

- raytracing light through fence textures
- .lux output for deluxemapping in FTEQW
- gamma adjustment of the final lightmap `-gamma`

# Credits