From 5342ce6ee8c8bdd275152dc6996eda9124cb497b Mon Sep 17 00:00:00 2001
From: Sebastian Pape <Sebastian.Pape@rwth-aachen.de>
Date: Thu, 26 Jul 2018 16:56:31 +0200
Subject: [PATCH] Added exception programs and halfed the stacksize. Also
 changed the cutoff color

---
 demos/optical_bench/src/lens.cpp                  |  2 +-
 demos/optical_bench/src/optix_context_manager.cpp | 10 +++++++---
 demos/optical_bench/src/ray_pass.cpp              |  4 +++-
 3 files changed, 11 insertions(+), 5 deletions(-)

diff --git a/demos/optical_bench/src/lens.cpp b/demos/optical_bench/src/lens.cpp
index a3c55b0e..8848652a 100644
--- a/demos/optical_bench/src/lens.cpp
+++ b/demos/optical_bench/src/lens.cpp
@@ -349,7 +349,7 @@ void Lens::CreateGlassMaterialInstance() {
                                         manager_->GetGlassProgramIterative());
 
   glass_material_["importance_cutoff"]->setFloat(1e-2f);
-  glass_material_["cutoff_color"]->setFloat(0.034f, 0.055f, 0.085f);
+  glass_material_["cutoff_color"]->setFloat(0.035f, 0.102f, 0.169f);
   glass_material_["fresnel_exponent"]->setFloat(3.0f);
   glass_material_["fresnel_minimum"]->setFloat(0.1f);
   glass_material_["fresnel_maximum"]->setFloat(1.0f);
diff --git a/demos/optical_bench/src/optix_context_manager.cpp b/demos/optical_bench/src/optix_context_manager.cpp
index 02ec10b6..6e9bbbf6 100644
--- a/demos/optical_bench/src/optix_context_manager.cpp
+++ b/demos/optical_bench/src/optix_context_manager.cpp
@@ -37,9 +37,7 @@ OptixContextManager::OptixContextManager() {
   context_->setRayTypeCount(2);
   context_->setEntryPointCount(1);
 
-  context_->setPrintEnabled(true);
-  context_->setPrintBufferSize(1024);
-  context_->setStackSize(8000l);
+  context_->setStackSize(2000l);
 
   context_["max_depth"]->setInt(10);
   context_["scene_epsilon"]->setFloat(1.e-4f);
@@ -47,11 +45,17 @@ OptixContextManager::OptixContextManager() {
   // Exception program
   optix::Program exception_program = context_->createProgramFromPTXString(
       GetPtxString("exception.cu"), "exception");
+  context_->setExceptionProgram(0, exception_program);
 
   // Miss Programm (avoid random data in buffer)
   context_->setMissProgram(0, context_->createProgramFromPTXString(
                                   GetPtxString("skybox.cu"), "skyboxLookup"));
 
+  // For debugging
+  // context_->setPrintEnabled(true);
+  // context_->setPrintBufferSize(1024);
+  context_->setExceptionEnabled(RT_EXCEPTION_ALL, false);
+
   // Ray generation program
   optix::Program rayProg = context_->createProgramFromPTXString(
       GetPtxString("perspective_camera.cu"), "pinhole_camera");
diff --git a/demos/optical_bench/src/ray_pass.cpp b/demos/optical_bench/src/ray_pass.cpp
index aae965e9..4ff03c22 100644
--- a/demos/optical_bench/src/ray_pass.cpp
+++ b/demos/optical_bench/src/ray_pass.cpp
@@ -227,7 +227,7 @@ void RayPass::LaunchLaser() {
       random_seed++);  // totally "random" (only used as seed)
   try {
     optix_context_manager_->GetContext()->launch(laser_entry_, 50, 50,
-                                               kLaserTracesPerFrame_);
+                                                 kLaserTracesPerFrame_);
   } catch (optix::Exception e) {
     phx::error(e.getErrorString().c_str());
   }
@@ -244,6 +244,8 @@ void RayPass::CreateLaser() {
   laser_entry_ = context->getEntryPointCount();
   context->setEntryPointCount(laser_entry_ + 1);  // Add new Entrypoint
 
+  context->setExceptionProgram(1, context->getExceptionProgram(1));
+
   // Ray generation program
   optix::Program rayProg = context->createProgramFromPTXString(
       OptixContextManager::GetPtxString("laser_caster.cu"), "laser_caster");
-- 
GitLab