This is the most powerful and commonly used material type of the program. All materials, which you can find in the default material library, are of this type. The reason why VSL materials are so powerful is that the 'low level' interface of the VSL materials is a programming language. Advanced users can therefore implement unusual and customized material effects. Don't be alarmed by the term 'programming language', you do not have to write complex formulas and algorithms, because VSL materials can be built using wizards and an easy drag and drop interface. Consequently, it is easy to get started. Nevertheless, in order to fully utilize the possibilities of VSL, some programming experience is required.
|
Using VSL materials is very easy. VSL makes it possible to build an optimal interface for each material type. You can see this by examining the materials of the default library in the property window. The following control groups are available for VSL material building and editing:
|
![]() |
The topmost area of the VSL material editor shows a set of gadgets that are displayed both in the easy to use interface and in the advanced editing state. These controls are:
Name: The name of the currently edited material. The editing target can be changed by choosing another material from the list.
Preview Window: The squared little window at the top right edge of the material editor is actually a View Window. Therefore, you can rotate, zoom and pan it with the right mouse button and Alt, Shift and Ctrl modifier keys. The window also has a small popup menu:
Reset: Resets the viewing position back to the default front view.
light properties, material preview, ...: The rest of the menu items show the contents of the 'preview' folder. You can choose a suitable preview project here instead of browsing from the 'File' gadget.
Disabled: Turns off all properties of the material. If the material is mapped to a geometry, the geometry renders as if the material was not mapped at all, or deleted from the material library.
Advanced: This checkbox brings up the advanced VSL editing controls.
Wizard: A list of VSL wizards, which automatically add some commonly needed material appearances and features to the edited material. For more information, check the wizard list.
Add: Adds the currently selected wizard elements to the edited material. As a result, a set of new VSL objects and top level controls appear to the material. Note that the same wizard may be applied several times to the material; the program does not check or prevent this. For example, a material may include several texture maps which are blended together.
The advanced VSL controls are divided into the following three tabs:
New - Contains a list of available VSL objects. Selecting a sub menu item adds the corresponding VSL object to the currently edited VSL level.
Cut - Cuts the selected VSL object (and its possible sub objects) into Realsoft 3D's VSL clipboard.
Copy - Copies the selected VSL object into Realsoft 3D's VSL clipboard.
Paste - Adds the contents of the Realsoft 3D VSL clipboard to the end of the edited VSL block.
Duplicate - Duplicates the selected VSL object to the end of the same level.
Delete - Removes the selected VSL object.
Output - You can select the output channel/variable of the selected VSL object from this menu.
Operator - The mathematical operation which is used when assigning the result of the evaluation of the selected VSL object to its output parameter.
Input0, Input1 ... - You can set the input parameters for the selected VSL object with these menus.
Rename - Renames the selected VSL object (slow double click also works). VSL objects can be renamed to make the code better understandable for other users.
![]() |
Note |
|---|---|
| Renamed objects no longer update their names automatically when the input and output parameters change. |
Disabled - Removes the selected VSL object from rendering computations. This feature is useful when building and experimenting with the VSL code.
Balanced Layout - The VSL hierarchy will be displayed using horizontal tree layout.
Properties - Opens a floating window which shows the object specific attributes of the selected VSL object.
VSL Objects - An array of currently installed VSL objects. You can drag and drop items from this array to the VSL shader hierarchy. Clicking a VSL object icon adds it to the end of the level where the currently selected VSL object is located. Note that VSL object hierarchy follows some syntax rules, and a certain object may not fit into some parts of the hierarchy. For example, the root level of the hierarchy can contain only variables and shaders, and a shader cannot be placed into another shader. When using drag and drop, the mouse pointer symbol tells you where you can drop an object. If you click a VSL icon in the array and nothing happens, the reason is most likely that the current destination is not allowed.
The Attributes tab contains the tools for creating an easy to use interface for VSL materials. The controls are:
Attributes - A list of all attributes of all VSL objects in the current material. You can pick an item from this list and make it visible in the easy interface with a suitable name. The list includes a simple popup menu, whose items 'Show' and 'Hide' serve the same purpose as the two buttons described below.
|
Name - Displays the name of the selected attribute. By default, attribute names describe their general nature. For example, 'Amplitude' defines the magnitude of the 'Noise' object's value variation. You can change the name to describe the particular purpose of the attribute in the edited material. For example, 'Wave Height' might be a better name than 'Amplitude' for a sea water material. Show - Adds the currently selected attribute to the easy interface. Hide - Removes the currently selected attribute from the easy interface. |
![]() |
![]() |
Note |
|---|---|
| Attributes of deleted VSL objects automatically disappear from the constructed interface. |
At the bottom of of the Attributes tab, you can see the defined GUI for the material. The same interface will become visible when you turn off the advanced editing state.
Mapping Tab
|
The rightmost tab of advanced controls defines how the created material should be mapped to target objects. The specifications made here are used by the drag & drop system. The user can overrule them by selecting another mapping type from the mapping creation tools. |
![]() |
The following controls are included:
Recommended Mapping: Select the preferred mapping type from this gadget.
Priority: Evaluation order recommendation. By default, materials are evaluated in the order they appear in the hierarchy, deep sub level materials last. The hierarchy defined evaluation order can be overruled with the mapping priority setting. The higher the priority, the earlier the material will be evaluated.
![]() |
Note |
|---|---|
| This means that the material will have a weaker effect! Later evaluated materials can overwite the result. Some special materials, such as a global illumination shader, may work best if it is evaluated last. Because most materials have the default priority 0 and only some built in shaders use evaluation priority -2 .. +2, a value -5 is usually sufficient to guarantee that the material is evaluated last. |
Fixed size: If set, the size of the mapping geometry does not automatically resize to match the size of the mapping target object.
Fixed proportions: If set, the proportions (width, height and depth) of the mapping geometry do not automatically stretch to match the size of the target object. For example, parallel map always becomes a symmetric cube if this option is set.
If the recommended mapping is set to 'Any Mapping', drag & drop system creates a mapping that best matches the geometry of the target object. Spheres will get a spherical mapping, cylinders gets cylindrical mapping, etc.
The leftmost tab on the bottom of the VSL editor window shows the object specific attributes of the selected VSL object. Therefore, the tab contents changes from object to another. Object specific VSL attributes are described in VSL objects.
|
= |
Default assignment, overwrites the old value with the new one |
+ |
Adds the new value to the old value |
- |
Subtracts the new value from the old value |
* |
Multiplies the old and the new value |
/ |
Divides the old value by the new one |
Min |
Assigns the minimum of the new and the old value to the output channel |
Max |
Assigns the maximum of the new and the old value to the output channel |
Abs |
Assigns the absolute value of the computed expression to the output channel |
This option is provided for convenience. Many of the available channels are such that they must be normalized whenever their value is changed. The term 'normalize' means that the value of the channel is divided by its length, the result being always a unit vector. For example: normalization of vector (3, 4, 0) equals (3/5, 4/5, 0). The channels, which are (and should be kept) in normalized form are:
This option performs a 3D transformation to the orientation defined by map x, map y and map z channels
(x,y,z) -> x*map x + y*map y + z*map z
|
Antialiasing defines the relation of how quickly computation accuracy is increased when level of detail grows. If the value is zero, anti-aliasing computations are switched off. A good default value is 1. The Threshold setting controls the level of detail when the anti-aliasing starts. The lower the value, the easier antialiasing starts. The minimum value is 0. |
![]() |
U-samples and V-samples define how many times the object is maximally evaluated for anti-aliasing purposes. The system is designed so that by setting the u & v samples to the level that corresponds the 'native' level of detail of the object (for example: pixel resolution of texture map object), anti-aliasing factor 1 and threshold value of 1 are optimal. However, because of speed reasons, it is not always possible to use high enough sample values (1000000 samples for a 1000*1000 pixel texture map is too slow), so sometimes lowering the trigger value and increasing the antialiasing value may be necessary.
Note also that sometimes it may be necessary to use higher u-v-sample values than the texture resolution: for example, a simple 2*2 pixel checker pattern may require 4*4 samples because of the random nature of the anti-aliasing process.
This option disables the object in ray trace rendering. The result is the same as if the object were deleted. The option is useful when experimenting with the materials.
Tip
The Tip string can contain some optional information about the purpose of the VSL object, instructions how to adjust the shader or other user-defined information. The Tip string control is the preferred way to add such comments, because renaming a VSL object stops the automatic name updating when input or output parameters or other attributes affecting the name of the VSL object change.