User Guide

540 Chapter 12: Methods
shader()
Usage
member(whichCastmember).shader(whichShader)
member(whichCastmember).shader[index]
member(whichCastmember).model(whichModel).shader
member(whichCastmember).modelResource(whichModelResource).\
face[index].shader
Description
3D element, model property, and face property; the object used to define the appearance of the
surface of the model. The shader is the “skinwhich is wrapped around the model resource used
by the model.
The shader itself is not an image. The visible component of a shader is created with up to eight
layers of
texture. These eight texture layers are either created from bitmap cast members or
image objects within Director or imported with models from 3D modeling programs. For more
information, see
texture.
Every model has a linear list of shaders called the
shaderlist. The number of entries in this list
equals the number of meshes in the model resource used by the model. Each mesh can be shaded
by only one shader.
The 3D cast member has a default shader named
DefaultShader, which cannot be deleted. This
shader is used when no shader has been assigned to a model and when a shader being used by a
model is deleted.
The syntax
member(whichCastmember).model(whichModel).shader gives access to the first
shader in the model’s
shaderlist and is equivalent to
member(whichCastmember).model(whichModel).shaderList[1].
Create and delete shaders with the
newShader() and deleteShader() commands.
Shaders are stored in the shader palette of the 3D cast member. They can be referenced by name
(
whichShader) or palette index (shaderIndex). A shader can be used by any number of models.
Changes to a shader will appear in all models which use that shader.
There are four types of shaders:
#standard shaders present their textures realistically.
#painter, #engraver, and #newsprint shaders stylize their textures for painting, engraving, and
newsprint effects. They have special properties in addition to the #standard shader properties.
The shaders used by individual faces of
#mesh primitives can be set with the syntax
member(whichCastmember).modelResource(whichModelResource).face[index].shader.
Changes to this property require a call to the
build() command.
Example
This statement sets the shader property of the model named Wall to the shader named
WallSurface:
member("Room").model("Wall").shader = \
member("Room").shader("WallSurface")
See also
shaderList, newShader, deleteShader, face[ ], texture()