The AoA Advanced Ambient Light for DAZ Studio works by itself to create beautiful, soft lighting
or along with other lights to help provide extra accent lighting and detail with ambient occlusion.
Wanting more lighting flexibility in DAZ Studio, I created this light for use in my own projects.
Over the years I added more features as needs arose. These features mainly focus on control and rendering speed optimizations.
Other features include settings to adjust the softness of occlusion and lighting functions to allow for the
proper baking of ambient occlusion to texture maps.
At first glance it my not appear particularly special but, with use, I believe the extra control that this light offers will become indispensable.
Almost every Daz Studio render I have created over the last few years has used a version of this light as either the only illumination in the scene
or as the scene's principle fill light.
Instead of behaving like a lightbulb where the light emanates from a single point shining outward,
the Advanced Ambient Light works like a sphere of light shining inward, from all directions.
To allow for more control over what areas of the scene are illuminated,
the Advanced Ambient Light includes illumination range and falloff blend features.
Although this is not a physically correct way for light to behave, the effect is very pleasing and believable.
The ambient fall off effect can be used in conjunction with standard directional lights to produce a very convincing "Bounce" light appearance
without the long render times associated with full indirect lighting.
Although attempts have been made to clearly label the settings and make the light as intuitive as possible, the additional controls
make this a light intended for advanced lighting.
The advanced features of the light may be a little confusing at first.
However, the light's dials have been set to defaults which should work well in most situations right out of the box.
Please note that the lighting and occlusion will work on any surface but some of the advanced, surface flagging features will only
recognize materials which use the DAZ Studio Default, Ubersurface, HumanSurface, SimpleSurface or the AoA Subsurface Shader.
These shaders are used for the overwhelming majority of DAZ Studio based materials so it is rare that a user will encounter any limitation
with the light.
The light can be found in the content folder under Light Presets - Age of Armour - Ambient Light.
The radius of the distance falloff begins at the light's icon which appears like a wireframe "C" with 6 spikes pointing in all directions.
If you wish to use the light with falloff, move the light to the point where you wish the brightest illumination and adjust the
Light Radius setting (Found in the 'Parameters' tab) to encompass the area of the scene you wish to illuminate.
If you prefer to illuminate everything in the scene evenly, simply set the Light Radius to 0.00. This overrides the falloff function and
causes the light to behave similarly to an environment light.
As with the default DAZ Studio lights, the illumination drop-down list allows setting the light to selectively cast diffuse and/or specular
lighting. The Intensity and Light color also work the same as standard DS lights.
The most important settings to keep in mind are AO Samples, AO Shading Rate and AO Max Error. These settings all work in conjunction as speed and quality
The higher the AO Samples the slower the render but the smoother the appearance.
Shading Rate and Max Error work the same way but in the opposite direction
where lower values produce quality results and higher values will render faster.
The remaining settings allow for more advanced customization and control over the light and are explained in detail below.
You can download this guide for offline viewing by right clicking any blank area of this page and selecting Save Page As...
As with most lights, the illumination itself is fast to calculate but shadows can be slow. Renders can be made faster
by setting Cast Shadows to off for little seen, or out of focus, background objects. By default the light will respect these settings and
not calculate occlusion shadows for these items.
Primitive hitmode can produce substantially faster renders than Shader hitmode. Using this setting for draft renders
or in scenes where no transparency maps are used can be a huge time saver.
Since Primitive Hitmode may produce shadows which are too dark on or around transmapped surfaces, you
can flag the transmapped surfaces and the surfaces receiving occlusion from the transmapped items then set the light so that it uses
Shader Hitmode for these surfaces only.
Try a low Subsurface Samples setting since SSS can often look smooth even at much lower AO sample rates than the general diffuse lighting.
This can speed up the SSS lighting precalculation.
Different lights can be used to illuminate different surfaces. Try using a light with faster settings for transmapped surfaces.
Holding Shift or Control (Command on a Mac) while selecting lights can allow for the settings of multiple lights to be adjusted at once.
If you want to quickly match the settings on multiple lights, you can select one light, hit CTL+C to copy the light's settings
then, with the other lights selected, use CTL+V to paste the settings.
This can be useful for quickly setting up different lights to illuminate
different surfaces. After matching the lights simply set one to Illuminate Flagged Surfaces Only and the other to
Don't Illuminate Flagged Surfaces
Smaller AO Shading Rates often produce more accurate shadowing on objects with fine detail.
Although rendering my be slightly slower, objects with Sub-D applied usually look significantly nicer in renders then those where the base mesh is used.
Other than specular, 100% reflective or refractive objects, such as chrome and clear glass, often look the same even with
no light or shadows hitting them.
Rendering can go faster by flagging such items to not receive shadows (a setting on some surface shaders) or flagging
the surfaces so the ambient light does not illuminate them at all.
The parameters of the Light group contain settings which are familiar to, and work much the same as, those of standard DAZ Studio Lights.
In this group you can adjust the color and intensity of the light as well as control the range of the light.
Occlusion is not calculated beyond the radius ensuring that renders are as fast as possible.
The Falloff Color sets the color of the light which is beyond the Light Radius. A falloff color of black will
probably be the most common usage but control is available to adjust the light color outside the radius should a special
Illumination - Drop down menu to set the light to On (Illuminate both Diffuse and Specular)
Diffuse only, Specular only or Off.
__category - A text name may be entered into this setting to allow shaders, with custom illumination loops, to process
only lights with a matching category name.
Light Intensity - Sets the overall strength of the light. The limits of this setting can be increased if a very bright light is necessary.
Light Color - Color setting allowing the adjustment of the overall hue of the Illumination within the Light Radius.
Falloff Color - The color of the ambient illumination that will be cast beyond the Light Radius setting.
Light Radius - The maximum range, in meters, from the light's icon that the Light Color setting and occlusion will be used.
Beyond this distance no occlusion is calculated and the Falloff Color will be used to illuminate surfaces.
Falloff Blend - This adjusts how soft the transition will be between the regular Light Color illumination
and the outer Falloff Color.
Setting this parameter to 0% will cause the light to stop abruptly at the Light Radius.
A setting of 100% will cause the light to fade gently away from the lights location, blending fully into the Falloff Color
at the Light Radius distance.
The parameters in the Occlusion group adjust the appearance and quality of the occlusion based shadows.
There are several speed enhancements, such as adaptive sampling and primitive hitmode.
These enhancements may not look good in all situations.
Fortunately, because of the advanced lighting controls of the light,
you can selectively illuminate different objects with different settings or different lights.
This allows for the speed enhancements to be turned off
for surfaces where higher quality settings are needed yet keep the fast rendering optimizations
for surfaces where the enhancements will have no negative effect.
Adaptive Sampling - When enabled the light will use a lower occlusion sample rate in areas which may require less samples.
In these areas the renderer will use a sample count as low as 1/4 the AO Samples setting.
As shadow quality may suffer, it is recommended that this setting only be used with an AO Samples setting of 64 or higher.
AO Color - Sets the hue of occlusion based shadows. Black will usually give the most believable results but having
the option to change the shadow color allows for more creative freedom.
AO Strength - Sets the strength, or contrast, of occlusion based shadows. A setting of 0% will disable occlusion calculations.
AO Samples - Declares the highest number of rays which will be cast from a surface point to check for occlusion.
Higher samples generally create shadows which are less grainy though overall quality or speed is determined by a combination
of AO Samples, AO Shading Rate and AO Max Error.
Alternate Samples - This setting is the same as AO Samples but an alternate rate which can be used on
surfaces flagged conditionally with options in the Lighting Control Group.
Subsurface Samples - This is another alternate sample rate which will only be used in the pre-render, subsurface scattering calculation pass
in scenes containing subsurface shaders. The AO Samples setting will still be used for the diffuse portion of these shaders but
subsurface calculation can have a speed benefit from using a lower sample count with little noticeable image quality loss.
AO Shading Rate - Similar to "Shading Rate" located in DAZ Studio's render settings, this parameter adjusts how frequently to sample occlusion.
Higher values render considerably faster but the results tend to look washed out and detail may be lost.
The setting is roughly based on geometry and screen space. At an AO Shading Rate of 1 the geometry under every image pixel will cast
occlusion rays. At a setting of 16, rays will be cast from the surfaces only, approximately, every 16th pixel and the result interpolated
over the area of the shading grid.
This setting is strongly tied to AO Max Error.
AO Max Error - A speed versus quality adjustment which sets the maximum allowable interpolation error of the AO Shading Rate.
Provided the AO Shading Rate setting is greater than 1, higher AO Max Error values will render substantially faster.
In my tests there is rarely a noticeable difference at AO Max Error settings above 0.5.
Click the buttons to toggle the effect of each setting
AO Max Distance - A limit to how far away (in centimeters) any two surfaces will will contribute to occlusion.
For instance, the default setting of 250 will tell the occlusion ray not consider any shadow contribution
if the ray travels 250cm without hitting another object.
Though it can slow down renders a bit, scenes with large or far away objects such as buildings, which should cast shadows on to other objects,
may look more believable with longer AO Max Distance settings. A setting of 0cm overrides this function and
causes objects even kilometers away to contribute to occlusion.
AO Cone Angle - A limit on the spread angle that occlusion rays are cast from the surface to check for other, occluding geometry.
Low values check a very narrow angle and produce harsher shadows. High values produce soft, spread out shadows.
Angles nearing or above 90 degrees may cause the geometry to "self occlude" causing artifacts.
AO Bias - Like the bias setting on other lights, this offsets the occlusion shadow calculation a slight distance away from the surface
to avoid self shadowing artifacts. Depending on other settings like Hit Sides - Both and AO Cone Angle,
The Advanced Ambient Light can be a little more sensitive to bias than other lights.
If self shadowing artifacts do appear either increase the bias, apply Sub-D to the geometry or try using Hit Sides - Front.
AO Distribution Curve - This is the formula that controls the rate at which the occlusion shadows fade in strength as distance increases.
Cosine has a sharper falloff producing slightly harsher shadows in corners. Uniform fades at a linear rate
and produces softer, more even shadows. Cosine is probably more physically correct but I often prefer the soft look of
Uniform distribution in my work.
Hitmode - This option tells the render whether it should examine a surface's transparency for every occlusion ray
(Shader Hitmode) or if it should only examine the base opacity strength setting once then use that value for the whole surface
Because Shader Hitmode requires the surface shader code to be run and examined it is usually much slower than Primitive hitmode.
The drawback to Primitive hitmode is that only the opacity strength of a surface is considered and transparency maps
or procedural transparencies are ignored. This causes things like transmapped hair to cast darker and inaccurate shadows.
In scenes where there are no transmapped surfaces, such as architectural renders, you may gain a render speed benefit
from using Primitive Hitmode without any noticeable image quality loss.
Hit Sides - This tells occlusion which side of geometry to consider in shadow calculation.
Front only casts rays from, or hits the side of faces where the shading normal points in a positive direction.
This can sometimes prove useful with creative application.
Back does the opposite, only casting rays from the negative geometric normal facing direction.
Although this setting generally does not produce desirable results, it can be employed selectively to speed up renders
by using it on "Proxy" or "Fantom" objects to produce faster rendering, simplified shadows in one direction only.
Setting to this to Both casts rays and considers hits from both sides of a micropolygon. This option usually produces the best results.
Polygon Facing Direction - This option instructs the light to either use the geometry's default polygon normals
or use forward facing normals when providing illumination.
It is common for shaders, lights or the scene file to adjust the surface normals
so that they never face away from the camera.
For instance, if you place a camera and a standard DAZ Studio light inside of a large cube primitive you would
see light hitting the walls of the box because the renderer is flipping the (normally outward facing) polygon normals
to face inward towards the camera or "Face Forward".
Face Forward is generally a good setting, however it produces poor results when baking
illumination maps because the light will be illuminating the wrong sides of any flipped faces.
In addition to its use in illumination baking, the Surface Normal setting is usually better for calculating subsurface scattering which
reads the surface normal direction to determine were light enters and exits an object. Face Forward will yield incorrect,
though possibly acceptable, results on surfaces with SSS.
The features available under the Lighting Control group allow you to set how the light behaves for different surfaces and objects.
This is where I feel the benefits of the Advanced Ambient Light really come through.
The light examines all the shaders in the scene and looks for certain settings or "flags." The light can then, at your discretion,
adjust the lighting differently for the flagged surfaces.
The light can be told to use lower samples for flagged surfaces, illuminate them at different strengths or even completely ignore those surfaces.
It is also simple to have the light only illuminate surfaces which have been flagged. This allows for different surfaces
to be illuminated by different lights for ultimate control of your lighting.
Set Light Strength with Surface Ambient Strength - When enabled, the Advanced Ambient Light will multiply the
Intensity setting by the Ambient Strength setting of the surface shaders in the scene.
This allows the light strength to be fine tuned for each surface individually.
Only the surface's Ambient Strength
setting is used, not the Ambient Color. Because of this, the surface's ambient color can be set to black,
ensuring the surface does not glow.
Object Cast Shadows - With this set to Respect Object Settings, occlusion based shadows will not be cast from objects
which have their Cast Shadows switch set to off. The light will also respect the Receive Shadows setting available
on some surface shaders.
An object's Cast Shadows setting is found by selecting the object
or figure's root node and looking under the Display Group in the Parameters tab.
When the light is set to Always Cast AO Shadows it will, as the name suggests, calculate AO shadows even for objects which are set
to not cast or receive shadows.
Flag Surfaces With - This drop-down menu offers several options to instruct which surfaces the light should
flag and treat differently.
None disables flagging and the light will treat all surfaces in the same manner.
Diffuse Strength Of... Tells the light to read the Diffuse Strength parameters of surfaces in the scene.
The light will flag any surfaces whos Diffuse Strength matches the light's Diffuse, Ambient or IOR Value setting.
Ambient Strength Of... works the same as the previous setting except that the light examines the Ambient Strength of surfaces
and flags any that have the same value as the light's Diffuse, Ambient or IOR Value setting.
The light can also flag surfaces based on their Index of Refraction parameter (fourth option in the light's drop-down menu).
Note that, for the AoA Subsurface Shader, Reflection Index of Refraction is the parameter that the light examines, not the IOR in the Subsurface Scattering group.
Garibaldi Hair Shader setting will tell the light to flag all hair which uses the Garibaldi hair shader.
I attempted to code the light so that it would recognize and flag the Look At My Hair shader but, unfortunately, its hair shader was not conducive to flagging.
Any of these, will cause the light to flag any and all surfaces where the light
finds a Diffuse Strength, Ambient Strength or Index of Refraction which matches the Diffuse, Ambient or IOR Value setting below,
as well as any hair using the Garibaldi hair shader.
Diffuse, Ambient or IOR Value - This is the setting that will be used to match values on surfaces which are to be flagged.
For instance, let's assume you have transparency mapped hair which is rendering slowly and you would like it to use fewer shadow samples.
You could adjust the hair's ambient strength to 1% then would set the light's Flag Surface Shaders With to Ambient Strength Of...,
then the Diffuse, Ambient or IOR Value to 1% and If Surface is Flagged to Use Alt Samples.
If Surface is Flagged - This menu works in conjunction with the Flag Surfaces With setting.
If a surface is flagged you can choose several ways the light should react to that surface.
The first option, Don't Illuminate, will instruct the light to completely ignore any surface which has been flagged.
No light or self occlusion will be calculated for the flagged surfaces.
Illuminate Flagged Only will cause the light to do the opposite as the previous setting. The light will only illuminate
and calculate occlusion for surfaces that are flagged. This and the above setting can be very useful to have different lights
responsible for illuminating different surfaces or for rendering multiple passes with different objects.
Use Alt Samples will instruct the light to illuminate all objects but use the Alternate Samples setting, in the Occlusion group,
for surfaces which are flagged. This can be used to improve rendering speed by flagging slow rendering or less important background objects.
Use Shader Hitmode can be used when the light's Hitmode is set to Primitive but one or two surfaces with transparency simply
do not look good under the Primitive hitmode. Those surfaces can be flagged to use the slower Shader hitmode
while still receiving the speed benefit of having all other surfaces use the faster Primitive htimode.
Use Primitive Hitmode is intended to provide a rendering speed improvement, when the light is in Shader Hitmode,
by flagging a few surfaces which can benefit from the Primitive hitmode without the image quality suffering.
Use Shader Hitmode and Alt Samples - This is primarily intended to improve the rendering speed of transmapped hair. It allows the surface
to use correctly calculated transparency maps but at a lower sample rate.
Use Primitive Hitmode and Alt Samples - Flagging a surface and using this setting will likely produce the fastest results for the
flagged surface. Because of the Primitive hitmode, this setting may not look correct for transparency mapped surfaces but could be useful for
background items or, simply, for setting transmapped hair to a fast rendering option during draft or test renders.
Tips for Baking Occlusion Maps
DAZ Studio has a very handy built in feature to bake lighting onto a texture map. The process is a bit slow so it is not time efficient
for use in rendering single images in most cases.
Baking ambient occlusion can, however, be a huge time saver for animations. Baked light maps can be produced for every item in a scene that does
not move. The textures can then be used either in the Ambient Color or Diffuse Strength slots of surface shaders.
This will eliminate the need for raytraced occlusion to be used for these surfaces when the animation is rendered.
This could save minutes or even an hour per frame.
Baked AO maps can also be useful in the creation of diffuse textures. I find, bringing in the baked AO map as a layer into Photoshop
serves as a good guide when painting textures. The occluded areas may be good places to add rust since they represent crevices which
could trap water and dirt. The bright areas are more exposed surfaces where paint may be worn and chipped or where wood will have been sun bleached.
When baking ambient occlusion to a texture map the Polygon Facing Direction is very important. This should be set to Surface Normal.
Without this setting, polygons facing away from the camera would automatically flip and receive the incorrect illumination.
Although it would not seem to work properly, setting the light to Hitsides - Both usually produces nicer light maps. The reason is a bit
hard to explain but the result is that polygons which are inside other polygons will render as being in shadow. Without this setting
those inner polygons would cast out rays yet not see the outer polygons covering them. This is because the ray collisions would be on the backside of the
outer polygons which the Hit Sides - Front setting tells occlusion to ignore.
Not all surfaces will bake well in DAZ Studio. Models using UV coordinates outside the 0-1 range, models with geometry errors such as inconsistent
surface normals, or overlapping UVs (within a single material) will likely produce unusable light maps.
Below is a screen capture showing the settings I commonly use when baking illumination in DAZ Studio. Since baking can sometimes be slow
you may wish to use a smaller texture resolution while doing initial test bakes.
It is important to note the
Bake Surfaces Simultaneously mode. Without this setting surfaces will only bake their own occlusion, not the occlusion
cast onto the surface by other objects. To have the bake include the occlusion cast by other objects onto the surface you must also select
and bake those other surfaces at the same time. This is often inconvenient but it is simply how illumination baking is set up in DAZ Studio.
Also keep in mind that the resulting textures are saved using the surface's name. This will cause improper baking if two objects share the
same surface name. For example, all DAZ Studio primitives have the surface name "default". To ensure a sphere primitive sitting on a plane primitive
will properly bake to 2 different textures with unique filenames, you will need to rename one of the surfaces with either DAZ Studio's Polygon Group Editor Tool
or use a modeling application.
Somewhat Rare - DAZ Installer - There have been reports that (on computers running Windows) the DAZ Install Manager does not always install a few of the necessary files
to the correct location. If you load then select the light and it shows only two parameters, Light Color and Light Strength, then the light did not install correctly.
You will need manually move some files into place.
Under the computer's Admin User's folder there must be the following:
And in C:\Users\AdminUserName\AppData\Roaming\DAZ 3D\Studio4\shaders\AgeOfArmour\Light
When using UberSurface - The Advanced Ambient Light will see and respect the Occlusion Shading Rate and Override settings
of the UberSurface shader in all cases except when Ubersurface's Occlusion Shading Rate is set to exactly 4. All other Occlusion Shading Rate settings will
function properly. This was simply a limitation that had to be incorporated in order to allow for greater overall light flexibility.
Somewhat Common - At the time of this writing, all surface shaders will be properly illuminated by the Advanced Ambient Light
but flags can only be read from surfaces which use the DS Default shader, UberSurface, HumanSurface, SimpleSurface and the AoA Subsurface Shader.
I'm experimenting with some DAZ Studio scripting which may allow shaders which have been created in Shader Mixer to be updated and allow for proper flagging.
Somewhat Rare Conditions - Diffuse or specular artifacts may appear when multiple and overlapping
Advanced Ambient Lights are used with different AO Max Distance or AO Cone Angle settings. Differing any other settings should
not cause an issue.
The cause is unknown at this time however, it is
unlikely that the lights would be used in this manner very often.
Only when using Volumetric Atmosphere All functions of the light work with volumes with the exception of when a single light is set to have various intensities
on different surfaces, such as using the Set Light Strength with Surface Ambient Strength feature. This is likely to cause artifacts surrounding lower intensity surfaces.
The issue is a difficult one to resolve due to how atmospheric volumes work. I continue to experiment with volume code in the hopes of finding a fix.
When using Copy and Paste - Using copy from a default DS light which has shadows turned on then pasting onto the Advanced Ambient Light, will cause
DAZ Studio to attempt to use its builtin shadow functions, which the ambient light does not support, such as Deep Shadow Maps. This will cause the light
to render black.
This situation is easily resolved by setting DAZ studio to show hidden parameters, selecting the Advanced Ambient Light and changing the hidden
Shadow Type (Warning DO NOT USE) dropdown to None. The light should then perform correctly.
It appears DAZ Studio requires this menu for all lights. When I removed it from the code, DS replaced it upon loading the light, haha. The
best solution I could find was to hide the setting and add a warning not use it.