void MeshViewer::initCamera( InitialCameraData& camera_data ) { // Set up camera /*float max_dim = m_aabb.maxExtent(); float3 eye = m_aabb.center(); eye.y = m_aabb.m_min.y; eye.z = max_dim; float3 lookAt = eye; lookAt.z = m_aabb.center().z;*/ float3 eye = make_float3(130.f, 400.f, 90.f); float3 lookAt = m_aabb.center(); camera_data = InitialCameraData(eye, lookAt, make_float3( 0.0f, 1.0f, 0.0f ), 30.0f); // (eye, lookAt, up, vfov) // Declare camera variables. The values do not matter, they will be overwritten in trace. m_context[ "eye"]->setFloat(make_float3(0.0f, 0.0f, 0.0f)); m_context[ "U" ]->setFloat(make_float3(0.0f, 0.0f, 0.0f)); m_context[ "V" ]->setFloat(make_float3(0.0f, 0.0f, 0.0f)); m_context[ "W" ]->setFloat(make_float3(0.0f, 0.0f, 0.0f)); }
void CannonBall::initScene( InitialCameraData& camera_data ) { // Two Rays, on light and one shadow m_context->setRayTypeCount( 2 ); m_context->setEntryPointCount( 1 ); m_context->setStackSize( 2520 ); m_context["max_depth"]->setInt( 6 ); m_context["radiance_ray_type"]->setUint( 0u ); m_context["shadow_ray_type"]->setUint( 1u ); m_context["scene_epsilon"]->setFloat( 1.e-3f ); // Output buffer optix::Variable output_buffer = m_context["output_buffer"]; output_buffer->set(createOutputBuffer(RT_FORMAT_UNSIGNED_BYTE4, WIDTH, HEIGHT ) ); // Set up camera camera_data = InitialCameraData( optix::make_float3( 8.3f, 4.0f, -20.0f ), // eye optix::make_float3( 0.5f, 0.3f, 1.0f ), // lookat optix::make_float3( 0.0f, 1.0f, 0.0f ), // up 60.0f ); // vfov // Declare camera variables. The values do not matter, they will be overwritten in trace. m_context["eye"]->setFloat( optix::make_float3( 0.0f, 0.0f, 0.0f ) ); m_context["U"]->setFloat( optix::make_float3( 0.0f, 0.0f, 0.0f ) ); m_context["V"]->setFloat( optix::make_float3( 0.0f, 0.0f, 0.0f ) ); m_context["W"]->setFloat( optix::make_float3( 0.0f, 0.0f, 0.0f ) ); // Ray generation program std::string ptx_path = helpers.getPTXPath( project_name, "pinhole_camera.cu" ); optix::Program ray_gen_program = m_context->createProgramFromPTXFile( ptx_path, "pinhole_camera" ); m_context->setRayGenerationProgram( 0, ray_gen_program ); // Exception program optix::Program exception_program = m_context->createProgramFromPTXFile( ptx_path, "exception" ); m_context->setExceptionProgram( 0, exception_program ); m_context["bad_color"]->setFloat( 0.0f, 1.0f, 0.0f ); // Miss program m_context->setMissProgram( 0, m_context->createProgramFromPTXFile( helpers.getPTXPath( project_name, "constantbg.cu" ), "miss" ) ); m_context["bg_color"]->setFloat( optix::make_float3(108.0f/255.0f, 166.0f/255.0f, 205.0f/255.0f) * 0.5f ); // Setup lights m_context["ambient_light_color"]->setFloat(0,0,0); BasicLight lights[] = { { { -7.0f, 15.0f, -7.0f }, { .8f, .8f, .8f }, 1 } }; optix::Buffer light_buffer = m_context->createBuffer(RT_BUFFER_INPUT); light_buffer->setFormat(RT_FORMAT_USER); light_buffer->setElementSize(sizeof(BasicLight)); light_buffer->setSize( sizeof(lights)/sizeof(lights[0]) ); memcpy(light_buffer->map(), lights, sizeof(lights)); light_buffer->unmap(); m_context["lights"]->set(light_buffer); // Create scene geometry createGeometry(); // FInalize m_context->validate(); m_context->compile(); }