## XSIFactory.RemoveShaderDef

### Introduced

v9.0 (2011)

### Description

Removes the specified shader definition from Softimage.

### C# Syntax

    XSIFactory.RemoveShaderDef( ShaderDef in_ShaderDef );

### Scripting Syntax

    XSIFactory.RemoveShaderDef( in_ShaderDef );

### Parameters

Parameter | Type | Description
--- | --- | ---
in_ShaderDef | ShaderDef | Shader definition to remove

### Examples

#### JScript Example

    /*
            This example demonstrates how to create a completely bogus shader
            definition on the fly (ie., not to be persisted), instantiate it
            on a scene object, and then remove it.
    */
    NewScene("", false);
    // First check to make sure the parser name isn't already registered
    // Create the shader definition on the fly and get its ProgID
    var sProgID = CreateDefOnTheFly();
    // Now create a cube and instantiate this shader on it
    var oCube = CreatePrim("Cube", "MeshSurface");
    CreateShaderFromProgID(sProgID, "Sources.Materials.DefaultLib.Scene_Material");
    SIConnectShaderToCnxPoint("Sources.Materials.DefaultLib.Scene_Material.Chauncey.splish",
            "Sources.Materials.DefaultLib.Scene_Material.Phong.ambient", false);
    // List all the on-the-fly shader definitions found
    FindOnTheFlyDefs();
    // Now remove it
    var oRemoveMe = Application.ShaderDefinitions(sProgID);
    if (oRemoveMe) {
            XSIFactory.RemoveShaderDef(oRemoveMe);
            // List any remaining on-the-fly shader definitions
            FindOnTheFlyDefs();
    } else {
            Application.LogMessage("Couldn't find "+sProgID+" shader definition");
    }
    // Expected output:
    // INFO : Found 2 on-the-fly definition(s): RendererUserPorts.mental ray.1.0, Gardiner.Chauncey.1.0
    // INFO : Found 1 on-the-fly definition(s): RendererUserPorts.mental ray.1.0
    // This function demonstrates how to find a a list of on-the-fly shader definitions
    function FindOnTheFlyDefs ()
    {
            var aOTFDefs = new Array();
            var e = new Enumerator(Application.ShaderDefinitions);
            for (; !e.atEnd(); e.moveNext()) {
                    var oMaybe = e.item();
                    if (oMaybe.ParserBased && !oMaybe.DefinitionPath) {
                            aOTFDefs.push(oMaybe);
                    }
            }
            // Write out results
            if (aOTFDefs.length) {
                    Application.LogMessage("Found "+aOTFDefs.length+" on-the-fly definition(s): "+aOTFDefs.join(", "));
            } else {
                    Application.LogMessage("No on-the-fly definitions found");
            }
    }
    // This function creates a bogus shader definition on the fly and returns its ProgID
    function CreateDefOnTheFly ()
    {
            var otmpShaderDef = XSIFactory.CreateShaderDef("Gardiner", "Chauncey", 1, 0);
            otmpShaderDef.Category = "Test Shaders";
            // family
            otmpShaderDef.AddShaderFamily("mrTexture");
            // paramdef options (in)
            var otmpShadPDefOpts = XSIFactory.CreateShaderParamDefOptions();
            otmpShadPDefOpts.SetTexturable(true);
            otmpShadPDefOpts.SetShortName("squelch");
            // paramdef (in)
            var otmpInParams = otmpShaderDef.InputParamDefs;
            otmpInParams.AddParamDef("squerch", siColorParameterType, otmpShadPDefOpts);
            // paramdef options (out)
            otmpShadPDefOpts = XSIFactory.CreateShaderParamDefOptions();
            otmpShadPDefOpts.SetTexturable(true);
            otmpShadPDefOpts.SetShortName("splosh");
            // paramdef (out)
            var otmpOutParams = otmpShaderDef.OutputParamDefs;
            otmpOutParams.AddParamDef("splish", siColorParameterType, otmpShadPDefOpts);
            // renderer
            var otmpRendDef = otmpShaderDef.AddRendererDef("whoops");
            otmpRendOpts = otmpRendDef.RendererOptions;
            otmpRendOpts.Set("plain", false);
            // attributes
            var otmpAttrs = otmpShaderDef.Attributes;
            otmpAttrs.Set("chuckle", "on");
            otmpAttrs.Set("nbr", 456123);
            // return the ProgID of the new shader
            return otmpShaderDef.ProgID;
    }

### See Also

XSIFactory.CreateShaderDef XSIFactory.CreateShaderParamDefOptions XSIApplication.ShaderDefinitions XSIApplication.GetShaderDef