char* initialize ( char* cmdline ) { // Get comnmand line std::string str = cmdline; std::vector<std::string> args; while ( str.length() > 0) { args.push_back ( strSplit ( str, " " ) ); } fileName = ""; for (int n=0; n < args.size(); n++ ) { if ( args[n].compare ( "-f" ) == 0 ) { startFrame = strToI ( args[n+1] ); } if ( args[n].compare ( "-d" ) == 0 ) { // max_draw maxDraw = strToI ( args[n+1] ); } if ( args[n].find_first_of ( "." ) != std::string::npos ) { fileName = args[n]; } } if ( fileName.length()== 0 || args.size()==0 ) { app_printf ( "USAGE: state_view [-f #] [-d #] filename.raw\n\n" ); app_printf ( " -f # Start at frame \n" ); app_printf ( " -d # Maximum number of draw calls to read \n" ); _getch(); exit(-1); } for (int n=0; n < 10; n++ ) bShow[n] = true; // Initialize camera cam.setPos ( 0, 0, 1 ); cam.setToPos ( -window_width*3/8, -window_height*3/8, 1 ); cam.updateMatricies (); // Initialize bin and call names setup_bins (); // Load trace file char fname[256]; strcpy ( fname, fileName.c_str() ); load_trace_raw ( fname ); // required init functions init2D ( "arial_12" ); // specify font file (.bin/tga) setText ( 1.0, -0.5 ); // scale by 0.5, kerning adjust -0.5 pixels setview2D ( window_width, window_height ); // draw visualization layer drawMatrix (); PERF_INIT ( false ); // Enable CPU perf (do not require nv-perfmarker DLL) PERF_SET ( false, 2, false, "" ); // Perf CPU?, CPU level, NV Perfmarkers, Log filename return "NVIDIA State Viewer, by Rama Hoetzlein"; // Return Window title }
bool AppWindow::init () { // Get comnmand line std::string str = getCmdLine(); if ( str == "" ) str = "-i lucy.scn -s 8"; std::vector<std::string> args; while ( str.length() > 0) { args.push_back ( strSplit ( str, " " ) ); } std::string filename = ""; for (int n=0; n < args.size(); n++ ) { if ( args[n].compare ( "-p" ) == 0 ) { // added path scene.AddPath ( std::string( args[n+1] ) ); } if ( args[n].compare ( "-i" ) == 0 ) { // input file (scn) filename = args[n+1]; } if ( args[n].compare ( "-t" ) == 0 ) { // timing output gTimingFile = "timing.csv"; } if ( args[n].compare ( "-s" ) == 0 ) { // # samples num_samples = atoi ( args[n+1].c_str() ); } } // Write timing file gTimingFP = 0x0; if ( gTimingFile != "" ) { char name[1024]; strcpy ( name, gTimingFile.c_str() ); gTimingFP = fopen ( name, "wt" ); } nvprintf ( "OpenGL + OptiX Compositing Demo\n" ); nvprintf ( "Copyright (c) 2014, NVIDIA Corporation\n" ); //-------- GUI addGui ( 20, 20, 200, 24, "Frame Time (ms)", GUI_PRINT, GUI_FLOAT, &frameTime, 0, 0 ); //-------- Scene // Create camera nvprintf ( "Creating camera...\n" ); Camera3D* cam = scene.AddCamera (); cam->setOrbit ( Vector3DF(45,30,0), Vector3DF(0,0,0), 120, 120 ); cam->setNearFar ( 1, 1000 ); cam->setFov ( 71.635 ); cam->updateMatricies (); // Create model(s) nvprintf ( "Creating model(s)...\n" ); nvprintf ( " Project path: %s\n", std::string(PROJECT_ABSDIRECTORY).c_str() ); scene.AddPath ( "..\\assets\\" ); scene.AddPath ( "..\\shaders\\" ); scene.AddPath ( std::string(PROJECT_RELDIRECTORY) ); scene.AddPath ( std::string(PROJECT_RELDIRECTORY) + "\\assets\\" ); scene.AddPath ( std::string(PROJECT_RELDIRECTORY) + "\\shaders\\" ); scene.AddPath ( std::string(PROJECT_ABSDIRECTORY) ); scene.AddPath ( std::string(PROJECT_ABSDIRECTORY) + "\\assets\\" ); scene.AddPath ( std::string(PROJECT_ABSDIRECTORY) + "\\shaders\\" ); scene.LoadFile ( filename ); // Initialize fonts /* init2D ( "data/arial_24" ); setText ( 0.5, -0.5 ); setview2D ( getWidth(), getHeight() ); setorder2D ( true, -0.00001 );*/ //MoveWindow ( 5, 5, window_width, window_height ); // Setup OpenGL default render nvprintf ( "Creating OpenGL shader...\n" ); renderAddShaderGL ( scene, "render_GL.vert.glsl", "render_GL.frag.glsl" ); // Setup OptiX #ifdef BUILD_OPTIX nvprintf ( "Creating Optix shader..\n" ); renderAddShaderOptix ( scene, "render_Optix.vert.glsl", "render_Optix.frag.glsl" ); nvprintf ( "Initializing Optix..\n" ); renderInitializeOptix ( getWidth(), getHeight() ); nvprintf ( "Adding models to Optix..\n" ); int mat_id = renderAddMaterialOptix ( scene, "optix_shadow_rays.ptx" ); for (int n=0; n < scene.getNumModels(); n++ ) renderAddModelOptix ( scene.getModel(n), mat_id ); nvprintf ( "Validating Optix..\n" ); renderValidateOptix (); #endif // Setup OptiX Prime #ifdef BUILD_OPTIX_PRIME nvprintf ( "Creating Optix Prime shader..\n" ); renderAddShaderOptixPrime ( scene, "render_Optix.vert.glsl", "render_Optix.frag.glsl" ); nvprintf ( "Initializing Optix Prime..\n" ); renderInitializeOptixPrime ( scene, getWidth(), getHeight() ); nvprintf ( "Adding models to Optix..\n" ); for (int n=0; n < 1; n++ ) renderAddModelOptixPrime ( scene.getModel(n) ); #endif draw_mode = MODE_OPENGL; #ifdef BUILD_OPTIX draw_mode = MODE_OPTIX; #else nvprintf ( "***** ERROR:\n" ); nvprintf ( " OptiX 3.6.3 was not found.\n"); nvprintf ( " Please specify CUDA_LOCATION variable for CUDA 5.5 during cmake generate step.\n" ); nvprintf ( " Running sample with OpenGL only. No hard shadows will appear.\n"); nvprintf ( "*****\n\n" ); #endif cam_mode = MODE_CAMERA; PERF_INIT ( 64, true, false, false, 0, "" ); // 32/64bit, CPU?, GPU?, Cons out?, Level, Log file return "OpenGL + OptiX Compositing"; }