[welcome] [download] [documentation] [gallery] [how to contribute] [writing shaders] [contributors]

 
Shades Documentation

You should find the Shades plugins very easy to use if you have any familiarity with Lightwave texture mapping. Most of the Shades interfaces look similar to the one shown below. The top two areas of the interface contains parameters very similar to the standard Texture Mapping panel (chapter 5 of the Lightwave 5.5 Reference Manual). The main difference is that all of the float and 3-vector requesters in the Shades interface have optional envelope values that can be assigned to the parameter. You will want to consult the Lightwave 3D Reference Manual, chapter 14 for documentation on how to use the Lightwave envelope editor.

A new section of parameters have been added to many of the shaders in this new release. This set of parameters will be referred to as the "Common Shading Attributes" section. A screen capture of this section appears below.

This section of the plugin should need very little explanation as well. It allows you to modify the surface attributes of a part of the texture independently of the underlying surface's attribute. The attributes can be animated over time using envelopes, and the value used for these attributes can be filtered with a gradient before modification of the surface attribute actually takes place. There is a toggle button in front of every attribute which allows the user to select which attributes will be chosen to modify the surface.

The Color attribute will allow the specified part of the texture to determine the color of the point currently being rendered. If the texture's value at a particular point is 0, the underlying surface color will be used. If the value is 1, the Color value will be used. Values in between will blend the two colors appropriately.

Color is the only attribute that does not have envelope capability (I didn't see an easy way to combine both envelope and gradient access to vectors). However, the color can be animated over time by using the Color's Gradient. Click on the G button next to the Color requester. Now pull down the menu labelled "Input Parameter" and choose "Time" rather than "Shader Value". This only allows the Color attribute to be one color per frame, but that color is animated through the gradient based on the time of the current frame.

The other surface attributes (Luminous, Diffuse, Specular, Reflectivity, Transparency, and IOR) can be modified based on time and gradient filtering of the shader function's results. Make sure the toggle button in front of the attribute is checked for the modifications to be enabled for that attribute. Also note that these values are NOT percentages like they are in Lightwave's main surface atrribute panel. Instead of values in the range of 0 - 100%, you should be using values in the range of 0 - 1. But don't be afraid to try values outside of that range as well.

If both the Envelope (E) button and the Gradient (G) button are NOT active, the value in the requester will be multiplied by the basis function's return value. The result of that multiplication will be used as the new value for that attribute.

If the Envelope (E) button is active, the value in the requester will be ignored, and the value used for the multiplication described above will be evaluated from the Envelope, based on the current frame/time.

If the Gradient (G) button is active, the basis function's return value will be used to look up the filtered value from the Gradient. That filtered value will then be multiplied by the requester value or the Envelope value, depending on whether the Envelope is active or not. The result of that multiplication is used for the new surface attribute.

The Gradient and Envelope capability of the Bump Amp. parameter works in the same way as the other surface attributes. The final value returned from the evaluation of the envelope and gradient will be used to increase or decrease the amplitude of the bump vector.


Shades individual shader parameters

 

AF_Cyclone3D



AF_PuffyClouds3D



AF_Strata3D



EE_Gloss


EE_Oren_Nayer


GM_Apple_Skin



GM_Blue_Marble



GM_Eroded



GM_EyeBall2D



GM_Fractal_Marble



GM_Green_Marble



GM_Marble_2



GM_MetalReflect



GM_Perlin_Marble



GM_Saturn



GM_SaturnRings



GM_Screen2D



GM_SideReflectivity



GM_SoftReflections



GM_Specular_Color



GM_Stars_And_Moons


GM_Stucco3D



GM_SuperDents



GM_Velvet



GM_Venus



GM_Wood1_2D



GM_Wood2_2D



ML_Brick2D



ML_Coriolis3D



ML_Dented3D



ML_Fire2D

Time Factor - The time factor is used to control the speed of the animated flame. 1.0 was chosen to be a good speed for 30 frame per second animation. Larger values will speed up the frame, smaller values will slow it down.

Top, Midtop, Midlow, and Low Colors - The colors that make up the flame, from top to bottom


ML_LandColor5D

The LandColor5D shader was inspired by Dan Ritchie's LandColor lscripts. When Dan released those, it was just after Shades had been released, and I realized how nice they would be in Shades. I wrote Dan and asked about his scripts, and he gave me permission to try and translate them to Shades. Well, once I got started, I saw all kinds of neat new additions and just kept adding new things, such as the Musgrave fractalization capability.

So here are some of the unusual ways the Texture parameters are being used, and a little documentation about the LandColor5D parameters.

The Texture Mapping parameter is going to be used a little differently. My shader needs to know what direction is up, and that direction is determined differently based on the Texture Mapping parameter. For Planar mapping, nothing is unusual. For Cylindrical mapping, the up direction for any point is found by drawing a perpendicular line from the Texture Axis to the point. For Spherical mapping, the up vector is determined by drawing a vector between the center of the object, and the point in question.

Why did I do things this way? This allows me to have a "bumpy" sphere or cylinder be colored like a landscape as well. For example, if I had a mesh of the world with mountains, valleys, etc., I could wrap that into a sphere, and now have a "relief mapped sphere" of the world. By using Spherical Texture Mapping, the height of the terrain is calculated from the center of the sphere (as well as the slopes being calculated from the up direction). So the Landcolor shader will color this bumpy sphere correctly.

Realize that because of the unusual way these Texture Mapping and Texture Axis parameters work, you may not see what you think you should see in the Surface panel's preview renderings. For instance, if you have Spherical turned on, the Sphere preview will always be a solid color. Why? Because all points on the sphere are equidistant from the center, and they all have the same slope.

Most people will use this shader on DEM type landscapes, so the Planar mapping will work the way they expect. Only the more adventurous types will see the need for Spherical or Cylindrical mapping.

Another unusual part of the Texture parameter area is that the Anti-Aliasing button has been replaced by a Fractalize button. Click on it and you will find the Fractal Playground based on many of Musgrave's routines. These parameters will allow you to fractalize the coloring and and pseudo-bumpmapping used in this shader. I won't explain much more here, it is a playground so just play :-). You can turn off the Fractalization by choosing "No fractalization" from the top menu in the Fractalization popup panel.

