SHADETREE-DEFS(1) Cinema Graphics, Inc. SHADETREE-DEFS(1)
NAME
shadetree-defs - Definition file command description
DESCRIPTION
When ShadeTree boots, it first loads default settings from the master
defaults file %STREE_DIR%\mray\stree.def'. This file should
not be edited by anyone.
ShadeTree then checks for and loads the following files:
%HOMEDRIVE%\%HOMEPATH\.stree.def # in your home directory
.\stree.def # in the current directory
These files may contain any commands that can be found in the master
defaults file, and can therefore effectively override the master default
settings, or append to them. These commands are described below.
Note: In all cases where pathnames are specified, pathnames starting
with '.' are assumed relative to the working directory. Pathnames
that are otherwise relative (i.e. which don't start with '\', such as
images\wallpaper.sgi) are relative to $STREE_LIB (e.g. C:\shadetree\mray).
HEADING DESCRIPTIONS
--------------------
NAME - Shows the name of the command, and an overall syntax.
EXAMPLE - An actual example of the command.
CONTEXT - Lists the commands that this command is supposed to appear
within. For instance, the 'label' command creates a label
widget. This command is only relevant within the context
of the 'roe' command, so the CONTEXT for 'label' shows 'roe'.
DESCRIPTION - A description of the command, and its usage.
CAVEATS - Exceptional notes of interest.
1.0.0 Render Options Editor (ROE) The Render Options Editor is pretty flexible as of version 0.10.4; you can completely define the interface using ASCII commands in the 'roe' section of the stree.def file. These commands define the input fields, their position in the Render Options Editor window, their default values, and the environment variables and/or action messages sent to the main program.
1.1.0 Miscellaneous Commands
1.1.1 roe - The ROE Construct NAME roe { roe init cmds roe context cmds } CONTEXT none DESCRIPTION Starts the definition construct for the Render Options Editor (ROE). Only roe related commands can appear within the construct. This construct defines all the data input fields in the ROE. EXAMPLE roe { # CLEAR ANY PREVIOUS WIDGETS FROM THE ROE clearall # MAIN WINDOW DIMENSIONS winwidth 381 winheight 627 # DEFINE A LABEL WIDGET label { label RENDER OPTIONS } # AN X/Y FIELD WIDGET xyfield { optionlabel Resolution value 256,256 separatorlabel X envname STREE_RES envseparator "," forcefloat optioncontents { 256,256 512,512 800,800 } } # OTHER WIDGETS CAN BE DEFINED HERE }
1.1.2 winwidth - Width of dialog window NAME winwidth <pixels> EXAMPLE winwidth 320 CONTEXT roe DESCRIPTION Defines the width (in pixels) of the Render Options Editor window. It helps to use the Spy utility, included in the Microsoft Visual C++ program group, to determine the dimensions for the window after manually resizing it, and then plug those values into 'winwidth' and 'winheight'.
1.1.3 winheight - Height of dialog window NAME winheight <pixels> EXAMPLE winheight 560 CONTEXT roe DESCRIPTION Defines the height (in pixels) of the Render Options Editor window. It helps to use the Spy utility, included in the Microsoft Visual C++ program group, to determine the dimensions for the window after manually resizing it, and then plug those values into 'winwidth' and 'winheight'.
1.1.4 clearall - Clear all widget definitions NAME clearall CONTEXT roe DESCRIPTION Clear all input field definitions for the Render Options Editor. Usually, do this at the top of the roe definition to clear out any previous definitions. If you don't do this, any definitions will be appended to any previously defined input fields. Use 'clearall' in the stree.def in your home directory or the working directory in which you run your program if you want to totally redefine the Render Options Editor, rather than to append to the existing one.
1.2.0 Field Inputs - Defining widgets
1.2.1 label - The Label Widget Construct NAME label { label context cmds } CONTEXT roe frame DESCRIPTION The 'label' construct defines a Label widget in the current context. Examples of a label construct: # LABEL CONSTRUCT # All possible contents # label { # REQUIRED: 'label' sets the text message # label RENDER OPTIONS # OPTIONAL: 'justify' sets justification of text within the # containing Frame. Can be any of: # # left, center, right # justify center # OPTIONAL: 'resize 0' disables auto-sizing of the # frame around the text. Default is enabled (1). resize 0 # OPTIONAL: Set 'width' if you want to specify a fixed value # (in pixels). You must use 'resize 0' first for # this command to work. # width 50 # OPTIONAL: Set 'height' if you want to specify a fixed value # (in pixels). You must use 'resize 0' first for this # command to work. # height 30 }
1.2.2 xfield - The single value field (shading rate, zoom) NAME xfield { xfield context cmds } CONTEXT roe DESCRIPTION Defines a single field of information, complete with a chooser, text window, and help button. Values entered will be assigned as an environment variable, whose name is defined by 'envname'. Subcommands can be any of: envname <varname> - Defines the name of the environment variable the value entered will be assigned to. forcefloat - Optional. Indicates the values saved should be forced to have a decimal point. If user enters '4', the saved value will be '4.0'. nostreesave - When saving a foo.str file, DON'T save this value's settings into it. optionlabel <text> - The label on the chooser will be set to this text string. value <text> - The initial value of this string optioncontents - The contents of the option (chooser) button { goes here, one option per line. text text } help - Defines the help text that comes up when { you click on the help button. Leading white text space is ignored. If you want to indent, } use '>'. EXAMPLE # SHADING RATE FIELD xfield { # MANDATORY: 'envname' defines the name of the environment # variable that is passed to the render script with # the value the user enters. # envname STREE_SHADERATE # MANDATORY: 'optionlabel' specifies the text that appears in the # option button. # optionlabel Shading Rate # MANDATORY: Specifies the default value for the field value 2.0 forcefloat # OPTIONAL: Specifies the contents for the popup option menu # button. When the user selects these, the value is # copied into the text window. Only the first token # in the option value is used in the environment # variable setting (in the example below, the word # parenthesized comments appear only in the menu). # optioncontents { 8.0 (fast) 4.0 2.0 1.0 (norm) 0.75 0.50 0.25 (slow) } # OPTIONAL: Specifies the help text that appears when the user # clicks on the 'i' information help button. Leading # white space is stripped. help { Shading Rate; sets the frequency of shading a surface. Basically, higher numbers render faster. The value is an area in pixels: > 2.0 - surface is shaded once per two pixels > 1.0 - surface is shaded about once per pixel > 0.5 - surface is shaded about twice per pixel } }
1.2.3 xyfield - The two value field (resolution) NAME xyfield { xyfield context cmds } CONTEXT roe frame DESCRIPTION Defines a double field of information, complete with a chooser, two text windows (one for each value), and help button. Values entered will be assigned as a single environment variable, whose name is defined by 'envname'. The two values are separated by the character defined in 'envseparator'. Subcommands can be any of: envseparator <text> - Optional. Defines the character that separates the two values within the single environment variable. Default is a ",". The character must be quoted. " " is allowed. envname <varname> - Defines the name of the environment variable the value entered will be assigned to. forcefloat - Optional. Indicates the values saved should be forced to have a decimal point. If user enters '4', the saved value will be '4.0'. nostreesave - When saving a foo.stree file, DON'T save this value's settings into it. optionlabel <text> - The label on the chooser will be set to this text string. separatorlabel <text> - Optional. Defines character to be displayed between the two value text windows. value <text> - The initial value of this string. Text should be quoted. optioncontents - The contents of the option (chooser) button { goes here, one option per line. text text } help - Defines the help text that comes up when { you click on the help button. Leading white text space is ignored. If you want to indent, } use '>'.
1.2.4 xyzfield - The three value field (object rots, Frame ranges) NAME xyzfield { xyzfield context cmds } CONTEXT roe frame DESCRIPTION Defines a triple field of information, complete with a per-value chooser, three text windows (one for each value), and a help button. Values entered will be assigned as INDIVIDUAL environment variables, whose name is defined by '[xyz]envname'. headinglabel <text> - General heading title for the frame that contains the 3 values. xenvname <text> - Defines the name of the environment variable yenvname <text> the associated value is assigned to. zenvname <text> xoptionlabel <text> - Defines the text that appears in each button. yoptionlabel <text> zoptionlabel <text> xvalue <text> - Defines the default value that appears in yvalue <text> each text window, above each button. zvalue <text> forcefloat - Optional. Indicates the values saved should be forced to have a decimal point. If user enters '4', the saved value will be '4.0'. nostreesave - When saving a foo.str file, DON'T save this value's settings into it. xoptioncontents - The contents of the option (chooser) buttons, { one option per line. text text } yoptioncontents { same as above } zoptioncontents { same as above } help - Defines the help text that comes up when { you click on the help button. Leading white text space is ignored. If you want to indent, } use '>'. EXAMPLE xyzfield { headinglabel Object Rotation xenvname STREE_OBJ_ROTX yenvname STREE_OBJ_ROTY zenvname STREE_OBJ_ROTZ xoptionlabel X yoptionlabel Y zoptionlabel Z xvalue 0.0 yvalue 0.0 zvalue 0.0 forcefloat xoptioncontents { "-180.0 (Upside Down)" "-90.0" " 0.0 (Front View)" " 90.0" "180.0 (Upside Down)" } yoptioncontents { "-180.0 (Back View)" "-90.0" " 0.0 (Front View)" " 90.0" "180.0 (Back View)" } zoptioncontents { "-180.0 (Upside Down)" "-90.0" " 0.0 (Front View)" " 90.0" "180.0 (Upside Down)" } help { Rotates the object around XYZ axes. } }
1.2.5 button - Single push button NAME button { button context cmds } CONTEXT roe frame DESCRIPTION To be done. EXAMPLES button { buttonlabel Render It actionto form actionmsg render actionarg render }
1.2.6 ledbutton - State button NAME ledbutton { ledbutton context cmds } CONTEXT roe frame DESCRIPTION To be done. nostreesave - When saving a foo.str file, DON'T save this value's settings into it. EXAMPLES ledbutton { buttonlabel Custom Render actionto streemainwindow actionmsg custom-render-toggle-roe-noupdate envname STREE_CUSTOMREN_FLAG envon "on" envoff "off" state 0 }
1.2.7 chooser - Single one-of-n chooser NAME chooser { chooser context cmds } CONTEXT roe frame DESCRIPTION To be done. nostreesave - When saving a foo.str file, DON'T save this value's settings into it. EXAMPLES chooser { resize false envname STREE_OBJECT value sphere choosercontents { sphere patch cylinder corner } }
1.2.8 okfield - The OK and DEFAULTS buttons NAME okfield { okfield context cmds } CONTEXT roe frame DESCRIPTION To be done. EXAMPLES okfield { defaults_actionto roe defaults_actionmsg use-defaults defaults_actionarg noarg ok_actionto form ok_actionmsg roe ok_actionarg hide }
1.2.9 stringinput - Input strings and filenames input NAME stringinput { stringinput context cmds } CONTEXT roe frame DESCRIPTION To be done. nostreesave - When saving a foo.str file, DON'T save this value's settings into it. EXAMPLES stringinput { label Custom Render Script value bin/custom-render file 1 envname STREE_CUSTOMREN help { Sets the pathname to the custom render script. When 'Custom' button is highlighted, this is the script that is executed whenever you hit 'Render'. } }
1.2.10 frame - A container for any of the above widgets NAME frame { { frame control commands } frame context cmds } CONTEXT roe frame DESCRIPTION To be done. EXAMPLES frame { { # THESE COMMANDS CONTROL THE FRAME vertical 2 } label { resize false width 20 height 10 label Shader justify right } chooser { resize false envname STREE_SHADER_TYPE value surface choosercontents { surface displace light volume } } }
2.0.0 Tool Bar
2.1.1 toolbutton - defining the tool bar defaults NAME toolbutton <num>=<boxname> CONTEXT none These commands pre-program the toolbar buttons (currently 0-7) to access any of the items in the Operation Menu Bar. toolbutton 0=add toolbutton 1=subtract toolbutton 2=multiply toolbutton 3=divide toolbutton 4=negate toolbutton 5=mixed toolbutton 6=UserDefined toolbutton 7=rgb2color
3.0.0 Desk Options (desk)
3.1.1 desk.setbgimage - background image for the desk NAME desk.setbgimage <pathname> CONTEXT none DESCRIPTION This command should point to an .rgb or .sgi image that is to be dropped into the desk's background. This isn't used much, unless you want to drop a picture of you wife and kids into the ShadeTree interface.
3.2.1 desk.backgroundcolor - background color NAME desk.backgroundcolor <r> <g> <b> CONTEXT none DESCRIPTION Sets the background color for the desk. Values are 0.0 to 1.0.
3.3.1 desk.rubberbandcolor - rubberband box color NAME desk.rubberbandcolor <r> <g> <b> CONTEXT none DESCRIPTION Sets the color of the 'rubber band' line used to lasso boxes. Values are 0.0 to 1.0.
3.4.1 desk.connectcolor - color of connect lines NAME desk.connectcolor <r> <g> <b> CONTEXT none DESCRIPTION Sets the color of the inter-connection lines between boxes. Values are 0.0 to 1.0.
3.5.1 desk.selectedconnectcolor - color of connect lines when selected NAME desk.selectedconnectcolor <r> <g> <b> CONTEXT none DESCRIPTION Sets the color of inter-box connection lines when they are selected (clicked on with the left mouse). Values are 0.0 to 1.0.
3.6.1 desk.showvarnames - show var. names above connect lines NAME desk.showvarnames <0|1> CONTEXT none DESCRIPTION Enables (1) or disables (0) the display of variable names next to the box connection lines. When enabled, these show the variable name associated with the connection line. Since the lines represent data flow, it sometimes helps in debugging to know which line is which.
3.7.1 desk.zoomminmax - max/min desk zooming values NAME desk.zoomminmax <min> <max> CONTEXT none DESCRIPTION Sets bounds for the desk zoom (ALT-MIDDLE dragging), to prevent erratic behavior caused by excessive zooming.
3.8.1 desk.linetype - style for drawing connect lines NAME desk.linetype <trace|direct> CONTEXT none DESCRIPTION Sets the mode for drawing connection lines. Normally, this is always 'trace'. Most people find it preferable to 'direct'.
3.9.1 desk.lock - lock the desk NAME desk.lock <0|1> CONTEXT none DESCRIPTION Locks (1) or unlocks (0) the desk. When the desk is locked, you cannot add or remove boxes, you can only tweak sliders.
3.10.1 desk.showiconimages - enable/disable icons in boxes NAME desk.showiconimages <0|1> CONTEXT none DESCRIPTION Enables (1) or disables (0) the display of icons in the boxes. When using cheap hardware, you may find disabling icons can speed up the interface's response.
3.11.1 desk.statusbar - enable/disable the status bar NAME desk.statusbar <0|1> CONTEXT none DESCRIPTION Enables (1) or disables (0) the display of the status bar.
3.12.1 desk.boxtint - overall tint color for all boxes NAME desk.boxtint <r> <g> <b> CONTEXT none DESCRIPTION Overall tint for the boxes. These values are basically added to (offset) the RGB colors for all boxes. Negative numbers makes the channel darker, positive numbers make the channel brighter. This allows the administrator to affect the overall 'tint' of all the boxes, to match particular color schemes.
5.0.0 Operation Boxes Global Settings (box.*)
5.1.1 box.selectedcolor - color when box selected NAME box.selectedcolor <r> <g> <b> CONTEXT none DESCRIPTION This sets the color of the line drawn around a box when it is selected. Values should be 0.0 to 1.0.
5.2.1 box.selectedlinewidth - thickness of border around box NAME box.hilightedcolor <r> <g> <b> CONTEXT none DESCRIPTION When a box is highlighted (such as by the Box Finder under the 'Find' menu), it changes to this color. Values should be 0.0 to 1.0.
5.3.1 box.hilightedcolor - color when box highlighted (menu finder) NAME box.selectedbuttoncolor <r> <g> <b> CONTEXT none DESCRIPTION When a button is selected (with the left button), it changes to this color. Values should be 0.0 to 1.0.
5.4.1 box.selectedbuttoncolor - color when button selected NAME box.selectedlinewidth <val> CONTEXT none DESCRIPTION <val> represents the width of the line (in pixels) drawn around the box when it is selected. Values should be 0.0 to 1.0.
5.5.1 box.connectlinewidth - width of connection lines (in pixels) NAME box.connectlinewidth <val> CONTEXT none DESCRIPTION <val> represents the width of the inter-box connection lines. Value is in pixels.
6.0.0 Word Translations (wordtranslate.*)
6.1.1 wordtranslate.clear - Clear all previous word translations NAME wordtranslate.clear CONTEXT none DESCRIPTION Clears all word translations previously defined with the wordtranslate.add command.
6.2.1 wordtranslate.add - add a word translation NAME wordtranslate.add <from> <to> CONTEXT none DESCRIPTION Sets word translations for the menus, to hide the internal ShadeTree language. For instance, 'xyz' is ShadeTree's internal name for a data element that represents the three X/Y/Z values. RenderMan users would prefer to see the word 'point' in the Casts popup menu, whereas Mental Ray users would prefer to see 'miVector'. To serve this need, word translations are setup for 'xyz': wordtranslate.add xyz point # RenderMan wordtranslate.add xyz miVector # Mental Ray ShadeTree translates these words before presenting them to the user in pop up menus (for casting), etc.
7.0.0 Miscellaneous Settings
7.1.0 File Browsers
7.1.1 exportoptions - File->Export Options NAME exportoptions { streedir <flag> [dir] shadersourcedir <flag> [dir] compiledshaderdir <flag> [dir] shaderinterfacedir <flag> [dir] renderinterfacedir <flag> [dir] postsavescript <flag> [file] } [flag] - is either a 0 or 1, controlling the initial state of the toggle buttons in the export options editor, which control whether the corresponding file is saved or not, when the user selects 'File->Export All'. [dir] - sets the default directory for both the 'File->Export Options' browser, and the appropriate browser in the 'File->Export' submenu. Note that a relative path here is taken as relative to the directory in which the .str file resides. For example, if the shadersourcedir value is ".\" the shader source will be exported to the directory containing the .str file on which it is based. CONTEXT none DESCRIPTION Sets the default toggle button states, and directory names for the export options editor, and the individual browsers in the 'File->Export' submenu. These defaults are typically overriden by saved values whenever an existing .str file is loaded from disk. EXAMPLE This example might be for a Mental Ray user, who wants files to export into the appropriate directories in their Softimage chapter file hierarchy: exportoptions { streedir 1 ./ shadersourcedir 1 C:/job/SOFTIMAGE_PROJECT/src compiledshaderdir 1 C:/job/SOFTIMAGE_PROJECT/lib shaderinterfacedir 1 C:/job/SOFTIMAGE_PROJECT/MATERIAL_SHADERS renderinterfacedir 0 postsavescript 1 C:/job/SOFTIMAGE_PROJECT/bin/production_render.bat } SEE ALSO shadetree-operation - Section on 'Export All' shadetree-mray-faq - Section 'Is there a way to easily save out everything..?'
7.1.2 streebrowser_dir - File->Load/Save NAME streebrowser_dir <pathname> CONTEXT none DESCRIPTION Sets the default directory for the stree file browsers, namely 'Open', and 'Save As'.
7.1.3 imagebrowser_dir - Options->Load Background Image NAME imagebrowser_dir <pathname> CONTEXT none DESCRIPTION Sets the default directory for the background image file browser, from the Options->Set Wallpaper menu item.
7.1.4 stringbrowser_dir - String sliders NAME stringbrowser_dir <pathname> CONTEXT none DESCRIPTION Sets the default directory for the string slider's file browser. Each string input button has a 'slider' interface that contains a FILE browser button which, when hit, brings up this file browser.
7.2.0 Miscellaneous NAME menudir.add <path> CONTEXT none DESCRIPTION This command allows users to define their own menu boxes, and have them appear in the interface. Defines a search path to a menu directory structure where box definition files are expected to be found, similar to the format of the C:/shadetree/mray/menu directory tree. This command is cumulative; several menudir.add commands can be specified to create an entire list of search directories to be included. EXAMPLE menudir.add C:/shadetree/login/shadetree/menus CAVEATS Pathnames that start with '.' work relative to the current directory. Pathnames that don't start with '.', and don't start with '/' are considered to be relative to $STREE_LIB.
7.2.1 ext.shadersource - filename extension for shader source code NAME ext.shadersource <filename_extension> CONTEXT none DESCRIPTION Defines the filename extension to be used on all shader source code files. The leading '.' should be included. EXAMPLES ext.shadersource .sl # mray ext.shadersource .cpp # mray
7.2.2 ext.compiledshader - filename extension for compiled shaders NAME ext.compiledshader CONTEXT none DESCRIPTION Defines the filename extension to be used on all compiled shader files. The leading '.' should be included. EXAMPLES ext.compiledshader .dll # mray
7.2.3 sourcecodeprefilter - path to script that prefilters source code NAME sourcecodeprefilter <path> CONTEXT none DESCRIPTION Points to a script or program that prefilters the source code before compiling it. Often, there are hacks in here to prepare the raw source code from ShadeTree to do various operations, such as: 1) Breaking long lines, if possible 2) Doing some code optimizations 3) Doing some code replacements/tweaks
7.2.4 maxhistory - Sets the maximum history size for stree files NAME maxhistory CONTEXT maxhistory 20 DESCRIPTION Sets a limit for the number of history files saved.
8.0.0 Code Generator (codegen.*)
8.1.0 Misc
8.1.1 codegen.clearallvariables NAME codegen.clearallvariables CONTEXT none DESCRIPTION Clears all code generator definitions.
8.1.2 codegen.vararg.sep NAME codegen.vararg.sep CONTEXT none DESCRIPTION Pending.
8.2.0 Data Types
8.2.1 codegen.rgb.declare.head - text to head declaration of variables NAME codegen.rgb.declare.head "text" CONTEXT none DESCRIPTION Tells the code generator how to lead off the declaration of RGB variables. For instance, if the desired code generator output is: color varname; \____/\_____/| | | | | | codegen.rgb.declare.tail ";" | | | Internally generated by the macro definitions. | codegen.rgb.declare.head "color "
8.2.2 codegen.rgb.declare.tail - tail text for declaration of variables NAME codegen.rgb.declare.tail "text" CONTEXT none DESCRIPTION Tells the code generator the text to appear at the tail of RGB variables. See codegen.rgb.declare.head for an example.
8.2.3 codegen.rgb.declareconst.head - head text for declaring constant variables NAME codegen.rgb.declareconst.head "text" CONTEXT none DESCRIPTION Tells the code generator the text to appear at the head of constant RGB declarations. For instance, if the desired code generator output is: color varname = color(1,2,3); \____/\_____/\_/\__________/| | | | | | | | | | codegen.rgb.declareconst.tail ";" | | | | | | | Internally generated by macro defs | | | | | codegen.rgb.declareconst.equal " = " | | | Internally generated by the macro definitions. | codegen.rgb.declareconst.head "color "
8.2.4 codegen.rgb.declareconst.equal - equal text for constant variables NAME codegen.rgb.declareconst.equal "text" CONTEXT none DESCRIPTION Tells the code generator the text to appear between the varname and the initial constant value for RGB declarations. See codegen.rgb.declareconst.head for examples.
8.2.5 codegen.rgb.declareconst.tail - tail declaration for constant variables NAME codegen.rgb.declareconst.tail "text" CONTEXT none DESCRIPTION Tells the code generator the text to appear at the tail of constant RGB declarations. See codegen.rgb.declareconst.head for examples.
8.2.6 codegen.xyz.* - xyz data during code generation NAME codegen.xyz.* CONTEXT none DESCRIPTION Pending.
8.2.7 codegen.float.* - float data during code generation NAME codegen.float.* CONTEXT none DESCRIPTION Pending.
8.2.8 codegen.string.* - string data during code generation NAME codegen.string.* CONTEXT none DESCRIPTION Pending.
8.3.0 Macro Definitions - Main Program Template
8.3.1 codegen.global-header - the header area of the program NAME codegen.global-header [append|insert|unique] [macro text] <<EOT>> CONTEXT none DESCRIPTION Pending.
8.3.2 codegen.main-open - the main() declaration NAME codegen.main-open [append|insert|unique] [macro text] <<EOT>> CONTEXT none DESCRIPTION Pending.
8.3.3 codegen.main-args - the main() arguments NAME codegen.main-args [append|insert|unique] [macro text] <<EOT>> CONTEXT none DESCRIPTION Pending.
8.3.4 codegen.main-header - the main() function header area NAME codegen.main-header [append|insert|unique] [macro text] <<EOT>> CONTEXT none DESCRIPTION Pending.
8.3.5 codegen.main-body - the main() function body NAME codegen.main-body [append|insert|unique] [macro text] <<EOT>> CONTEXT none DESCRIPTION Pending.
8.3.6 codegen.main-close - the end of the main() function NAME codegen.main-close [append|insert|unique] [macro text] <<EOT>> CONTEXT none DESCRIPTION Pending.
8.3.7 codegen.global-close - the end of the program NAME codegen.global-close [append|insert|unique] [macro text] <<EOT>> CONTEXT none DESCRIPTION Pending.
9.0.0 Data Type Constructs (datatype)
9.1.1 datatype.clearall - clear all previously defined datatypes NAME datatype.clearall CONTEXT none DESCRIPTION Pending.
9.1.2 datatype.add - Add a new datatype NAME datatype.add { cmds } CONTEXT none DESCRIPTION Pending. AUTHOR Greg Ercolano, Luigi Warren mailto:[email protected] COPYRIGHT (C) Copyright 1996 Cinema Graphics, Inc. All Rights Reserved. SUPPORT If you encounter errors in this document, email the author. Please supply the name of the file or manpage, enclose clippings of the erroneous text, and describe the error.
####
#### stree.defs - Stree Defintions
####
# Render Options Editor: Define the interface
roe
{
# CLEAR ANY PREVIOUS WIDGETS FROM THE ROE
clearall
# HEADING
label
{
label RENDER OPTIONS
shadowtype XmSHADOW_ETCHED_OUT
shadowsize 0
}
# RESOLUTION FIELD
xyfield
{
optionlabel Resolution
value "256,256"
separatorlabel X
# ENVIRONMENT NAME
# This is the name of the environment variable that is saved
# into the render_options file, or into the stree file.
#
envname STREE_RES
envseparator " "
# CONTENTS FOR THE OPTION BUTTON
# text-xy-field expects two comma separated values
# followed by optional descriptive text.
#
optioncontents
{
80,80 (Small)
100,100
256,256
512,512
800,800 (Large)
}
# HELP TEXT
# This text appears when the user hits the 'i' help button
#
help
{
Sets the X/Y resolution of the output image.
}
}
# PARAMETRIC APPROXIMATION
xfield
{
envname STREE_PARA_APPROX
optionlabel Para-Approx
value 1.0
forcefloat
optioncontents
{
1.0 (fast)
2.0
4.0
6.0 (slow)
8.0
10.0
12.0 (real slow)
14.0
16.0
18.0 (snail slow)
}
help
{
This increases the surface detail for displacements
by adding geometry (subdividing).
The value represents the number of subdivisions for the
parametric approximation of each patch in the model.
}
}
# MAX SAMPLING
xfield
{
envname STREE_MAX_SAMPLES
optionlabel Max Samples
value 1
optioncontents
{
-2 (1 samp/4x4 pixels) Fast
-1 (1 samp/2x2 pixels)
0 (1 samp/pixel)
1 (2x2 samps/pixel) Normal
2 (4x4 samps/pixel)
3 (8x8 samps/pixel)
4 (16x16 samps/pixel) Slow
}
help
{
Maximum sample rate to use, if difference between two
neighboring pixels exceeds contrast limits.
Each pixel is sampled NO MORE THAN pow(2,(2*max)) times.
0 means one sample per pixel.
Values greater than zero indicate super sampling.
Values less than zero indicate inferior sampling.
}
}
# MIN SAMPLING
xfield
{
envname STREE_MIN_SAMPLES
optionlabel Min Samples
value -1
optioncontents
{
-3 (1 samp/8x8 pixels) Fast
-2 (1 samp/4x4 pixels)
-1 (1 samp/2x2 pixels)
0 (1 samp/pixel)
1 (2x2 samps/pixel) Normal
2 (4x4 samps/pixel)
3 (8x8 samps/pixel)
4 (16x16 samps/pixel) Slow
}
help
{
Minimum sample rate.
Each pixel is sampled AT LEAST pow(2,(2*min)) times.
0 means one sample per pixel.
Values greater than zero indicate super sampling.
Values less than zero indicate inferior sampling.
}
}
# OBJECT ZOOM
xfield
{
envname STREE_ZOOM
optionlabel Object Zoom
value -5.0
optioncontents
{
0.0 (Zoom In)
-2.5
-4.0
-5.0 (Normal)
-8.0
-12.0 (Zoom Out)
}
help
{
Zooms the object in or out.
Smaller numbers zoom out.
Larger numbers zoom in.
}
}
# OBJECT ROTATION
xyzfield
{
headinglabel Object Rotation
xenvname STREE_OBJ_ROTX
yenvname STREE_OBJ_ROTY
zenvname STREE_OBJ_ROTZ
xoptionlabel X
yoptionlabel Y
zoptionlabel Z
xvalue 0.0
yvalue 0.0
zvalue 0.0
forcefloat
xoptioncontents
{
"-180.0 (Upside Down)"
"-135.0"
_SEPARATOR_
"-90.0"
"-45.0 (Pitch Bottom Towards You)"
_SEPARATOR_
" 0.0 (Front View)"
_SEPARATOR_
" 45.0 (Pitch Top Towards You)"
" 90.0"
_SEPARATOR_
"135.0"
"180.0 (Upside Down)"
}
yoptioncontents
{
"-180.0 (Back View)"
"-135.0"
_SEPARATOR_
"-90.0"
"-45.0 (Pitch Right Edge Towards You)"
_SEPARATOR_
" 0.0 (Front View)"
_SEPARATOR_
" 45.0 (Pitch Left Edge Towards You)"
" 90.0"
_SEPARATOR_
"135.0"
"180.0 (Back View)"
}
zoptioncontents
{
"-180.0 (Upside Down)"
"-135.0"
_SEPARATOR_
"-90.0"
"-45.0 (Clockwise Twist)"
_SEPARATOR_
" 0.0 (Front View)"
_SEPARATOR_
" 45.0 (Counter Clockwise Twist)"
" 90.0"
_SEPARATOR_
"135.0"
"180.0 (Upside Down)"
}
help
{
Rotates the object around XYZ axes.
Unlike Renderman, we use 'Z towards You' positioning:
> X axes points to your right.
> Y axes points up.
> Z axes points towards your eye.
These rotations follow the right hand rule:
> Positive X rotation pitches the top towards you.
> Positive Y rotation tilts the left side towards you.
> Positive Z rotation rolls counterclockwise.
}
}
# LIGHT ROTATION
xyzfield
{
headinglabel Light Position
xenvname STREE_LIGHT_TRANX
yenvname STREE_LIGHT_TRANY
zenvname STREE_LIGHT_TRANZ
xoptionlabel X
yoptionlabel Y
zoptionlabel Z
xvalue -45.0
yvalue 45.0
zvalue 0.0
forcefloat
xoptioncontents
{
"-100.0 (Left Light)"
" 0.0 (Center Light)"
" 100.0 (Right Light)"
}
yoptioncontents
{
"-100.0 (Bottom Light)"
" 0.0 (Center Light)"
" 100.0 (Top Light)"
}
zoptioncontents
{
"-100.0 (Back Light)"
" 0.0 (Center Light)"
" 100.0 (Front Light)"
}
help
{
Translates the light on XYZ axes.
We use 'Z towards You' positioning:
> X axes points to your right.
> Y axes points up.
> Z axes points towards your eye.
}
}
# RENDERIT FRAME
frame
{
{
shadowtype XmSHADOW_ETCHED_OUT
horizontal 2
}
# RENDER IT
button
{
buttonlabel Render It
actionto form
actionmsg render
actionarg render
}
# OBJECT
frame
{
{
shadowtype XmSHADOW_ETCHED_OUT
vertical 2
shadowsize 2
}
label
{
# resize false
width 20
label Object
shadowsize 0
justify right
}
chooser
{
envname STREE_OBJECT
value sphere
choosercontents
{
sphere
patch
cylinder
corner
}
}
}
# STOP RENDER
button
{
buttonlabel STOP Render
actionto form
actionmsg render
actionarg kill
}
# RENDER TYPE
frame
{
{
shadowtype XmSHADOW_ETCHED_OUT
vertical 2
shadowsize 2
}
label
{
width 20
height 10
label Shader
shadowsize 0
justify right
}
chooser
{
envname STREE_SHADER_TYPE
actionto form
actionmsg shader-type-changed
value material
choosercontents
{
material
displace
light
environ
volume
atmosph
lens
output
}
}
}
}
# OK/DEFAULTS
okfield
{
shadowsize 4
shadowtype XmSHADOW_ETCHED_IN
defaults_actionto roe
defaults_actionmsg use-defaults
defaults_actionarg noarg
ok_actionto form
ok_actionmsg roe
ok_actionarg hide
}
# OUTPUT IMAGE
stringinput
{
label Output Image
value screen
file 1
envname STREE_OUTFILE
help
{
This can either be a filename to render the images to, such as:
> /usr/tmp/foo.pic
> screen
To render images to the screen, you should specify the word
screen as the filename.
The filename extensions determine what image format is used.
Only pic is currently supported.
}
}
# FRAME RANGE
xyzfield
{
headinglabel Frame Range
xenvname STREE_SFRM
yenvname STREE_EFRM
zenvname STREE_IFRM
xoptionlabel Start
yoptionlabel End
zoptionlabel Inc
xvalue 1
yvalue 1
zvalue 1
xoptioncontents
{
1
}
yoptioncontents
{
1
10
30
60
100
}
zoptioncontents
{
1
2
4
8
}
help
{
Sets the frame range when specifying a range of frames to render.
The values are passed to your custom render script as a series of
environment variables:
> STREE_SFRM - start frame
> STREE_EFRM - end frame
> STREE_IFRM - increment frame
If Start and End are the same value, a single frame test frame
is rendered (the default).
}
}
frame
{
{
shadowtype XmSHADOW_ETCHED_OUT
horizontal 2
}
ledbutton
{
buttonlabel Shadow
envname STREE_SHADOW
state 1
envon on
envoff off
}
ledbutton
{
buttonlabel Trace
envname STREE_RAYTRACE
state 1
envon on
envoff off
}
ledbutton
{
buttonlabel Verbose
envname STREE_VERBOSE_RENFLAG
state 0
envon on
envoff off
}
# FACE
frame
{
{
shadowtype XmSHADOW_ETCHED_OUT
vertical 2
shadowsize 2
}
label
{
width 20
label Faces
shadowsize 0
justify right
}
chooser
{
envname STREE_FACES
value both
choosercontents
{
front
back
both
}
}
}
frame
{
{
shadowtype XmSHADOW_ETCHED_OUT
vertical 2
shadowsize 2
}
label
{
width 20
label Viewer
shadowsize 0
justify right
}
chooser
{
nostreesave
resize false
envname STREE_VIEWER
value default
choosercontents
{
default
imf_disp
}
}
}
}
# LIGHT FACTOR
xfield
{
envname STREE_SHADOW_FACTOR
optionlabel Shadow Factor
value 0.5
forcefloat
optioncontents
{
0.0 (dark shadows)
0.25
0.50 (medium shadows)
0.75
1.0 (no shadows/fast)
}
help
{
Affects shadows' darkness. You should have 'Shadow' and 'Trace'
enabled for this to have any affect.
This is the default "soft_point" light's "factor" argument,
called 'shadow factor' in the mray docs. If > 0, it will blend
the color reduced by the shadow shader towards the light color.
If the shadow factor is 1, no shadow rays are cast.
}
}
# LIGHT COLOR
xyzfield
{
headinglabel Default Light Color
xenvname STREE_LIGHT_R
yenvname STREE_LIGHT_G
zenvname STREE_LIGHT_B
xoptionlabel R
yoptionlabel G
zoptionlabel B
xvalue 1.0
yvalue 1.0
zvalue 1.0
forcefloat
xoptioncontents
{
"1.0"
"0.5"
"0.0"
}
yoptioncontents
{
"1.0"
"0.5"
"0.0"
}
zoptioncontents
{
"1.0"
"0.5"
"0.0"
}
help
{
Sets the default light color for
shaders that use the ShadeTree default light.
This affects the light color in all shaders
EXCEPT light shaders, which have their own,
separate controls.
}
}
# LOAD DEFAULTS (after defining the interface)
loaddefaults
}
# THESE PRE-PROGRAM THE TOOLBAR BUTTONS
toolbutton 0=add
toolbutton 1=subtract
toolbutton 2=multiply
toolbutton 3=divide
toolbutton 4=negate
toolbutton 5=mixed
toolbutton 6=UserDefined
# DESK SETTINGS
desk.backgroundcolor 0.37 0.51 0.54 # desk's background color
desk.rubberbandcolor 0.8 0.30 0.40 # rubberband color for lassos
desk.connectcolor 0.30 0.15 0.07 # connection line color
desk.selectedconnectcolor 1.00 0.50 0.00 # selected connect line color
desk.showvarnames 0 # 0=disable varnames, 1=enable
desk.zoomminmax 0.1 10.0 # minimuma and maximum zoom
desk.linetype trace # line type: trace || direct
desk.lock 0 # 0=unlock, 1=lock
desk.showiconimages 1 # 0=disable images, 1=enable
desk.statusbar 1 # 0=disable status bar, 1=enable
desk.autosavecompiledshaderflag 0 # 0=disable autosave, 1=enable
desk.boxtint 0 0 0 # overall tint for boxes (0 0 0)
#desk.font Symbol # Op Desk font
# (neg numbers = darker)
# WIDGET WINDOW MANAGER
# The window manager class for each slider
# See 'man shadetree-streedefs' for possible color values
#
wwm
{
bgcolor basicBackground
bgcolor.arg_editor_selected alternateBackground5
bgcolor.box_selected alternateBackground6
}
# BOX SPECIFIC SETTINGS
box.selectedcolor 1.0 0.9 0.8 # selected color for box
box.hilightedcolor 1.0 1.0 1.0 # color when hilighted
box.selectedbuttoncolor 1.0 1.0 0.5 # color when button selected
box.selectedlinewidth 4 # selected linewidth around box
box.connectlinewidth 3 # ??
# DEFAULT FILE BROWSER DIRECTORIES
# Users can override the defaults in their ./stree.defs or ~/.stree.defs
#
# NOTE: Pathnames starting with '.' are assumed relative to the $cwd.
# Pathnames that are otherwise relative (dont start with '/') are
# relative to $STREE_LIB (eg. /usr/local/shadetree/prman).
#
# Directory names should use '/' or '\\' (eg. c:/temp or c:\\temp).
streebrowser_dir examples
exportbrowser_dir .
stringbrowser_dir examples/textures
imagebrowser_dir c:/images
# Maximum number of saved files for the render history
maxhistory 30
###
### CODE GENERATOR SETTINGS FOR THIS LANGUAGE CONTEXT
###
#codegen.linecomment // # no line comments in rman
codegen.opencomment /*
codegen.closecomment */
#
# CLEAR ALL PREVIOUS CODEGEN INTERNAL VARIABLES
#
codegen.clearallvariables
codegen.vararg.sep ,
#
# RGB DECLARATIONS
# miColor foo_bar; # var declaration
# miColor foo_bar = STREE_miColorCtor(r,g,b,a); # var init to constant
#
codeformat.rgb.declare.head "miColor "
codeformat.rgb.declare.tail ";"
#
# XYZ DECLARATIONS
# miVector foo_bar; # vari declaration
# miVector foo_bar = STREE_miVectorCtor(x,y,z); # vari init to constant
#
codeformat.xyz.declare.head "miVector "
codeformat.xyz.declare.tail ";"
#
# FLOAT DECLARATIONS
# miScalar foo_bar; # variable declaration
# miScalar foo_bar = 1.0; # variable initialization to constant
#
codeformat.float.declare.head "miScalar "
codeformat.float.declare.tail ";"
#
# STRING DECLARATIONS
# char *foo_bar; # variable declaration
# char *foo_bar = "bla"; # variable initialization to constant
#
codeformat.string.declare.head "char *"
codeformat.string.declare.tail ";"
codegen.global-open append
// global-open //
// _STREE_INFOSTAMP_
// Copyright (c) 1996 Cinema Graphics, Inc. All Rights Reserved
//
// These coded instructions, statements, and computer programs contain
// unpublished proprietary information of Cinema Graphics, Inc., and
// are protected by Federal copyright law. They may not be disclosed
// to third parties or copied or duplicated in any form, in whole or in
// part, without the prior written consent of Cinema Graphics, Inc.
//
// This copyright notice does not evidence any actual or intended
// publication of such trade secrets, coded instructions, statements,
// and computer programs.
//
// Violators of this copyright will be prosecuted to the fullest extent
// of the law.
//
#include <stdio.h>
#include <math.h>
#include "STREE_shader.h"
#include "STREE_vector.h"
#include "STREE_color.h"
#include "STREE_softshade.h" /* always need for softimage stuff */
<<EOT>>
codegen.global-header append
// global-header //
<<EOT>>
codegen.main-open append
// main-open //
_STREE_STRUCT_
<<EOT>>
codegen.main-args append
_STREE_MAIN_OPEN_
<<EOT>>
codegen.main-args-close append
{
<<EOT>>
codegen.main-header append
// main-header //
_STREE_MAIN_HEADER_
miBoolean STREE_return = miTRUE;
<<EOT>>
codegen.main-body append
// main-body //
<<EOT>>
codegen.main-close append
// main-close //
return(STREE_return);
}
<<EOT>>
codegen.global-close append
// global-close //
<<EOT>>
# CAST TRANSLATIONS
# Translate internal names to preferred names to show to users.
#
wordtranslate.clear
wordtranslate.add float miScalar
wordtranslate.add rgba miColor
wordtranslate.add xyz miVector
wordtranslate.add string char*
# SETUP A SOURCE CODE PREFILTER SCRIPT
# Script is run relative to $STREE_LIB. See script for details.
#
codefilter bin/codefilter
# COMPILE SCRIPT
# Script to compile a 'source shader' into a 'compiled shader', as used
# by 'File -> Save Compiled Shader' in the main menu.
#
# Path is relative to $STREE_LIB. $1 will be the shader name,
# $2 is the output filename.
#
compilecmd bin/compileshader
# GUI PREFILTER COMMAND
# This program accepts gui ASCII information from stdin, and is supposed
# to translate it to an appropriate output file (eg. .sli, .cus, etc)
#
# $1 - path to source code file. Use this to determine where to save the
# .sli/.cus file.
#
guiprefilter bin/guiprefilter
# FILE EXTENSIONS
# NOTE: the 'shaderiface' extension is different,
# depending on the shader type!
#
ext.compiledshader .dll
ext.shadersource .cpp
ext.shaderiface material .mat
ext.shaderiface displace .dis
ext.shaderiface light .lit
ext.shaderiface environ .env
ext.shaderiface volume .vol
ext.shaderiface atmosph .atm
ext.shaderiface lens .len
ext.shaderiface output .out
ext.renderiface .mi
# GENERIC DATATYPE
# Clear all previous (start from scratch)
datatype.clearall
# NOTE: next four datatype declaration supercede obselete "codeformat" definitions...
datatype.add
{
name "rgb"
declarehead "miColor "
declaretail ";"
}
datatype.add
{
name "xyz"
declarehead "miVector "
declaretail ";"
}
datatype.add
{
name "float"
declarehead "miScalar "
declaretail ";"
}
datatype.add
{
name "string"
declarehead "char* "
declaretail ";"
}
# GENERIC DATA TYPE: Define the RGBA data type
datatype.add
{
# The 'lookup name' for this datatype
name "rgba"
# When declaring a variable of this type..
declarehead "miColor "
declaretail ";"
}
# GENERIC DATA TYPE: Define a 'file pointer' type
datatype.add
{
# The 'lookup name' for this datatype
name "FILE*"
# When declaring a variable of this type..
declarehead "FILE *"
declaretail ";"
}
# GENERIC DATA TYPE: Define a 'void pointer' type
datatype.add
{
# The 'lookup name' for this datatype
name "void*"
# When declaring a variable of this type..
declarehead "void *"
declaretail ";"
}
# GENERIC DATA TYPE: Define an 'miTag' type
datatype.add
{
# The 'lookup name' for this datatype
name "miTag*"
# When declaring a variable of this type..
declarehead "miTag *"
declaretail ";"
}
# GENERIC DATA TYPE: Define an 'miType' type
datatype.add
{
# The 'lookup name' for this datatype
name "miType"
# When declaring a variable of this type..
declarehead "miType "
declaretail ";"
}
# GENERIC DATA TYPE: Define an 'miImg_image' type
datatype.add
{
# The 'lookup name' for this datatype
name "miImg_image"
# When declaring a variable of this type..
declarehead "miImg_image "
declaretail ";"
}
# GENERIC DATA TYPE: Define an 'miLock' type
datatype.add
{
# The 'lookup name' for this datatype
name "miLock"
# When declaring a variable of this type..
declarehead "miLock "
declaretail ";"
}
# GENERIC DATA TYPE: Define an 'miBoolean' type
datatype.add
{
# The 'lookup name' for this datatype
name "miBoolean"
# When declaring a variable of this type..
declarehead "miBoolean "
declaretail ";"
}
# GENERIC DATA TYPE: Define an 'miMatrix' type
datatype.add
{
# The 'lookup name' for this datatype
name "miMatrix"
# When declaring a variable of this type..
declarehead "miMatrix "
declaretail ";"
}
# GENERIC DATA TYPE: Define an 'miMatrix*' type
datatype.add
{
# The 'lookup name' for this datatype
name "miMatrix*"
# When declaring a variable of this type..
declarehead "miMatrix *"
declaretail ";"
}
# GENERIC DATA TYPE: Define an 'Tex*' type
datatype.add
{
# The 'lookup name' for this datatype
name "Tex*"
# When declaring a variable of this type..
declarehead "struct Tex *"
declaretail ";"
}
# GENERIC DATA TYPE: Define an 'DisTex*' type
datatype.add
{
# The 'lookup name' for this datatype
name "DisTex*"
# When declaring a variable of this type..
declarehead "struct DisTex *"
declaretail ";"
}
# GENERIC DATA TYPE: Define an 'EnvTex*' type
datatype.add
{
# The 'lookup name' for this datatype
name "EnvTex*"
# When declaring a variable of this type..
declarehead "struct EnvTex *"
declaretail ";"
}
# GENERIC DATA TYPE: Define an 'miInteger' type
datatype.add
{
# The 'lookup name' for this datatype
name "miInteger"
# When declaring a variable of this type..
declarehead "miInteger "
declaretail ";"
}
exportoptions
{
streedir 0 ./
shadersourcedir 1 ./
compiledshaderdir 1 ./
shaderinterfacedir 1 ./
renderinterfacedir 0 ./
postsavescript 0
}