The Appearance View
The Appearance View
The Appearance View is where you will edit the properties associated with a specific appearance. The Appearance View also allows you to preview how your shader will look when rendered.
The Appearance View interface is comprised of the following components:
This swatch gives you a preview of your shader. Click the swatch to update it.
The name of your appearance is always displayed here. In this example, we also see Notes associated with this appearance and the template used to create it.
Settings and Navigation
This bar contains settings for the Appearance View along with buttons for navigating among appearances.
Property/Parameter View Settings
This bar includes a dropdown menu for Slim's Custom Overviews.
This area displays the properties of your appearance and an editor for each.
The UI Components
The Preview Swatch allows you to preview your shader on a simple piece of geometry.
The swatch renders using a number of settings defined in your Preferences. You can override these settings for a particular appearance by revealing the Preview Render Settings, accessed using the toggle illuminated below:
This gives you access to these settings:
- Object Shape
- The shape used during preview rendering. Choose from among: Sphere, Cylinder, Torus, Plane, Cube, Teapot, Volume, RiVolume, or a custom RIB Archive.
- Object Size
- The approximate size of the preview shape. The camera is automatically repositioned so that the apparent size of the geometry on screen is the same. Use this control to get a sense of the scale of various patterns inherent in your appearance.
- Shading Rate
- A basic quality / speed tradeoff control. Higher numbers render faster but at a lower quality level.
- Preview Mode
- Provides settings for how preview rendering is managed - manually or automatically (for the swatch or scene) - and whether the auto mode is triggered aggressively or not. Note that automatic re-renders are triggered only by edits to external parameters.
This section gives you information about the current appearance. The appearance's type, displayed using an icon, and label, displayed as a text entry field are always visible. You can change an appearance's label here.
What follows depends on current settings and the current appearance. Preview Settings are displayed here when enabled (as shown above). Appearance notes and tags may also be visible, depending on options set in the View Menu. In the example below, appearance notes are shown.
Lastly, we see the appearance's source. The type of information displayed depends on the class of appearance you are viewing:
- A function instantiated from a template will list the name of the template here (see above), along with a help icon giving you access to the template description. Users who have enabled Expert Menus will also see the version of the template. When the template used is an old version that requires upgrading, this field will appear in red.
- An instance will list its orignal appearance here in the form of a button. This button will take you to the original appearance.
- An imported shader will list the name of the RenderMan shader - or master - here. The accompanying button will toggle this between a relative and absolute reference.
Every appearance contains a number of properties. These are the elements of how a typical property is displayed:
This icon indicates the class of property displayed and its provider. The presence of an i indicates that a description of that property can be accessed by clicking the icon. Double-click to edit the description.
This is the name of the property that is being edited. Double-click this text to change it. The label will change color when a value is set for a parameter.
This is an editor specific to the property's type.
This menu displays a list of actions and options for your the property. The menu is specific to the class of property displayed.
Classes of Properties
The class of a property is indicated by the icon to left of a property's name. These are the classes of properties with values that can be edited:
- By far the most common class of property, parameters of appearances correspond to parameters of shaders and/or shader functions. Note that the color of this icon will vary, depending on the parameter's value provider.
- Slim Attribute
- Slim Attributes are guaranteed to be constant, and will not be visible within a shader. It is for these reasons that they are useful for controlling the code generation within a DynamicFunction.
- RIB Attribute
RIB Attributes are RenderMan settings that are specific to your shader. These attributes and their values will be represented in the RIB stream when the enclosing appearance is encapsulated into the RIB format. Sample RIB Attributes include:
Much of RenderMan's ray-tracing functionality is controlled via RIB Attributes (in the Ensemble template, for example).
Properties come in several different types. The Appearance Editor presents a different editor for each of these types. The most common types and the editors displayed are presented below:
A single floating-point value, floats are edited using a widget that features both a numerical entry (or "VSlider") and a graphical slider.
An RGB color, colors are edited using Slim's Color Editor, which is raised by clicking the color chip. Additionally, the intensity of a color can be quickly adjusted using the accompanying slider.
point / vector / normal
These three types represent geometric entities in three dimensional space. The X, Y, and Z components are each represented with a VSlider.
Plain old strings are generally not that interesting, though should you want to edit one, an editor is provided. Far more interesting are string subtypes (below).
Some properties may request an alternative editor for a given type using a subtype. Here are some common property subtypes (and applicable types):
The selector subtype can be used for any type to define a finite list of possible values.
This presents a simple on/off switch that represents values of 1 and 0.
A string too long to be edited in one line, the bigstring subtype relies on an external text editor to edit its value.
A string representing the path to a texture file, the texture subtype (as well as similar subtypes for reflection, environment, shadow, etc.) gives access to a file picker, and to texture conversion tools.
The default widget associated with each parameter is only one way to set its value. The value of a parameter can actually come from a number of different places and the Value Provider section allows you to choose this.
Different properties have different combinations of provider options available. The color of the property icon indicates a property's provider.
By default, the value of a parameter will usually be stored as a constant, Internal Value. This means that the value will be hard-coded into the shader and cannot be changed without regenerating the shader.
A parameter with a teal icon indicates that it has an External Value. External parameters are declared as parameters of the shader allowing their values to change without regenerating the shader. When flattening, or instancing a shader, only parameters with external values will be shown.
Some parameters may specify that their value must be provided by another function and will specify a default function to connect to. In this case, the Manifold parameter has specified that by default, it should connect to a SurfacePoint function. You can override this default and connect the parameter to a different function, but the parameter must always be connected to something.
Sometimes expressing the value of a parameter via a static value isn't sufficiently powerful. You might want to, for example, request that the value change from frame to frame via a TCL expression. Setting the Value Provider to TCL Expression causes the icon to turn orange and presents a different entry widget where you can enter a numerical expression. The property menu will contain commands to control and test your expression. For more details see the Tcl Scripting documentation.
The most powerful Value Providers are Connections. The value of the parameter is provided by the output of another function. Because each function can have parameters with values provided by other functions, you can build up powerful networks of functions interconnected through their parameters.
When you choose Connect... from the Property Menu it opens a Connection Browser that allows you to pick a function. It is, in some ways, just like the Appearance Browser. Users can limit the types of functions via the drop-down menu (top left) or "search" via the text window. Existing nodes are displayed in bold for your browsing convenience.
Creating a Connection causes the property icon to turn purple and displays the connection type in the property menu. Note that the name of the connection appearance is displayed within a button. You can use this button to navigate to the connected appearance. Button-1 will edit the appearance in the current editor. Button-2 will edit the appearance in a new editor.
Appearance View Customization Tools
As your networks grow, you may find it difficult to keep track of all of the parameters in all of the appearances in a network.
With any attachable shader, you have the option of viewing a Parameter Overview (invoked by the associated toggle switch). The Parameter Overview displays all external parameters in all of the appearances of the network. This allows you to quickly adjust parameters across your entire network. It also provides a preview of the set of parameters for your compiled shader.
Technically another class of property, collections provide a grouping mechanism for other properties. Collections can serve several different purposes:
Grouping Similar Properties
The most common use of collections is simply to simplify a user interface by hiding properties within the collection. Users can open or close the collection using a disclosure widget (the arrow) and its state is maintained across Slim invocations.
Slim uses the collection class to represent arrays. Individual array elements appear as parameters within such a collection.
Representing Composite Function Types
The fundamental types for parameters are described below. Using a collection, these types can be combined into a composite type to provide a single connection point. The "shadingmodel" type, which contains a color and an opacity value, is represented by a collection. When a collection is used in this manner, it will appear to the user as a parameter.
Defining Custom Interfaces
A template may override the standard interface for a set of parameters, and instead declare a custom user interface or Custom UI. A collection is used to define the Custom UI that should be used and the set of properties that should be represented.
Pinning an Appearance
When editing appearances in a network, you may find you wish to edit the parameters for one appearance and see the result by previewing another. This is made possible by pinning.
Navigate to the appearance with the preview you wish to pin. Then select the Pin toggle. The Preview Swatch will now be locked to this appearance, and the Appearance View will be reconfigured:
With pinning enabled, the Appearance View is divided into two halves:
- The Pinned Appearance This half of the Appearance View will not change as you select appearances. It will always show you the Preview Swatch for this appearance.
- The Current Appearance This half will continue to update as you select appearances. Note that the navigation controls have migrated to this half, and that the current appearance is displayed.
Working with Textures
Slim accepts both TIFF files and Pixar texture files (*.tex), a format optimized for high quality texture filtering and high performance. You can specify textures for use in your shaders through various "file" parameters associated with your shaders (e.g. the File parameter of an ImageFile node connected to a Surface Color parameter in a GPSurface node).
For texture parameters, Slim provides two controls adjacent to the text entry field. The left "folder" button simply invokes the File Picker, which is the most convenient means of loading in a texture file. The button on the right provides a menu of commands to perform on your image.
You can use this menu to open the Texture Settings Editor.
Texture Settings Editor
The Texture Settings Editor is a convenience provided to simplify the task of controlling the details of texture conversion. By selecting entries in this menu you are building up the argument list to the Slim provided TCL procedure: txmake. The TCL proc txmake is merely a cover function for RenderMan's standard texture conversion features and specifically Pixar's txmake utility program. Its purpose is to help track all texture conversion requests and to calculate the mapping between source texture name and destination.
Below is a list of the primary controls. Note that the controls are only visible if you have checked the Convert box...
FileThe image file.
ConvertThis switch controls whether the file should be converted to a texture. The texture controls appear when this switch is on.
Type of texture to create. Type is one of:
- texturemap : standard color or grayscale image
- shadowmap : Pixar's shadowmap format, converted from a depth map.
- env latlong : environment created from a lat-long projection stored in a two-dimensional image.
PrecisionPrecision for each channel of each pixel. By default, each channel is represented by eight bits (a byte). Using -short will represent each channel with a 16 bit (signed) integer. Using -float will represent each channel with a 32-bit floating point number. Note that these options will only work if there is at least as much precision in the source file.
For reasons internal to the texture mapping software, texture files must be an even power of two in width and height (i.e. 256, 512, 1024, 2048, etc). Any input image which is not already a power of two in both dimensions will be resized, as described below:
- up : the image is resized up to the next higher power of two.
- down : the image is resized down to the next lower power of two.
- round : the image is resized to the nearest power of two.
- none : the image is not resized, the texture map size will be the next higher power of two. Texture file area not covered by the image will be set to black. Texture coordinates will be 0 to 1 across the resulting image.
How textures will be accessed when the image is resized:
- corrected : the image will retain its aspect ratio when mapped onto a square patch.
- normalized : texture coordinates will be 0 to 1 across both dimensions.
Extra ArgsExtra arguments for the txmake call.
The icons next to the gridded texture determine the repeat mode for your texture in each direction. This applies when accessing the texture outside of the range 0-1. (See examples in diagram below.)
- black : fill the nether regions with black
- periodic : tile texture
- clamp : smear the pixels at the edges indefinitely
Remember that these controls are only meaningful for external, pre-existing textures. You should use the Reference Texture Menu for computed maps.
Conversion Mapping Modes