예제 #1
0
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
}
예제 #2
0
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";
}