In this thread I am going to compile a list of changes and new features in Vluzacn's Half-Life Tools.
____________Thread:
VHLT v34____________[b]Performance in general (Compared to SHLT 3.9):[/b]
-Compile time reduced by more than 50%, at no expense of quality.
-Compiled .bsp product around 50% smaller in size.
-Lighting looks quite a bit better.
-Error reports in greater detail.
-Fixed many errors with old compiling tools.
____________Installation____________Since hlrad needs texture data, wad paths have to be provided.
This can be done by editing the file 'settings.txt' and replacing the 'C:Half-Lifexxx' after '-waddir' with wad folders of your game. (This feature can be disabled with hlrad parameter '-notextures'.)
In other words before your tools have been setup, you need to specify the directories where your wad files are located for VHLT to work properly.
Make sure you are also using the brand new .fgd file, and the brand new .wad file.
____________New Entities and Features (in order of importance):____________[b]-func_detail
- '-texreflectscale #' '-texreflectgamma #' (bouncing is affected by texture color)
-info_translucent and light_surface
-zhlt_usemodel
-info_sunlight
-light_shadow
-info_overview_point and info_hullzone
-func_group and info_texlights
-info_smoothvalue[/b]
____________Explanations:____________func_detail"Convert any brushes that are not parts of the basic structure of the map, to func_detail. They cannot be water brushes or sky brushes.
You can leave 'Detail level' to 1. For tiny objects, you might set it to 2, so that they won't chop the faces of other func_details.
For large shapes such as terrain and walls, you can set 'Lower its level to cut others' to no less than its detail level, so that they can chop adjacent world brushes like world brushes.
Before compiling the map, hide all entities and func_details, make sure there are no leaks and the structure is good enough for vis calculation."From experience, this entity works great as it has a completely separate third cutting level to world brushes and entities. Before func_detail, we had two separate brush types; entity and world brushes, that would not cut eachothers faces. However now we have a third, a separate func_detail style. Furthermore using this entity, within its properties you can specify 1, 2 or 3, which can change how this entity will cut faces. The default is 1, and it will have its own special chop but can cut other func_details, 2 it won’t cut anything, even other func_details, and 3 it will chop world brushes as an entity.
Big benefit of func_detail: When player steps on a func_detail entity, his model will be lit properly as the surface he is standing on is. This was not the case for func_walls and they could lead to the players model going black bug.
Possible problem of this entity: Sometimes there can be lighting errors, it can sometimes incorrectly cut off sunlight making some weirdly lit faces, however the probability of this is about 2%, and if it does happen then you can change the entity back to a func_wall. (This is all from experience).
Note: This entity just like func_wall will not block light.
For more information, go here:
Sven Co-op Forum Post'-texreflectscale #' and '-texreflectgamma #'You can now use a '-texreflectscale' parameter, to lower the reflectivity of the textures in general. The color of textures will affect how much light bounces in VHLT. Meaning a bright yellow map like dust2 will have a shiny luminescent effect, while something like a darkly colored half-life map will have more shadows.
How to use: For example '-texreflectscale 0.5' to hlrad will lower the reflectivity by half, making the map half as bright. Presuming that you leave the ‘-scale’ parameter unchanged, as that is an older feature that will give a less desirable effect.
'-texreflectgamma' is the same as’ texreflectscale’, but affects the gamma value of the textures.
info_translucent“New translucent effect for materials such as fabric, coarse glass, plastic. They are now able to receive light that comes from the back side of the face.
Usage: Create an info_translucent entity, disable the Smart Edit mode, add keyvalues. Keys are names of textures, values are their translucent amount.
Values are from 0.0 to 1.0: 0.0 = normal; 0.3 = 30% light from back and 70% light from front; 1.0 = 100% light from back and 0% light from front. Also support 3 values mode to set r g b amount individually.
There is also a limitation in the shape of solids that use translucent textures: They must not be thicker than 2 units. (The max thickness '2' can be changed by hlrad parameter '-depth #').”
I am yet to test this entity.
[b]light_surface[/b]
“Usage: Place a light_surface entity near the face which you want to emit light.
'Texture name' shall be the name of texture of the face.
'Filter max distance' can exclude faces whose centers are far from this light_surface.
'Texture brightness' is the brightness value that the face obtains. 80 is enough to ensure brightness of the texture itself.
'Inner angle' and 'Outer angle' are 90 and 'Adjust emit scale' is 1.0 for normal texture lights by default. Smaller angle and larget scale can be used to simulate spotlight.
'Fast' is useful when the face is large and brightness is low. The result of fast lighting is very similar to bounce lighting.
The light_surface can be triggered and have appearance like other light entities. Actually its classname will be changed to 'light' or 'light_spot' according to your choice.
Note: If you want to set any of these value to 0, fill in 0.0 instead. Otherwise Hammer will ignore the keyvalue.”
I am yet to test this entity.
[b] zhlt_usemodel[/b]
“Add [key: zhlt_usemodel value: name of the source entity] to the target entity. Both source entity and target entity should have origin brush or be point entiy.
'zhlt_copylight' is a hack to correct brightness of mdl placed in the map by changing the color of face lightmap sample under the mdl. It is not useful in your case.
A sample map of 'zhlt_usemodel' (in attachment): forums.svencoop.com/attachment.php?attachmentid=14797&d=1324822909 “
As far as I understand, these can be used to hack the light values of models in hammer, to change their appearance in game.
[b]“info_sunlight”[/b]
“You may disable engine's detection of light_environment entity by adding an info_sunlight entity (this entity is in fgd file 'zhlt.fgd', and note that the compiler makes it work by placing an fake light_environment entity into the map) and set its brightness to '0 0 0 0'.”
[b]“light_shadow”[/b]
“Added entity 'light_shadow' to dynamically control the opacity of brush entity.
Example: Build an opaque entity (note: 'custom shadow' key is not allowed) and give it a name. Then place a 'light_shadow' entity with a name, and set the opaque entity as its target. Now, light blocked by the opaque entity will be added into the light_shadow's light style. You can switch the 'light_shadow' off/on just like normal lights to make shadow appear/disappear.('light_shadow' entity will be changed into 'light' in BSP file)
This feature affects bounce light unless option '-incremental' is set, and doesn't affect dynamic light with different style.”
An interesting new entity, lets you add shadow that can be turned on and off just like normal lights.
[b]“ info_overview_point”[/b]
“You can make all other vis leafs visible from a vis Leaf by placing an info_overview_point entity inside it. Useful for creating overview.”
[b]“ info_hullzone”[/b]
“You can assign areas that need to generate clip hulls, to reduce clipnode count. Create an info_hullzone entity that covers where players are allowed to go, then clip hulls of brushes that doesn't intersect with this entity will be stripped. This will not affect brush based entities and CLIP brushes, so enclose the map with CLIP if you encounter the leak error.”
[b]“ func_group and info_texlights”[/b]
“Same to the original ZHLT. But note that the color of the texture is now added into the texture light that it emits, which should be considered when you set the color of a texture light.”
[b]“ info_smoothvalue”[/b]
“The way of use is similar to info_texlights. The key you added is texture name, and the value is the angle that overrides '-smooth' for this texture.”