Execute Callback Reference
    RTSHADER_API bool (*RTS_Shader3_Execute)
    {
        IRTSExecutionState          *in_pExecState,
        void                        *in_pParams,
        XSI_RTS_Primitive           *in_pPrimitive,
        void                        *in_pAttributes,
        XSI_RTS_Attribute_Size      *in_pAttributesSize,
        void                        **io_pShaderInstanceData
    }

Once the shader has responded to GetAttributeList with its list of attributes, Softimage will module the values for these attributes and will pass them to the Execute function along with an array describing each attribute's size and format. Note that if an attribute was not found or was not defined on the mesh or point cloud, Softimage will pass a null pointer.

Note:
This callback is mandatory
Parameters:
in_pExecStateThe execution state interface
in_pParamsThe shader property page parameters
in_pPrimitiveThe geometry information
in_pAttributesThe Softimage RTS Attribute data
in_pAttributesSizeThe sizes of the attributes
io_pShaderInstanceDataPointer to This shader instance user data
Returns:
Success/failure
Example:
This example builds on the one on the GetAttributeList page. Here's what the Execute function might look like for the example shader described:
    RTSHADER_API bool MyShader_Execute
    (
        IRTSExecutionState      *in_pExecState,
        void                    *in_pParams,
        XSI_RTS_Primitive       *in_pPrimitive,
        void                    *in_pAttributes,
        eXSI_Attribute_Size     *in_pAttributesSize,
        void                    **io_pInstanceData
    )
    {
        ShaderPPG* options = (ShaderPPG*)in_pParams;

        if (options->useColor)
        {
            float* pfPositions  = ((float**)in_pAttributes)[0];
            float* pfNormals    = ((float**)in_pAttributes)[1];
            float* pfColors0    = ((float**)in_pAttributes)[2];
            float* pfColors1    = ((float**)in_pAttributes)[3];
            float* pfFoobars    = ((float**)in_pAttributes)[4];
            ...
        } else {
            float* pfPositions  = ((float**)in_pAttributes)[0];
            float* pfNormals    = ((float**)in_pAttributes)[1];
            float* pfFoobars    = ((float**)in_pAttributes)[2];
            ...
        }

        ...
    }
See also:
IRTSExecutionState, Realtime Shader Callbacks, cus_rtshad_GeometryData Geometry Data , cus_rtshad_ExecutionFlow Execution Flow