#
# slim.ini $Revision: #4 $:
#   the .ini file for slim-specific preferences.
#
#   Available commands:
#	SetPref name value
#	LockPref name value
#	LoadExtension class filename
#   
#   In addition, you can use standard safe-tcl commands
#   to perform calculations and substitutions.  We also
#   provide the following procs:
#	RATGetDir $dir - returns the path to a rat subdir:
#   	    $dir can be lib, etc, resource, home
#	GetPref name - returns the current value of a pref.
#	LogMsg code msg - logs a message at a level indicated
#	    by code which should be one of:
#		COPIOUS, INFO, NOTICE, WARNING, ERROR
#
#
# Slim Extensions

namespace eval ::Slim {}; #create the ::Slim namespace for globals

# source registration/menu procedures used below
source [file join [RATGetDir etc] SlimInit.tcl]

set templates [file join [RATGetDir lib] slim]

# TemplateSearchPaths is a tcl list of directories
SetPref TemplateSearchPaths [list $templates]

# require slim extensions  .............................................
# extensions of type slim are loaded at startup. We recommend
# that all customui and foundation .slim extensions be "pre-loaded".
# visualizers should go last
#
# put customuis first 'cuz templates refer to them.
LoadExtension slim [file join $templates floatsplineui.slim] customui
LoadExtension slim [file join $templates splineui.slim] customui
LoadExtension slim [file join $templates layerui.slim] customui
LoadExtension slim [file join $templates layerui2.slim] customui
LoadExtension slim [file join $templates adaptorui.slim] customui
LoadExtension slim [file join $templates addparamui.slim] customui
LoadExtension slim [file join $templates bigstringui.slim] customui
LoadExtension slim [file join $templates combineui.slim] customui
LoadExtension slim [file join $templates customui.slim] customui
LoadExtension slim [file join $templates customcmd.slim] customcmd
LoadExtension slim [file join $templates noiseui.slim] customui
LoadExtension slim [file join $templates listui.slim] customui
LoadExtension slim [file join $templates visui.slim] customui

# these extensions are required for basic slim operation.
LoadExtension slim [file join $templates aovmacros.slim] customui
LoadExtension slim [file join $templates macros.slim] customui
LoadExtension slim [file join $templates foundation.slim] slim
LoadExtension slim [file join $templates conversion.slim] slim
LoadExtension slim [file join $templates visualizers.slim] slim
LoadExtension tcl [file join [RATGetDir etc] SlimExpression.tcl]