That's it for the unusual Texture parameters. The rest are fairly self- explanatory parameters for the shading of the land. I tried to put the parameters in a logical order from top to bottom, so here is the quick explanation.

I put the Color parameter either above or below it's floating point parameter(s) for a reason. For example, the Snow Color parameter is below the Snow Slope parameter because no snow will be rendered on slopes greater than the Snow Slope value. The Snow Color is above the Snow Level parameter because snow will only appear above that height.

The same is true for the Rock, Bare, and Grass Colors. Those colors will only appear on slopes greater than (they are above) the corresponding Slope parameters. So if you look at the default parameters, Rock Color will only appear on triangles whose slopes are greater than 60 degrees, Bare Color on slopes greater than 30, and Grass Color on slopes greater than 5 degrees.

The Sand Color will never appear above the Sand Line. The Fractal factor is tied to the , and is used to determine how "fractal" your sandline looks.

Neither of the Water Colors (Mud or Deep) will appear above the Water Line. The Total Depth option can be used because not all water is flat. By keeping this number close to the actual height of the water in your mesh, you will spread out the Mud and Deep Colors evenly throughout the water's depth.


ML_Parquet2D

Plank Width - The width of each plank.

Planks per Tile - The number of planks used in each tile.

Plank Variety - How much the wood color varies from plank to plank.

Groove Width - The width of the grooves between the planks.

Ring Scale - The tree ring spacing.

Waviness - The relative waviness of the ring pattern.

Grain Scale - Scaling for the fine grain.

Graininess - The relative graininess of the texture (0 = no fine grain).


ML_Planks2D

Plank Width - The width of each plank.

Plank Length - The length of each plank.

Plank Variety - How much the wood color varies from plank to plank.

Groove Width - The width of the grooves between the planks.

Ring Scale - The tree ring spacing.

Waviness - The relative waviness of the ring pattern.

Grain Scale - Scaling for the fine grain.

Graininess - The relative graininess of the texture (0 = no fine grain).


ML_Strata5D

Intended to be used with LandColor5D, to restrict the strata lines to a specified range of slopes. This shader does not hardwire the colors, but instead uses various shades of the surface color, and 3 user defined colors that you don't want to be a shade of the surface color.



RW_Hextile2D




Hints and Tips

If a requester's E button is highlighted, the numeric field will display the envelope's value at key 0 . It will be ghosted, and the user will not be able to enter values in the numeric requester unless the envelope is removed.

Before you activate a requester's E button, enter a value you want to remember into the numeric requester. If the newly created envelope is ever removed, this value will re-appear in the numeric requester.


Bugs

(Alpha version) Envelopes are not loaded correctly when these shaders are saved in an object. Make sure you do NOT have any envelopes activated when you save an object that uses one of these shaders. The saved envelopes may cause Lightwave to crash, and leave you unable to load the object again. This appears to be a bug in the Alpha version of the envaccess.p global plugin. See the shades_warning.txt file, included with the Alpha plugin archive for more details.

(All versions) When an envelope button is selected for the first time, the existing value from the numeric requester is used for the envelope's first key frame value. When the envelope editor appears, the graph shows the proper key fram value, however the Current Value field shows 0. Click once in the graph area, and the Current Value field will be updated correctly. This appears to be a bug in the envaccess.p global plugin.

(SGI version) When Center, Size, and Velocity requesters are ghosted, not all fields are dimmed. The functionality of the requesters work correctly (the user cannot click in the field, or make any entries), and the requester labels are dimmed as they are supposed to be. Only the values in the requesters are not dimmed correctly. This seems to be a bug with the SGI version of LWpanels.

 

 

s i t e d e s i g n - v i s u a l e y e s