Hi
A very quick and simple problem but bothers me for a while.
So I am learning the sample code of the optix, which is cool, then I found this:
When the function is creating the context.
void createContext( bool use_pbo )
{
// Set up context
context = Context::create();
context->setRayTypeCount( 1 );
context->setEntryPointCount( 1 );
context->setStackSize( 800 );
// Note: high max depth for reflection and refraction through glass
[b]context["max_depth"]->setInt( 10 );
context["cutoff_color"]->setFloat( 0.2f, 0.2f, 0.2f );
context["frame"]->setUint( 0u );
context["scene_epsilon"]->setFloat( 1.e-3f );[/b]
Buffer buffer = sutil::createOutputBuffer( context, RT_FORMAT_UNSIGNED_BYTE4, WIDTH, HEIGHT, use_pbo );
context["output_buffer"]->set( buffer );
// Accumulation buffer
Buffer accum_buffer = context->createBuffer( RT_BUFFER_INPUT_OUTPUT | RT_BUFFER_GPU_LOCAL,
RT_FORMAT_FLOAT4, WIDTH, HEIGHT );
context["accum_buffer"]->set( accum_buffer );
// Ray generation program
std::string ptx_path( ptxPath( "path_trace_camera.cu" ) );
Program ray_gen_program = context->createProgramFromPTXFile( ptx_path, "pinhole_camera" );
// Specifies the ray generation program for a given context entry point.
[b]context->setRayGenerationProgram( 0, ray_gen_program );[/b]
...
}
so first question is the context set the value of max_depth or frame or cutoff_color at the very beginning,
i know these parameters are decalred in the ptx file or cu file as a “shader” in my mind.
But it was after that the program is linked to the context.
So how is the optix context know the parameters before the program is been set to it?
Do I miss something here?
Another question is very simple, so is this context[“XXXX”] usage a optix grammar or a new C++ feature,
I am sorry I am new at this.
Thanks a lot.