void PrintShaderHelp( int dllID )
{
    IShaderDLLInternal *pShaderDLL = g_ShaderDLLs[dllID].m_pInternal;
    int nShaders = pShaderDLL->ShaderCount();
    int i;
    printf( "<H2>%s</H2><BR>\n", g_ShaderDLLs[dllID].m_Filename );
    printf( "<dl>\n" ); // define list
    for( i = 0; i < nShaders; i++ )
    {
        IShader *pShader = pShaderDLL->GetShader( i );
        printf( "<A NAME=\"%s_%s\"></A>\n", g_ShaderDLLs[dllID].m_Filename, pShader->GetName() );
        printf( "<dt>%s<dl>\n", pShader->GetName() );
        int nParams = pShader->GetNumParams();
        int j;
        for( j = 0; j < nParams; j++ )
        {
            printf( "<dt>%s\n<dd>%s\n",
                    pShader->GetParamName( j ),
                    pShader->GetParamHelp( j )
                  );
        }
        printf( "</dl><br>\n" ); // end define list
    }
    printf( "</dl>\n" ); // end define list
}
void PrintShaderContents( int dllID )
{
    IShaderDLLInternal *pShaderDLL = g_ShaderDLLs[dllID].m_pInternal;
    int nShaders = pShaderDLL->ShaderCount();
    int i;
    printf( "<H2>%s</H2><BR>\n", g_ShaderDLLs[dllID].m_Filename );
    printf( "<dl>\n" ); // define list
    for( i = 0; i < nShaders; i++ )
    {
        IShader *pShader = pShaderDLL->GetShader( i );
        printf( "<A HREF=\"#%s_%s\">\n", g_ShaderDLLs[dllID].m_Filename, pShader->GetName() );
        printf( "<dt>%s</A>\n", pShader->GetName() );
//		int nParams = pShader->GetNumParams();
    }
    printf( "</dl>\n" ); // end define list
}