From c0e95c2e2da95d345bf24ebb2b62e06e5b8ca35d Mon Sep 17 00:00:00 2001 From: Jefferson Amstutz Date: Fri, 19 Nov 2021 18:40:02 -0600 Subject: [PATCH] update to latest owl CMake modernizations --- CMakeLists.txt | 57 ++++++++++++++++++--------------------------- submodules/cuteeOWL | 2 +- submodules/owl | 2 +- viewer.cpp | 56 ++++++++++++++++++++++---------------------- 4 files changed, 53 insertions(+), 64 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index eea870a..ec9a2d4 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -14,56 +14,45 @@ # limitations under the License. # # ======================================================================== # -if (POLICY CMP0048) - cmake_policy(SET CMP0048 NEW) -endif() -if (POLICY CMP0071) - cmake_policy(SET CMP0071 NEW) -endif() -project(Optix-OWL VERSION 1.0.4) -cmake_minimum_required(VERSION 2.8) +cmake_minimum_required(VERSION 3.12) -option(DUMP_FRAMES "DUMP_FRAMES" OFF) +if(${CMAKE_VERSION} VERSION_GREATER_EQUAL 3.18) + cmake_policy(SET CMP0104 NEW) +endif() -set(owl_dir ${PROJECT_SOURCE_DIR}/submodules/owl) -add_subdirectory(${owl_dir} EXCLUDE_FROM_ALL) +project(Optix-OWL VERSION 1.0.4 LANGUAGES C CXX CUDA) -set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} "${owl_dir}/owl/cmake/") set(CMAKE_POSITION_INDEPENDENT_CODE ON) -include(configure_build_type) - -add_definitions(${OWL_CXX_FLAGS}) - -include_directories(${OWL_INCLUDES}) - +add_subdirectory(submodules/owl EXCLUDE_FROM_ALL) add_subdirectory(submodules/cuteeOWL EXCLUDE_FROM_ALL) +include(embed_ptx) + +option(DUMP_FRAMES "DUMP_FRAMES" OFF) if (DUMP_FRAMES) add_definitions(-DDUMP_FRAMES=1) endif() -include_directories(${QT_OWL_INCLUDES}) - -cuda_compile_and_embed(deviceCode_ptx deviceCode.cu) -set_property(SOURCE ${deviceCode_ptx} PROPERTY SKIP_AUTOMOC ON) - -set(CUDA_NVCC_FLAGS "${CUDA_NVCC_FLAGS} ${OWL_CXX_FLAGS}") -find_package(Qt5Widgets REQUIRED) -set(CMAKE_AUTOMOC ON) -cuda_add_executable(owlDVRViewer - ${deviceCode_ptx} +embed_ptx( + OUTPUT_TARGET + deviceCode_ptx + EMBEDDED_SYMBOL_NAMES + deviceCode_ptx + PTX_LINK_LIBRARIES + qtOWL + SOURCES + deviceCode.cu +) + +add_executable(owlDVRViewer viewer.cpp Model.cpp Renderer.cpp SpaceSkipper.cu - ) +) -target_link_libraries(owlDVRViewer - ${OWL_LIBRARIES} - ${QT_OWL_LIBRARIES} - ) -#QT_OWL_LINK(owlDVRViewer) +target_link_libraries(owlDVRViewer PRIVATE qtOWL deviceCode_ptx) # not needed for public release #add_executable(dvrSubSampleTool diff --git a/submodules/cuteeOWL b/submodules/cuteeOWL index 0b11b25..5cb6a2c 160000 --- a/submodules/cuteeOWL +++ b/submodules/cuteeOWL @@ -1 +1 @@ -Subproject commit 0b11b254ee5a65eadc768181e5a313dfd453d074 +Subproject commit 5cb6a2cf800f8d3449d5ae489d494f0dac3a0cb1 diff --git a/submodules/owl b/submodules/owl index 24c11d5..20f6c87 160000 --- a/submodules/owl +++ b/submodules/owl @@ -1 +1 @@ -Subproject commit 24c11d5a95d6696ad975020dcbb6e16509b4e480 +Subproject commit 20f6c87a8bf71720e07b7328b49efd3dc32312e7 diff --git a/viewer.cpp b/viewer.cpp index 8e654e1..739fe7b 100644 --- a/viewer.cpp +++ b/viewer.cpp @@ -32,7 +32,7 @@ namespace dvr { using qtOWL::SimpleCamera; const int XF_ALPHA_COUNT = 128; - + struct { bool showBoxes = 0; // int spp = 4; @@ -53,7 +53,7 @@ namespace dvr { float dt = .5f; vec2i windowSize = /*default: one quarter of screen*/vec2i(0); //vec2i(1024,1024); } cmdline; - + void usage(const std::string &err) { if (err != "") @@ -64,11 +64,11 @@ namespace dvr { std::cout << std::endl; exit(1); } - + struct Viewer : public qtOWL::OWLViewer { public: typedef qtOWL::OWLViewer inherited; - + Viewer(Renderer *renderer, qtOWL::XFEditor *xfEditor) : inherited("owlDVR Sample Viewer", cmdline.windowSize), @@ -78,7 +78,7 @@ namespace dvr { renderer->set_dt(cmdline.dt); renderer->setColorMap(xfEditor->getColorMap()); } - + /*! this function gets called whenever the viewer widget changes camera settings */ void cameraChanged() override; @@ -138,22 +138,22 @@ namespace dvr { break; } } - - + + // signals: // ; public slots: void colorMapChanged(qtOWL::XFEditor *xf); - void rangeChanged(interval r); + void rangeChanged(range1f r); void opacityScaleChanged(double scale); - + public: Renderer *const renderer; /* pointer to xf editor, so we can sve transfer functions on keypress */ qtOWL::XFEditor *const xfEditor; }; - + void Viewer::colorMapChanged(qtOWL::XFEditor *xfEditor) { renderer->setColorMap(xfEditor->getColorMap()); @@ -161,7 +161,7 @@ namespace dvr { } // re-map [0,1] range from gui to actual value range - void Viewer::rangeChanged(interval r) + void Viewer::rangeChanged(range1f r) { float lo = min(r.lower,r.upper); float hi = max(r.lower,r.upper); @@ -179,31 +179,31 @@ namespace dvr { } - void Viewer::resize(const vec2i &newSize) + void Viewer::resize(const vec2i &newSize) { // ... tell parent to resize (also resizes the pbo in the wingdow) inherited::resize(newSize); cameraChanged(); renderer->resetAccum(); } - + /*! this function gets called whenever the viewer widget changes camera settings */ - void Viewer::cameraChanged() + void Viewer::cameraChanged() { inherited::cameraChanged(); const SimpleCamera &camera = inherited::getCamera(); - + const vec3f screen_du = camera.screen.horizontal / float(getWindowSize().x); const vec3f screen_dv = camera.screen.vertical / float(getWindowSize().y); const vec3f screen_00 = camera.screen.lower_left; renderer->setCamera(camera.lens.center,screen_00,screen_du,screen_dv); renderer->resetAccum(); } - + /*! gets called whenever the viewer needs us to re-render out widget */ - void Viewer::render() + void Viewer::render() { static double t_last = getCurrentTime(); static double t_first = t_last; @@ -211,7 +211,7 @@ namespace dvr { if (renderer->alwaysRebuild) colorMapChanged(xfEditor); renderer->render(fbSize,fbPointer); - + double t_now = getCurrentTime(); static double avg_t = t_now-t_last; // if (t_last >= 0) @@ -245,11 +245,11 @@ namespace dvr { extern "C" int main(int argc, char **argv) { QApplication app(argc,argv); - + std::string inFileName; // Viewer::initGlut(argc,argv); - + for (int i=1;igetBounds(); #endif - + qtOWL::XFEditor *xfEditor = new qtOWL::XFEditor; Renderer renderer(model); renderer.setShowBoxesMode(cmdline.showBoxes); - + Viewer *viewer = new Viewer(&renderer,xfEditor); // viewer->resize(QSize(128,128)); // if (cmdline.windowSize != vec2i(0)) @@ -365,19 +365,19 @@ namespace dvr { viewer, &Viewer::rangeChanged); QObject::connect(xfEditor,&qtOWL::XFEditor::opacityScaleChanged, viewer, &Viewer::opacityScaleChanged); - + if (cmdline.xfFileName != "") xfEditor->loadFrom(cmdline.xfFileName); - + QMainWindow guiWindow; guiWindow.setCentralWidget(xfEditor); - + viewer->show(); guiWindow.show(); return app.exec(); } - + }