Defining Software Shader DLL Entry Points

A software shader method prototype must be exported by a DLL to be visible by HOOPS Luminate, and it must be indicated as so in the shader program itself:

RED::RenderShader shader;
RED::ShaderProgramID sshid;
RED::ShaderString ssh;
RED::Version version;

// Define the software shader callback DLL entry point.
RC_TEST( ssh.SoftShaderStart( "MyLibrary.dll", "SoftwareShader", version ) );
ssh.ShaderEnd();

// Load the software shader.
RC_TEST( iresmgr->LoadShaderFromString( sshid, ssh ) );

// Create the render code to bind vertex position data.
RED::RenderCode rcode;
rcode.BindChannel( RED_VSH_VERTEX, RED::MCL_VERTEX );

// Setup the shader.
RC_TEST( shader.SetRenderCode( rcode, RED_L0, RED::HW_SOFT_TRACER ) );
RC_TEST( shader.SetVertexProgramId( sshid, RED_L0, resmgr, RED::HW_SOFT_TRACER ) );
RC_TEST( shader.SetPixelProgramId( sshid, RED_L0, resmgr, RED::HW_SOFT_TRACER ) );

Then, the ‘SoftwareShader’ method pointed to by the shader program must be a valid DLL entry point in ‘MyLibrary.dll’.

Please note that the name of the library must be libMyLibrary.so on Linux and libMyLibrary.dylib on MacOS, and it must still be declared as being “MyLibrary.dll” in the RED::ShaderString::SoftShaderStart method.