si = Application #sdef = si.GetShaderDef( "Softimage.BA_particle_density3.1.0" ) sdefs = si.ShaderDefinitions print sdefs.Count # 1390 for sdef in si.ShaderDefinitions: print sdef for n,v in map( None, sdef.Attributes.Names,sdef.Attributes.Values ): print " %s=%s" % (n,v)
For most shaderdefs, the only attributes are “shaderlocation” and “thumbnail”.
Softimage.BA_particle_density is one of the few that has anything more interesting. If a Softimage.BA_particle_density shader exists in the scene, you’ll get this:
# Softimage.BA_particle_density3.1.0 # shaderlocation=3 # thumbnail=particle.bmp # {C535FA4D-E44A-45EB-AEE0-9F9AAEA91745}=None # {20ECB4F8-A4A1-44FE-956A-0F6E98D541A8}=Color,Id,PointVelocity,Orientation,Size,PointPosition,Age,AgeLimit,StrandPosition,StrandVelocity,StrandSize,StrandOrientation,StrandColor
If you look at the BA_particle_density3 spdl, you’ll see that that last attribute corresponds to the “ICEattribute” entry for the output parameter. That ICEattribute tells Softimage to pull date from the ICE tree during rendering.
SPDL Version = "2.0.0.0"; Reference = "{047CA80F-9EED-4507-9F83-4BB77C01DFC1}"; PropertySet "BA_particle_density3_params" { Parameter "out" output { title = "BA_particle_density3 output parameter"; guid = "{0B955B1D-CCBA-4B68-9CD3-ABE9467D665D}"; ICEattribute = "Color,Id,PointVelocity,Orientation,Size,PointPosition,Age,AgeLimit,StrandPosition,StrandVelocity,StrandSize,StrandOrientation,StrandColor";