This model is suited to render particle distributions with a high albedo because the final color does not depend on the transparency of single volume elements but only on the total transparency along the ray. The albedo of a particle is given by the amount of light scattered by this particle in all directions in relation to the amount of incoming light. If the particle doesn't absorb any light the albedo is one.
As the ray marches through the dust all light coming from any light sources is accumulated and scattered according to the dust type and the current dust density. Since this light accumulation includes a test for occlusion, other objects may cast shadows into the dust.
The same scattering types that are used with the atmosphere in section "Atmosphere" can be used with the dust (the default type is isotropic scattering). They are:
The Henyey-Greenstein function needs the additional parameter eccentricity that is described in the section about atmosphere. This keyword only applies to dust type 5, the Henyey-Greenstein scattering.
As the ray travels through the density field of an emitting halo the color of the particles in each volume element and their differential transparency is determined from the color map. These intensities are accumulated to get the total color of the density field. This total intensity is added to the light passing through the halo. The background light is attenuated by the total density of the halo.
Since the emitted light is not attenuated it can be used to model effects like fire, explosions, light beams, etc. By choosing a well suited color map those effects can be rendered with a high degree of realism.
Fire is best modeled using planar mapping. Spherical mapping and high turbulence values can be used to create explosions (it's best to use a periodic color map and frequencies larger than one).
Emitting halos do not cast any light on other objects like light sources do, even though they are made up of small, light-emitting particles. In order to make them actually emit light hundreds or thousands of small light sources would have to be used. This would slow down tracing by a degree that would make it useless.
The default mapping type is planar mapping.
Since the mapping takes place in relation to the origin of the world coordinate system the following rule must always be kept in mind: Halo container objects ought to be unit sized objects centered at the origin. They can be transformed later to suit the individuals needs.
The different mapping types are explained in more detail in the following sections.
Values larger than one are clipped to one.
is used to get the interval values. Values larger than one are clipped to one.
is used to get the interval values. Values larger than one are clipped to one.
is used to get the interval values. Values larger than one are clipped to one.
The density function is specified by the following keywords:
The exponent keyword is only used together with the poly density function.
The individual functions f(r) are described in the following sections. They all map the value r(x,y,z) calculated by the density mapping onto a suitable density range between 0 and MAX_VALUE (specified with the keyword max_value).
The constant density function can be used to create a constant particle distribution that is only constrained by the container object.
This is actually a cubic spline.
The exponent is given by the exponent keyword. In case of EXPONENT=0 you'll get a linear falloff.
The color map is specified by:
The differential translucency is stored in the transmittance channel of the map's color entries. A simple example is given by
In this example areas with a low density (small f(r)) will be translucent (large differential translucency of 1=100%) and areas with a high density (large f(r)) will be opaque (small differential translucency of 0=0%). You should note that negative transmittance values can be used to create very dense fields.
In the case of the dust halo the filter channels of the colors in the color map are used to specify the amount of light that will be filtered by the corresponding color map entry. For all other halo types the filter value is ignored.
There is no default color map.
The following parameters are used to tune the sampling process:
The individual sampling parameters are described in the sections below.
The default number of samples is 10. This is sufficient for simple density fields that don't use turbulence.
High turbulence values and dust halos normally need a large number of samples to avoid aliasing artifacts.
By default super-sampling is not used. The default values for aa_threshold and aa_level are 0.3 and 3 respectively.
By default jittering is not used. The values should be smaller than 1.0.
Note that jittering is used even if super-sampling is not used.
Thus the halo color map will be repeated by the specified frequency.
Thus the color entry for density f(r)=0 can be moved to phase mod 1.
Special textures use either a texture_map keyword to specify a blend or pattern of textures or they use a bitmap similar to an image map called a material map (specified with the material_map keyword).
There are restrictions on using special textures. A special texture may not be used as a default texture (see section "Default Directive"). A special texture cannot be used as a layer in a layered texture however you may use layered textures as any of the textures contained within a special texture.
A texture map is specified by...
Where NUM_1, NUM_2, ... are float values between 0.0 and 1.0 inclusive. A TEXTURE_BODY is anything that would normally appear inside a texture statement but the texture keyword and {} braces are not needed. Note that the [] brackets are part of the actual statement. They are not notational symbols denoting optional parts. The brackets surround each entry in the map. There may be from 2 to 256 entries in the map.
When the gradient x function returns values from 0.0 to 0.3 the red highlighted texture is used. From 0.3 to 0.6 the texture identifier T_Wood11 is used. From 0.6 up to 0.9 a blend of T_Wood11 and a shiny DMFWood4 is used. From 0.9 on up only the shiny wood is used.
Texture maps may be nested to any level of complexity you desire. The textures in a map may have color maps or texture maps or any type of texture you want.
The blended area of a texture map works by fully calculating both contributing textures in their entirety and then linearly interpolating the apparent colors. This means that reflection, refraction and lighting calculations are done twice for every point. This is in contrast to using a pigment map and a normal map in a plain texture, where the pigment is computed, then the normal, then reflection, refraction and lighting are calculated once for that point.
Entire textures may also be used with the block patterns such as checker, hexagon and brick. For example...
Note that in the case of block patterns the texture wrapping is required around the texture information. Also note that this syntax prohibits the use of a layered texture however you can work around this by declaring a texture identifier for the layered texture and referencing the identifier.
A texture map is also used with the average pattern type. See "Average" for details.