Hi,
i try to write a shader with a gradient input.
Here is a part from the code which i have made and which is working:

    Context ctxt( in_ctxt );
    Application app;
    ShaderDef sdef( ctxt.GetAttribute( L"Definition" ) );
    sdef.AddShaderFamily( siShaderFamilyTexture, true );

    // PARAMETERS
    Factory fact = app.GetFactory();
    ShaderParamDefContainer inpdefs = sdef.GetInputParamDefs();
    ShaderParamDefContainer outpdefs = sdef.GetOutputParamDefs();

    // Input
    ULONG cnt = 12;
    CRefArray popts;
    ShaderParamDefOptions *opts = new ShaderParamDefOptions[cnt];
    for( ULONG i=0; i < cnt; i++ )  {

        popts.Add( fact.CreateShaderParamDefOptions() );
        opts[i] = ShaderParamDefOptions( popts[i] );
    }

    opts[0].SetInspectable( true );
    opts[0].SetTexturable( false );
    opts[0].SetLongName( L"Gradient" );
    inpdefs.AddParamDef( L"valueGradient", siShaderDataTypeGradient, popts[0] );

    opts[1].SetInspectable( true );
    opts[1].SetTexturable( true );
    opts[1].SetAnimatable( true );
    opts[1].SetLongName( L"Color1" );
    inpdefs.AddParamDef( L"inColor1", siShaderDataTypeColor3, popts[1] );

...

Now i want to define the inColor1 for the marker1 color.
In the spdl file of the gradient shader, i see there is a connection like this:

    Connection "gradient::color1" = interface "color1";

How can i make this in c++?
I have tried some things, but nothing works:

    inpdefs.GetParamDefByName(L"valueGradient").GetAttributes().Set(
L"{210EA5F3-1742-4204-999F-E0750F2289E4}", L"inColor1" );
    inpdefs.GetParamDefByName(L"valueGradient").GetAttributes().Set(
L"gradient::color1", L"inColor1" );
    inpdefs.GetParamDefByName(L"valueGradient").GetAttributes().Set(
L"color1", L"inColor1" );
    opts[0].SetAttribute( L"{210EA5F3-1742-4204-999F-E0750F2289E4}",
L"inColor1" );
    opts[0].SetAttribute( L"color1", L"inColor1" );
    opts[0].SetAttribute( L"gradient::color1", L"inColor1" );


Sorry for the bad layout, but gmail works only with the simple html.
It would be nice to get help from someone.

Best,
Stephan

Reply via email to