# configure menu presence for these templates
# this variable is used by ::Slim::AddMenuDescriptions
set foundationMenuDescriptions {
    { pixar,Ensemble#0        Ensemble        /Ensemble }
    { pixar,EnsembleAdaptor#0 EnsembleAdaptor /Ensemble }
    { pixar,SurfaceAdaptor#0  SurfaceAdaptor  /Surface/Utility }
    { pixar,LightAdaptor#0    LightAdaptor    /Light } 
    { pixar,RIBBox#0          RIBBox          /RIBBox }
    { pixar,RIBBoxAdaptor#0   RIBBoxAdaptor   /RIBBox }
    { pixar,Bake#0            Bake            /MapGen }
    { pixar,Depth#0           Depth           /MapGen }
    { pixar,DepthMask#0       DepthMask       /MapGen }
    { pixar,Environment#0     Environment     /MapGen }
    { pixar,OcclusionMapGen#0 OcclusionMapGen /MapGen }
    { pixar,PhotonMap#0       PhotonMap       /MapGen }
    { pixar,PointShadow#0     PointShadow     /MapGen }
    { pixar,Reference#0       Reference       /MapGen }
    { pixar,Reflection#0      Reflection      /MapGen }
    { pixar,Shadow#0          Shadow          /MapGen }
    { pixar,SoftShadow#0      SoftShadow      /MapGen }
}
    
# preferences for automatic type conversion
# these define the template that will convert
# from the first type to the second
SetPref TypeConversionTemplate(float,color) \
	pixar,ConvertFloatToColor
SetPref TypeConversionTemplate(color,float) \
	pixar,ConvertColorToFloat
SetPref TypeConversionTemplate(shadingcomponent,color) \
	pixar,ConvertSCToColor
SetPref TypeConversionTemplate(color,shadingcomponent) \
	pixar,ConvertColorToSC
SetPref TypeConversionTemplate(shadingmodel,color) \
	pixar,ConvertSMToColor
SetPref TypeConversionTemplate(color,shadingmodel) \
	pixar,ConvertColorToSM
SetPref TypeConversionTemplate(shadingmodel,shadingmodel_aov) \
	pixar,ConvertSMToSMaov
SetPref TypeConversionTemplate(shadingmodel_aov,shadingmodel) \
	pixar,ConvertSMaovToSM


# interface preferences
SetPref ConserveWindows 1
SetPref RaisePaletteEditors 1
SetPref DefaultPaletteView icon
SetPref AutoCollect 1
SetPref AutoReparent 1
SetPref RichCollectionGUI 0
SetPref InstanceStructure hierarchical
SetPref RenderInstancesWhenUpdating 1
SetPref ExpertMenus 0
SetPref ValueSetColor "#000044"
SetPref ValueUnsetColor "#444444"

SetPref CascadeMenuSize 20
SetPref DefaultSliderPrecision 0.01
SetPref ShowPathInAppEditorTitle 1
# establish filters
SetPref Filters { * }

# URLs for the Help menu
SetPref HelpURLs(slim) {
    "Slim Documentation" %RATDOCROOT/tools/intro_Slim/
}

# preview preferences

# rendering
# to plug in your own renderer, place your rendering command
# here.  Note that %f and %i are substituted by the RIB
# filename and the slim internal image name.  To cause
# send your pixels to slim, invoke sho -dspy slim -dspyfile %i %i
#
#     LockPref PreviewRenderer "render %f"
#
SetPref PreviewRenderer internal
SetPref PreviewResolution 128
SetPref PreviewShadingRate 1
SetPref CustomDisplay ""
SetPref Gain 1
SetPref Gamma 1 

# object
SetPref PreviewObjectSize  1
SetPref PreviewObjectShape Sphere
SetPref PreviewObjectArchive ""

# lights
SetPref PreviewSimpleLights 1
SetPref KeyLight {.8 .8 .8}
SetPref FillLight {.2 .2 .2}
SetPref AmbientLight {.05 .05 .05}
SetPref PreviewLightArchive ""

# environment light
SetPref PreviewEnvLight 0
SetPref PreviewEnvMap textures/ratEnv.tex
SetPref PreviewEnvKd 1
SetPref PreviewEnvDiffuseBlur 0.2
SetPref PreviewEnvKs 1

# scene
SetPref PreviewUpAxis Y
SetPref PreviewBackgroundTexture "textures/ratGrid.tex"
SetPref PreviewSceneSphere 1
SetPref PreviewSceneSphereTexture textures/ratEnv.tex

SetPref FlipbookFrameCount 32
SetPref FlipbookResolution 128
SetPref FlipbookRenderer render; # or netrender
SetPref TextureRenderer "alfred -n 6 -rm %f"
SetPref TextureResolution 512
SetPref SeqBegin 1
SetPref SeqEnd 100

# file preferences

SetPref SaveIcons 0
SetPref PreferFullPaths 0
SetPref CheckpointQueueSize 0
SetPref AutoReloadTemplates 1
SetPref PaletteSaveMode minimal

# shader generation / compile settings
SetPref ShaderHeader {}
SetPref ShaderCompiler "default"
SetPref ShaderCompiler2 ""

# if you want to see warnings from shader compiles, set this to your
# desired loglevel, e.g. WARNING
SetPref CompilerWarningLogLevel ""

# deprecated preferences
SetPref OrganizeByVendor 0
SetPref PreferVSlider 0
SetPref ShowHub 0
SetPref GenerateSli 0; # 1 -> glimpse compatibility.

LockPref RManCtls 1

# controls default master reference for functions that can
# be attached to scene objects. If you have lots of users
# working in the same area, you might uncomment the following:
#SetPref DefaultMasterRef \$::torShaders/\$::USER/\$::INSTANCENAME
#
# You may wish to include the unique instance id in your shader name.
# This will prevent any shader name conflicts between appearances, and
# can be done by uncommenting the following:
#SetPref DefaultMasterRef \$::torShaders/\$\{::INSTANCENAME\}_\$::INSTANCEID
#
# These variables are predefined. You can define additional
# variables within the SetInstanceExpressionContext procedure
# (in SlimExpression.tcl). By default, this procedure defines
# the PALETTENAME variable, which set to be the label of the
# appearance's palette.
 
SetPref DefaultMasterRef \$::torShaders/\$::INSTANCENAME

# This controls whether to make use of file references stored in template hints
# when loading a template that hasn't been registered
SetPref UseTemplateHintFileReferences 1

# These preferences control how Slim keeps appearance names unique.
# UniqueNameDomain describes how the scope in which names are unique.
# Valid options are:
#  - session : appearances in current session
#  - palette : appearances in a palette
#  - group   : appearances in a group
#  - history : all compiled appearances in the shading directory
#
# Names are initially unique, but are only continuously checked
# when MaintainUniqueNames is turned on.
#
# MaintainUniqueNames is only valid for UniqueNameDomains other than
# history.  For these domains, it is recommended that you include the
# instance id in the master name (see above).  The following settings 
# describe the behavior of previous slim releases:
#
# SetPref UniqueNameDomain history
# SetPref MaintainUniqueNames 0
#
# But we recommend using these settings:

SetPref UniqueNameDomain session
SetPref MaintainUniqueNames 1

# Default txmake settings
# These are classified by subtype (as referenced in template)
SetPref TxmakeArgs(environment) { -envlatl -smode black -tmode black -resize up}
SetPref TxmakeArgs(reflection) { -smode black -tmode black -resize up}
SetPref TxmakeArgs(shadow) { -shadow -smode black -tmode black -resize none}
SetPref TxmakeArgs(texture) { -smode black -tmode black -resize up}

# this is the color for read-only palettes
LockPref ROColor #8080a0

# SlimAttachableMap:
#   describes the association between custom Slim template types
#   and known attachable appearance types:
#	surface, displacement, volume, light, ribbox, tclbox, 
#	ensemble, mapgen, dso, archiver
#   If you develop a new Slim template type that requires attachment
#   semantics, simply add a SlimAttachableMap entry of the form:
#
#	SetPref SlimAttachableMap(yourtype) systemtype
#
SetPref SlimAttachableMap(shadingmodel) surface
SetPref SlimAttachableMap(shadingmodel_aov) surface
SetPref SlimAttachableMap(visualizer) surface
SetPref SlimHiddenTemplateTypes visualizer

# optional/replaceable slim templates ...................................
# extensions of type slimtmplt are loaded when needed/used
# we suggest that you adopt a particular level of granularity for
# your custom templates with these considerations in mind:
#   - slim supports multiple templates per file
#   - versioning and lazy loading is most efficient when a
#     single template (and possible all its versions) live
#     in a single file.
#   - lots of files can be an organizational burden
#   - some templates change frequently, others never.
#
# variable lazyTemplateList
#   here we construct a list to pass to ::Slim::RegisterLazyTemplates
#   the structure of the lazyTemplateList is a list of pairs:
#	1. slim file containing one or more template definitions
#	2. a list of lists, each decribing an individual template:
#	    1. templateID 2. template type  3. menu label 4. menu id

set lazyTemplateList {

  shadingmodels_delux.slim {
    { pixar,DeluxSM#0		shadingmodel_aov Delux		    /Surface  }
  }

  shadingmodels.slim {
    { pixar,Blinn#2		shadingmodel_aov Blinn		    /Surface }
    { pixar,Glass#1		shadingmodel_aov Glass		    /Surface }
    { pixar,Gooch#1		shadingmodel_aov Gooch		    /Surface }
    { pixar,Matte#1		shadingmodel_aov Matte	            /Surface }
    { pixar,Plastic#1		shadingmodel_aov Plastic            /Surface }
    { pixar,Skin#3		shadingmodel_aov Skin		    /Surface }
    { pixar,Velvet#2		shadingmodel_aov Velvet		    /Surface }
  }

  shadingmodels_layering.slim {
    { pixar,Layer#2		shadingmodel_aov "Layer (general)"  /Surface }
    { pixar,LayerUltimo#0	shadingmodel_aov "Layer (fast)"	    /Surface }
  }

  shadingmodels_simple.slim {
    { pixar,AdditiveFX#1	shadingmodel	"Additive FX"       /Surface/Utility }
    { pixar,Constant#0		shadingmodel	Constant	    /Surface/Utility }
    { pixar,Default#0		shadingmodel	Default		    /Surface/Utility }
    { pixar,Mix#0		shadingmodel	Mix		    /Surface/Utility }
  }

  components.slim {
    { pixar,CombineSC#0		     shadingcomponent Combine		/ShadingComponent/Utility }
    { pixar,AmbientSC#0		     shadingcomponent Ambient		/ShadingComponent }
    { pixar,DiffuseSC#0		     shadingcomponent Diffuse		/ShadingComponent }
    { pixar,SpecularSC#0	     shadingcomponent Specular		/ShadingComponent }
    { pixar,AnisotropicSC#0	     shadingcomponent Anisotropic	/ShadingComponent }
    { pixar,FresnelSC#0	             shadingcomponent Fresnel	        /ShadingComponent/Utility }
    { pixar,ReflectionSC#0	     shadingcomponent Reflection	/ShadingComponent }
    { pixar,RefractionSC#0	     shadingcomponent Refraction	/ShadingComponent }
    { pixar,BackScatteringSC#0	     shadingcomponent "Back Scattering"	/ShadingComponent }
    { pixar,ThinTranslucenceSC#0     shadingcomponent "Thin Translucence" /ShadingComponent }
    { pixar,RimSC#0    		     shadingcomponent Rim		/ShadingComponent }
    { pixar,IncandescenceSC#0        shadingcomponent Incandescence	/ShadingComponent }
    { pixar,SubsurfaceScatteringSC#1 shadingcomponent "Subsurface Scattering" /ShadingComponent }
  }

  colors.slim {
    { pixar,SurfaceColor#0	color	"Surface Color"		    /Color/Utility }
    { pixar,SurfaceOpacity#0	color	"Surface Opacity"	    /Color/Utility }
    { pixar,FloatToColor#0	color	"Float To Color"	    /Color/Utility }
    { pixar,MixColors#0		color	"Mix Colors"		    /Color/Utility }
    { pixar,CombineColors#0	color	"Combine Colors"	    /Color/Utility }
    { pixar,CRemap#0		color	Remap			    /Color/Utility }  
    { pixar,Marble#0		color	Marble			    /Color/Pattern }
    { pixar,ColorRamp#0		color	Ramp			    /Color/Pattern }
    { pixar,ColorAdjust#0	color	Adjust			    /Color/Utility }
    { pixar,ColorCorrect#0	color	Correct			    /Color/Utility }
    { pixar,ColorInvert#0	color	Invert			    /Color/Utility }
    { pixar,ShadingModelToColor#0 color	"Shading Model To Color"    /Color/Utility }
    { pixar,ColorBuild#0	color	"Build a Color"		    /Color/Utility }
    { pixar,RSLVarsF#0		float	"RSL State Variables"	    /Color/Utility }
    { pixar,RSLVarsC#0		color	"RSL State Variables"	    /Color/Utility }
  }

  floats.slim {
    { pixar,SplineF#0		float	Spline			    /Float/Pattern }
    { pixar,F_Combine#0		float	Combine			    /Float/Utility }
    { pixar,Waves1D#0		float	Waves1D			    /Float/Pattern }
    { pixar,Shapes#0		float	Shapes			    /Float/Pattern }
    { pixar,ColorToGray#0	float	"Color To Gray"		    /Float/Utility }
    { pixar,RemapF#0		float	Remap			    /Float/Utility }
    { pixar,Worley#0		float	Worley			    /Float/Pattern }
    { pixar,Distance#0		float	Distance		    /Float/Pattern }
    { pixar,Time#0		float	Time			    /Float/Pattern }
    { pixar,FacingForward#1	float	"Facing Forward"	    /Float/Pattern }
    { pixar,FacingDirection#0	float	"Facing Direction"	    /Float/Pattern }
    { pixar,FRandomTiler#0	float	"Random Tiler"		    /Float/Pattern }
    { pixar,VectorLength#0	float	Length			    /Float/Pattern }
  }

  fractals.slim {
    { pixar,F_Fractal#0		float	Fractal			    /Float/Pattern }
    { pixar,C_Fractal#0		color	Fractal			    /Color/Pattern }
    { pixar,V_Fractal#0		vector	Fractal			    /Vector/Pattern }
  }

  environments.slim {
    { pixar,Blobby#1		environment Blobby		    /Environment }
    { pixar,EnvMap#3		environment "Environment Map"	    /Environment }
  }

  displacements.slim {
    { pixar,SimpleDisplacement#0 displacement	Simple		    /Displacement }
    { pixar,CombineDisplacements#1 displacement	Combine		    /Displacement }
  }

  lgNaa.slim {
    { pixar,Brownian#0		float		Brownian	    /Float/Pattern }
    { pixar,VBrownian#0		vector		Brownian	    /Vector/Pattern }
    { pixar,Turbulence#0	float		Turbulence	    /Float/Pattern }
    { pixar,OakGrain#0		float		"Oak Grain"	    /Float/Pattern }
  }

  lights.slim {
    { pixar,Point#2		light		Point		    /Light }
    { pixar,Distant#2		light		Distant		    /Light }
    { pixar,Spot#3		light		Spot		    /Light }
    { pixar,EnvironmentLight#1	light		Environment	    /Light }
    { pixar,Ambient#0		light		Ambient		    /Light }
  }

  lists.slim {
    { pixar,CombineFloatList#0	float		"Combine Float List"  /Float/Utility }
    { pixar,CombineColorList#0	color		"Combine Color List"  /Color/Utility }
  }

  manifolds.slim {
    { pixar,SurfacePoint#0	manifold	"Surface Pt"	    /Manifold }
    { pixar,WorldPoint#0	manifold	"World Pt"	    /Manifold }
    { pixar,CurrentPoint#0	manifold	"Current Pt"	    /Manifold }
    { pixar,MScale#0		manifold	Scale		    /Manifold }
    { pixar,ST#0		manifold	ST		    /Manifold }
    { pixar,Tile#0		manifold	Tile		    /Manifold }
    { pixar,Warp#0		manifold	Warp		    /Manifold }
    { pixar,Shear#0		manifold	Shear		    /Manifold }
    { pixar,Projection#1	manifold	Projection	    /Manifold }
    { pixar,SurfacePointN#0	manifoldn	"Surface Pt N"	    /Manifold }
  }

  maya.slim {
    { pixar,AgeNormPP#0		float		"Maya Particle Age" /Float/Utility }
    { pixar,MayaUV#0		manifold	"Maya UV"	    /Manifold/Maya }
    { pixar,MayaUVSet#0		manifold	"Maya UV Set"	    /Manifold/Maya }
    { pixar,MayaProj#0		manifold	"Maya Projection"   /Manifold/Maya }
  }

  noises.slim {
    { pixar,FNoise#0		float		Noise		    /Float/Pattern }
    { pixar,VNoise#0		vector		Noise		    /Vector/Pattern }
    { pixar,CNoise#0		color		Noise		    /Color/Pattern }
    { pixar,GrayCells#0		float		"Gray Cells"	    /Float/Pattern }
    { pixar,ColorCells#0	color		"Color Cells"	    /Color/Pattern }
  }

  raytrace.slim {
    { pixar,RayTrace#0		color		Trace		    /Color/Trace }
    { pixar,RayTraceHitTest#0	float		"Hit Test"	    /Float/Trace }
    { pixar,RayTraceShadow#0	color		"Trace Shadow"	    /Color/Trace }
    { pixar,RayTraceGetValuecolor#0 color	"Trace Color Value" /Color/Trace }
    { pixar,RayTraceGetValuepoint#0 point	"Trace Point Value" /Point/Trace }
    { pixar,RayTraceGetValuefloat#0 float	"Trace Float  Value" /Float/Trace }
    { pixar,RayTraceGetValuenormal#0 normal	"Trace Normal Value" /Normal/Trace }
    { pixar,IndirectLight#0	light		Indirect	    /Light }
    { pixar,PseudoArea#0	light		"Pseudo Area"	    /Light }
    { pixar,IndirectIllum#1	color		"Indirect Illum"    /Color/Shading }
    { pixar,Occlusion#1		float		Occlusion	    /Float/Trace }
  }

  reflections.slim {
    { pixar,ReflectionMap#1	color		"Reflection Map"    /Color/Maps }
    { pixar,EnvironmentMap#2	color		"Environment Map"   /Color/Maps }
    { pixar,CollectReflections#0  color		"Collect Reflections" /Color/Shading }
    { pixar,CollectRefractions#0  color		"Collect Refractions" /Color/Shading }
  }
  
  ristate.slim {
      {pixar,AOVcolor#1		color		"Color AOV"         /RiState/AOV }
      {pixar,AOVfloat#1		float		"Float AOV"         /RiState/AOV }
      {pixar,AOVpoint#1		point		"Point AOV"         /RiState/AOV }
      {pixar,AOVnormal#1	normal		"Normal AOV"        /RiState/AOV }
      {pixar,AOVvector#1	vector		"Vector AOV"	    /RiState/AOV }
      
      {pixar,PVcolor#0		color		"Color PrimVar"	    /RiState/PrimVar }
      {pixar,PVfloat#0		float		"Float PrimVar"	    /RiState/PrimVar }
      {pixar,PVpoint#0		point		"Point PrimVar"	    /RiState/PrimVar }
      {pixar,PVnormal#0		normal		"Normal PrimVar"    /RiState/PrimVar }
      {pixar,PVvector#0		vector		"Vector PrimVar"    /RiState/PrimVar }
	
      {pixar,color_Attribute#0	color		"Color Attribute"   /RiState/Attribute }
      {pixar,float_Attribute#0	float		"Float Attribute"   /RiState/Attribute }
      {pixar,point_Attribute#0	point		"Point Attribute"   /RiState/Attribute }
      {pixar,normal_Attribute#0	normal		"Normal Attribute"  /RiState/Attribute }
      {pixar,vector_Attribute#0	vector		"Vector Attribute"  /RiState/Attribute }
	
      {pixar,color_Option#0	color		"Color Option"	    /RiState/Option }
      {pixar,float_Option#0	float		"Float Option"	    /RiState/Option }
      {pixar,point_Option#0	point		"Point Option"	    /RiState/Option }
      {pixar,normal_Option#0	normal		"Normal Option"	    /RiState/Option }
      {pixar,vector_Option#0	vector		"Vector Option"	    /RiState/Option }
  }

  slbox.slim {
    { pixar,F_SLBox#0		float		"SL Box"    /Float/Utility }
    { pixar,C_SLBox#0		color		"SL Box"    /Color/Utility }
    { pixar,V_SLBox#0		vector		"SL Box"    /Vector/Utility }
    { pixar,M_SLBox#0		manifold	"SL Box"    /Manifold }
    { pixar,S_SLBox#0		shadingmodel	"SL Box"    /Surface/Utility }
  }

  spline.slim {
    { pixar,ColorSpline#0	color		Spline	    /Color/Pattern }
  }

  textures.slim {
    { pixar,F_ImageFile#1	float		"Image File"	    /Float/Maps }
    { pixar,SMImageFile#2	shadingmodel	"Image File"	    /Surface/Utility }
    { pixar,ImageFile#2		color		"Image File"	    /Color/Maps }
    { pixar,CShadowMap#0	color		"Shadow Map"	    /Color/Maps }
    { pixar,CShadowMapPointlight#0 color	"Point Shadow Map"  /Color/Maps }
    { pixar,CSoftShadowMap#0	color		"Soft Shadow Map"   /Color/Maps }
    { pixar,ShadowMap#1		float		"Shadow Map"	    /Float/Maps }
    { pixar,SoftShadowMap#1	float		"Soft Shadow Map"   /Float/Maps }
    { pixar,PhotonMapCaustic#0	color		"Caustic Photon Map" /Color/Maps }
    { pixar,PhotonMapGlobal#0	color		"Global Photon Map" /Color/Maps }
    { pixar,OcclusionMap#1	color		"Occlusion Map"	    /Color/Maps }
  }

  trivial.slim {
    { pixar,SharedFloat#0	float		"Shared Float"	    /Float/Utility }
    { pixar,SharedColor#0	float		"Shared Color"	    /Color/Utility }
    { pixar,SharedPoint#0	float		"Shared Point"	    /Point/Utility }
    { pixar,SharedVector#0	vector		"Shared Vector"	    /Vector/Utility }
    { pixar,SharedNormal#0	float		"Shared Normal"	    /Normal/Utility }
    { pixar,SharedManifold#0	float		"Shared Manifold"   /Manifold }
    { pixar,SharedShadingModel#0 float		"Shared Shading Model"	/Surface/Utility }
  }

  vectors.slim {
    { pixar,IncidentDirection#0	vector		"Incident Direction"	/Vector }
    { pixar,ViewDirection#0	vector		"View Direction"    	/Vector }
    { pixar,UDirection#0	vector		"U Direction"    	/Vector }
    { pixar,VDirection#0	vector		"V Direction"    	/Vector }
    { pixar,SurfaceNormal#0	normal		"Surface Normal"	/Vector }
    { pixar,SurfaceNormalF#0	normal		"Surface Normal (fwd)"	/Vector }
    { pixar,SurfaceNormalV#0	vector		"Surface Normal Direction" /Vector }
    { pixar,SurfaceNormalFV#0	vector		"Surface Normal Direction (fwd)" /Vector }
    { pixar,ShadingNormal#0	normal		"Shading Normal"	/Vector }
    { pixar,ReflectionDirection#0 vector	"Reflection Direction"	/Vector }
    { pixar,RefractionDirection#0 vector	"Refraction Direction"	/Vector }
    { pixar,ArbitraryDirection#0  vector	"Arbitrary Direction"	/Vector }
    { pixar,ShadingDirection#0	vector		"Shading Direction" /Vector }
  }

  volumes.slim {
    { pixar,Fog#0		volume		Fog		    /Volume }
    { pixar,Smoke#0		volume		Smoke		    /Volume }
  }

  bake.slim {
    { pixar,BakeableFloat#0	float		"Bakeable"    /Float/Utility }
    { pixar,BakeableColor#0	color		"Bakeable"    /Color/Utility }
  }

  legacy/shadingmodels_arman.slim {
    { pixar,BrushedMetal#0	shadingmodel	"Brushed Metal"	    /Surface/Legacy }
    { pixar,Cel#0		shadingmodel	Cel		    /Surface/Legacy }
    { pixar,Ceramic#0		shadingmodel	Ceramic		    /Surface/Legacy }
    { pixar,Clay#0		shadingmodel	Clay		    /Surface/Legacy }
    { pixar,ThinPlastic#0	shadingmodel	"Thin Plastic"	    /Surface/Legacy }
  }

  legacy/rat60.slim {
    { pixar,CombineDisplacements#0  displacement "Combine Displacements" /Displacement }
  }

  legacy/rat65.slim {
    { pixar,Diffuse#1		color		"Diffuse"	    /Legacy }
    { pixar,Specular#1		color		"Specular"	    /Legacy }
    { pixar,Blobby#0		environment	"Blobby"	    /Legacy }
    { pixar,EnvMap#2		environment	"Environment Map"   /Legacy }
    { pixar,EnvironmentLight#0	light		"Environment Light" /Legacy }
    { pixar,Point#1		light		Point		    /Legacy }
    { pixar,Distant#1		light		Distant		    /Legacy }
    { pixar,Spot#2		light		Spot 		    /Legacy }
    { pixar,SubsurfaceScatteringSC#0 shadingcomponent "Subsurface Scattering" /Legacy }
  }

  legacy/rat65-shadingmodels.slim {
    { pixar,Layer#1		shadingmodel	Layer		    /Legacy }
    { pixar,LayerOptimo#0	surface		"Layer Optimo"	    /Legacy }
    { pixar,IBI#1		shadingmodel	IBI		    /Legacy }
    { pixar,Matte#0		shadingmodel	Matte		    /Legacy }
    { pixar,Plastic#0		shadingmodel	Plastic	            /Legacy }
    { pixar,Metal#0		shadingmodel	"Simple Metal"	    /Legacy }
    { pixar,FresnelPlastic#0	shadingmodel	"Fresnel Plastic"   /Legacy }
    { pixar,Jewel#0		shadingmodel	Jewel		    /Legacy }
    { pixar,Blinn#1		shadingmodel	Blinn		    /Legacy }
    { pixar,Skin#2		shadingmodel	Skin	            /Legacy }
    { pixar,Gooch#0		shadingmodel	Gooch	            /Legacy }
    { pixar,Velvet#1		shadingmodel	Velvet	            /Legacy }
    { pixar,SwissArmy#1		shadingmodel	"Swiss Army"	    /Legacy }
    { pixar,Glass#0		shadingmodel	Glass	            /Legacy }
    { pixar,DIY#0		shadingmodel	DIY	    	    /Legacy }
  }

  legacy/textures.slim {
    { pixar,OcclusionMap#0	color		"Occlusion Map"	    /Legacy }
  }

  legacy/floats.slim {
    { pixar,Combine#0		float		"Combine"	    /Legacy }
    { pixar,FacingForward#0	float		"Facing Forward"    /Legacy }
    { pixar,F_ImageFile#0	float		"Image File"	    /Legacy }
    { pixar,ShadowMap#0		float		"Shadow Map"	    /Legacy }
    { pixar,SoftShadowMap#0	float		"Soft Shadow Map"   /Legacy }
  }

  legacy/colors.slim {
    { pixar,ImageFile#0		color		"Image File"	    /Legacy }
    { pixar,ImageFile#1		color		"Image File"	    /Legacy }
    { pixar,TraceReflections#0	color		"Trace Reflections" /Legacy }
    { pixar,TraceRefractions#0	color		"Trace Refractions" /Legacy }
    { pixar,ReflectionMap#0	color		"Reflection Map"    /Legacy }
    { pixar,EnvironmentMap#0	color		"Environment Map"   /Legacy }
    { pixar,EnvironmentMap#1	color		"Environment Map"   /Legacy }
    { pixar,EnvironmentMapPlus#0 color		"Environment Map Plus"	/Legacy }
    { pixar,Diffuse#0		color		"Diffuse"	    /Legacy }
    { pixar,Specular#0		color		"Specular"	    /Legacy }
  }

  legacy/shadingmodels.slim {
    { pixar,AddEnvMap#0		shadingmodel	"Add Env Map"	    /Legacy }
    { pixar,AddReflection#0	shadingmodel	"Add Reflection"    /Legacy }
    { pixar,AddRefraction#0	shadingmodel	"Add Refraction"    /Legacy }
    { pixar,AddRaytrace#0	shadingmodel	"Add Ray Trace"	    /Legacy }
    { pixar,IBI#0		shadingmodel	"IBI"		    /Legacy }
    { pixar,Skin#0		shadingmodel	"Skin"		    /Legacy }
    { pixar,Skin#1		shadingmodel	"Skin"		    /Legacy }
    { pixar,SMImageFile#0	shadingmodel	"Image File"	    /Legacy }
    { pixar,SMImageFile#1	shadingmodel	"Image File"	    /Legacy }
    { pixar,Layer#0		surface 	"Layer"		    /Legacy }
    { pixar,AdditiveFX#0	shadingmodel	"Additive FX"	    /Legacy }
    { pixar,Blinn#0		shadingmodel	"Blinn"		    /Legacy }
    { pixar,Velvet#0		shadingmodel	"Velvet"	    /Legacy }
  }

  legacy/raytrace.slim {
    { pixar,SwissArmy#0		shadingmodel	"Swiss Army"	    /Legacy }
    { pixar,IndirectIllum#0	color		"Indirect Illum"    /Legacy }
    { pixar,Occlusion#0		float		Occlusion           /Legacy }
  }

  legacy/misc.slim {
    { pixar,Projection#0	manifold	"Projection"	    /Legacy }
    { pixar,SurfPtLight#0	manifold	"Surface Pt Light"  /Legacy }
    { pixar,Spot#0		light		"Spot"		    /Legacy }
    { pixar,Spot#1		light		"Spot"		    /Legacy }
    { pixar,Distant#0		light		"Distant"	    /Legacy }
    { pixar,Point#0		light		"Point"		    /Legacy }
    { pixar,EnvMap#0		environment	"Env Map"	    /Legacy }
  }

}; # end of lazyTemplateList


#
#  "Create Appearance" menu initialization
#

# clear all menu descriptions
::Slim::ClearCreateMenuDescriptions

# Now invoke the lazy registration. You can call this same procedure
# from downstream slim.ini files to register your own templates
# note that this procedure also adds these templates to the
# create appearance menus
#
::Slim::RegisterLazyTemplates $lazyTemplateList

# Add menu info for foundation templates
::Slim::AddCreateMenuDescriptions $foundationMenuDescriptions

# This preference defines the structure of the "Create Appearance" menu
# The contents (referenced using the "_menuDesc" macro) are defined above
#
SetPref CreateAppearanceMenu {
    {   _cascade Ensemble {
	    {_menuDesc /Ensemble}
	}
    }
    {   _cascade Surface {
	    {_menuDesc /Surface}
	}
    }
    {   _cascade Displacement {
	    {_menuDesc /Displacement}
	}
    }
    {   _cascade Light {
	    {_menuDesc /Light}
	}
    }
    {   _cascade Volume {
	    {_menuDesc /Volume}
	}
    }
    {   _cascade RIBBox {
	    {_menuDesc /RIBBox}
	}
    }
    {   _cascade MapGen {
 	    {_menuDesc /MapGen}
	}
    }
    pixar,TCLBox#0
    pixar,Archiver#0
    {_separator expert}
    {   _cascade Color {
	    {_menuDesc /Color}
	} expert
    }
    {   _cascade Float {
	    {_menuDesc /Float}
	} expert
    }
    {   _cascade "Shading Component" {
	    {_menuDesc /ShadingComponent}
	} expert
    }
    {   _cascade Manifold {
	    {_menuDesc /Manifold}
	} expert
    }
    {   _cascade Vector {
	    {_menuDesc /Vector}
	} expert
    }
    {   _cascade RiState {
	    {_menuDesc /RiState}
	} expert
    }
    {   _cascade Dynamic { 
	    _dynamic 
	} expert
    }
    {   _cascade Preloaded { 
	    _preloaded 
	} expert
    }
}

# This preference defines the contents of the menus presented
# in the connection menus of parameters in the Appearance Editor
# Note that we use the same "_menuDesc" macros as above
#
SetPref TypedAppearanceMenu {
    ensemble {
	{ _menuDesc /Ensemble }
	{ _addtypes ensemble }
    }
    ribbox {
	{ _menuDesc /RIBBox }
	{ _addtypes ribbox }
    }
    surface {
	{ _menuDesc /Surface }
	{ 
	    _cascade More {
		{ _addtypes surface}
		{ _addtypes shadingmodel}
	    }
	}
    }
    shadingmodel {
	{ _menuDesc /Surface }
	{
	    _cascade More {
		{ _addtypes shadingmodel}
	    }
	}
	{
	    _cascade Color {
	        { _menuDesc /Color }
	    }
        }
    }
    shadingmodel_aov {
	{ _menuDesc /Surface }
	{
	    _cascade More {
		{ _addtypes shadingmodel_aov}
	    }
	}
	{
	    _cascade Color {
	        { _menuDesc /Color }
	    }
        }
    }
    shadingcomponent {
	{ _menuDesc /ShadingComponent }
	{
	    _cascade More {
		{ _addtypes shadingcomponent}
	    }
	}
	{
	    _cascade Color {
	        { _menuDesc /Color }
	    }
        }
    }
    displacement {
	{ _menuDesc /Displacement }
	{ _addtypes displacement}
    }
    light {
	{ _menuDesc /Light}
	{
	    _cascade More {
		{ _addtypes light}
	    }
	}
    }
    volume {
	{ _menuDesc /Volume }
	{ _addtypes volume}
    }
    color {
	{ _menuDesc /Color }
        {
	    _cascade More {
		{ _addtypes color}
	    }
	}
	{
	    _cascade Float {
	        { _menuDesc /Float }
	    }
        }
	{
	    _cascade "Shading Component" {
	        { _menuDesc /ShadingComponent }
	    }
        }
	{
	    _cascade Surface {
	        { _menuDesc /Surface }
	    }
        }
    }
    float {
	{ _menuDesc /Float }
	{ 
	    _cascade More {
		{ _addtypes float}
	    }
	}
	{
	    _cascade Color {
	        { _menuDesc /Color }
	    }
        }
    }
    manifold { 
	{ _menuDesc /Manifold }
	{
	    _cascade More {
		{ _addtypes manifold}
	    }
	}
    }
    vector {
	{ _addtypes vector}
    }
    normal {
	{ _addtypes normal}
    }
}


# This table is used to register shaders and procedurals
# and configure the "Import Appearance" menu (below)
#
set externalAppearanceList {
    { ratCollector.slo           surface  "RAT Collector"  /Surface/Utility }
    { Mondo.slo                  surface  "Mondo"          /Surface }
    { smokeNfire.slo             surface  "Smoke and Fire" /Surface }
    { magicSurf.slo              surface  "Magic Surface"  /Surface }
    { cmarble.slo                surface  "CMarble"        /Surface }
    { shinymetal.slo             surface  "Shiny Metal"    /Surface }
    { spatter.slo                surface  "Spatter"        /Surface }
    { stippled.slo               surface  "Stippled"       /Surface }
    { stone.slo                  surface  "Stone"          /Surface }
    { null.slo                   surface  "Null"           /Surface/Utility }
    { defaultsurface.slo         surface  "Default"        /Surface/Utility }
    { constant.slo               surface  "Constant"       /Surface/Utility }
    { matte.slo                  surface  "Matte"          /Surface }
    { plastic.slo                surface  "Plastic"        /Surface }
    { glassrefr.slo              surface  "Traced Glass"   /Surface }
    { aachrome.slo               surface  "Chrome"         /Surface }
    { carpet.slo                 surface  "Carpet"         /Surface }
    { wood.slo                   surface  "Wood"           /Surface }

    { ratUberlight.slo           light    "UberLight"      /Light }
    { mtorSpotLight.slo          light    "Spot"           /Light }
    { mtorDirectionalLight.slo   light    "Directional"    /Light }
    { ratBarnDoor.slo            light    "Barn Door"      /Light }
    { ratEnvironment.slo         light    "Environment"    /Light }
    { volumeSpot.slo             light    "Volume Spot"    /Light }
    { magicLight.slo             light    "Magic Light"    /Light }
    { disklight.slo              light    "Disk"           /Light }
    { cylinderlight.slo          light    "Cylinder"       /Light }
    { rectanglelight.slo         light    "Rectangle"      /Light }
    { spherelight.slo            light    "Sphere"         /Light }
    { linearlight.slo            light    "Linear"         /Light }
    { indirectlight.slo          light    "Indirect"       /Light }
    { causticlight.slo           light    "Caustic"        /Light }

    { fog.slo                    volume   "Fog"            /Volume }
    { depthcue.slo               volume   "Depth Cue"      /Volume }
    { volumeSmoke.slo            volume   "Smoke"          /Volume }
    { ratmosphere.slo            volume   "RATmosphere"    /Volume }

    { plugins/mtorUltraFur.slim  RIBGen   "UltraFur"       /RIBGen }
    { plugins/mtorFur.slim       RIBGen   "Fur"            /RIBGen }
    { plugins/mtorFuzz.slim      RIBGen   "Fuzz"           /RIBGen }
    { plugins/quadrics.slim      RIBGen   "Quadrics"       /RIBGen }
}


#
#  "Import Appearance" menu initialization
#

# clear import menu
::Slim::ClearImportMenuDescriptions
# register the external appearances listed above
::Slim::RegisterImportedAppearances $externalAppearanceList


# This preference defines the structure of the "Import Appearance" menu
# The contents (referenced using the "_menuDesc" macro) are defined above.
# When referring to _menuDesc macros for this menu, you must use
# the "Import" prefix.
#
SetPref ImportAppearanceMenu {
    {   _cascade Surface {
	    {_menuDesc Import/Surface}
	}
    }
    {   _cascade Light {
	    {_menuDesc Import/Light}
	}
    }
    {   _cascade Volume {
	    {_menuDesc Import/Volume}
	}
    }
    {   _cascade RIBGen {
	    {_menuDesc Import/RIBGen}
	}
    }
}