### CMake Build Configuration for ospray-studio Source: https://github.com/renderkit/ospray-studio/blob/master/plugins/example_plugin/CMakeLists.txt This snippet shows the CMake configuration for the ospray-studio project. It includes an option to build an example plugin, defines the library name, links necessary libraries (ospray_sg, ospray_ui), sets include directories, and specifies installation rules for the plugin. ```cmake option(BUILD_PLUGIN_EXAMPLE "Example plugin" OFF) if (BUILD_PLUGIN_EXAMPLE) set( pluginName "ospray_studio_plugin_example") add_library(${pluginName} SHARED plugin_example.cpp PanelExample.cpp ) target_link_libraries(${pluginName} ospray_sg) # Only link against imgui if needed (ie, pure file importers don't) target_link_libraries(${pluginName} ospray_ui) target_include_directories(${pluginName} PRIVATE ${CMAKE_SOURCE_DIR} ) install(TARGETS ${pluginName} DESTINATION ${CMAKE_INSTALL_LIBDIR} COMPONENT lib # on Windows put the dlls into bin RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR} COMPONENT lib ) endif() ``` -------------------------------- ### OSPRay Studio Modes Source: https://github.com/renderkit/ospray-studio/blob/master/docs/components/quickstart.markdown Launches OSPRay Studio in different operational modes: GUI for interactive scene manipulation, Batch for offline rendering, and Timeseries for time-varying data. Each mode has specific command-line arguments and functionalities. ```bash ./ospStudio [gui] [file1 [file2 ...]] ``` ```bash ./ospStudio batch [options] [file1 [file2 ...]] ``` ```bash ./ospStudio timeseries [options] ``` -------------------------------- ### Build and Install OSPRay Studio (Windows) Source: https://github.com/renderkit/ospray-studio/blob/master/README.md This command builds the OSPRay Studio project in Release configuration and installs it. It assumes CMake has already configured the project. ```pwsh cmake --build . --config Release --target install ``` -------------------------------- ### OSPRay Studio Execution (Linux/macOS) Source: https://github.com/renderkit/ospray-studio/blob/master/README.md Configure the library path to run OSPRay Studio after building. Ensure LD_LIBRARY_PATH (Linux) or DYLD_LIBRARY_PATH (macOS) includes the necessary dependency directories. ```bash export LD_LIBRARY_PATH=${OSPRAY_INSTALL}/lib64:...:$LD_LIBRARY_PATH # then run! ./ospStudio ``` -------------------------------- ### OSPRay Studio Standard CMake Build Source: https://github.com/renderkit/ospray-studio/blob/master/README.md Build OSPRay Studio using the standard CMake process. This requires manually providing dependencies like OSPRay, rkcommon, TBB, and GLFW, and allows for more configuration options. ```bash cmake -DCMAKE_CXX_COMPILER=clang++ -DCMAKE_C_COMPILER=clang .. # or use ccmake make -j `nproc` # or cmake --build . ``` -------------------------------- ### Basic CMake Project Setup Source: https://github.com/renderkit/ospray-studio/blob/master/CMakeLists.txt Sets the minimum CMake version, project name, version, and languages. Includes standard modules for installation and processor count. ```cmake cmake_minimum_required(VERSION 3.15) project(ospray_studio VERSION 1.1.0 LANGUAGES CXX C) include(GNUInstallDirs) include(ProcessorCount) ProcessorCount(PROCESSOR_COUNT) set(NUM_BUILD_JOBS ${PROCESSOR_COUNT} CACHE STRING "Number of build jobs '-j '") set(DEFAULT_BUILD_COMMAND cmake --build . --config release -j ${NUM_BUILD_JOBS}) set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}) set(CMAKE_ARCHIVE_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}) set(CMAKE_LIBRARY_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}) if(CMAKE_INSTALL_PREFIX_INITIALIZED_TO_DEFAULT) set(CMAKE_INSTALL_PREFIX "${CMAKE_BINARY_DIR}/install" CACHE PATH "Install location." FORCE) endif() ``` -------------------------------- ### OSPRay Studio Plugin Example Source: https://github.com/renderkit/ospray-studio/blob/master/docs/api.md Demonstrates how to create and load custom plugins for OSPRay Studio. Plugins enhance functionality and can be selected at runtime. ```C++ #include class ExamplePlugin : public ospray::studio::Plugin { public: ExamplePlugin(ospray::studio::Studio* studio) : ospray::studio::Plugin(studio) {} virtual ~ExamplePlugin() = default; void init() override { // Plugin initialization code } }; extern "C" ospray::studio::Plugin* createPlugin(ospray::studio::Studio* studio) { return new ExamplePlugin(studio); } ``` -------------------------------- ### OSPRay Studio Environment Setup (Linux/macOS) Source: https://github.com/renderkit/ospray-studio/blob/master/README.md Set environment variables to locate OSPRay, rkcommon, and TBB installations for the CMake build process on Linux and macOS. Alternatively, CMAKE_PREFIX_PATH can be used. ```bash export ospray_DIR = ${OSPRAY_INSTALL_LOCATION} export rkcommon_DIR = ${RKCOMMON_INSTALL_LOCATION} export TBB_DIR = ${TBB_INSTALL_LOCATION} ``` -------------------------------- ### Vulkan C++ Examples License Source: https://github.com/renderkit/ospray-studio/blob/master/third-party-programs-Embree.txt Details the MIT license for Vulkan C++ examples and demos, focusing on dome light texture filtering. It outlines permissions for use, modification, and distribution. ```text The MIT License (MIT) Copyright (c) 2016 Sascha Willems Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. ``` -------------------------------- ### OSPRay Studio Plugin Example Source: https://github.com/renderkit/ospray-studio/blob/master/docs/components/extension.markdown Demonstrates how to create and load custom plugins in OSPRay Studio. Plugins enhance functionality and can be selected at runtime. ```bash ./ospStudio -p example ``` -------------------------------- ### Installation of Documentation and Packaging Source: https://github.com/renderkit/ospray-studio/blob/master/CMakeLists.txt Installs various text files including licenses, third-party notices, and changelogs to the documentation directory. Finally, it includes CMake's packaging module (CPack). ```cmake install(FILES ${PROJECT_SOURCE_DIR}/LICENSE.txt ${PROJECT_SOURCE_DIR}/third-party-programs.txt ${PROJECT_SOURCE_DIR}/third-party-programs-OSPRay.txt ${PROJECT_SOURCE_DIR}/third-party-programs-DPCPP.txt ${PROJECT_SOURCE_DIR}/third-party-programs-Embree.txt ${PROJECT_SOURCE_DIR}/third-party-programs-ISPC.txt ${PROJECT_SOURCE_DIR}/third-party-programs-OIDN.txt ${PROJECT_SOURCE_DIR}/third-party-programs-oneAPI-DPCPP.txt ${PROJECT_SOURCE_DIR}/third-party-programs-oneDNN.txt ${PROJECT_SOURCE_DIR}/third-party-programs-oneTBB.txt ${PROJECT_SOURCE_DIR}/third-party-programs-OpenVKL.txt ${PROJECT_SOURCE_DIR}/CHANGELOG.md ${PROJECT_SOURCE_DIR}/README.md DESTINATION ${CMAKE_INSTALL_DOCDIR} COMPONENT apps ) include(package) # must be last include(CPack) ``` -------------------------------- ### Install OSPRay Studio Executable Source: https://github.com/renderkit/ospray-studio/blob/master/app/CMakeLists.txt Installs the 'ospStudio' executable to the binary directory. ```cmake install(TARGETS ospStudio DESTINATION ${CMAKE_INSTALL_BINDIR} COMPONENT apps ) ``` -------------------------------- ### OSPRay Studio Superbuild CMake Source: https://github.com/renderkit/ospray-studio/blob/master/README.md Build OSPRay Studio using the CMake superbuild script. This method automatically handles dependencies like GLFW, OSPRay, rkcommon, and TBB, and uses stb_image for image operations by default. ```bash mkdir build cd build cmake .. cmake --build . ``` -------------------------------- ### CMake Build Setup Source: https://github.com/renderkit/ospray-studio/blob/master/sg/tests/CMakeLists.txt Configures testing, defines static libraries, and links them to executables. Includes conditional compilation for non-Windows platforms. ```cmake enable_testing() add_library(catch_main STATIC catch/catch_main.cpp) target_link_libraries(catch_main PRIVATE ospray_sg) if(NOT WIN32) add_executable(test_Node test_Node.cpp) target_link_libraries(test_Node PRIVATE ospray_sg catch_main) endif() add_executable(test_Frame test_Frame.cpp) target_link_libraries(test_Frame PRIVATE ospray_sg) add_executable(test_sgTutorial test_sgTutorial.cpp) target_link_libraries(test_sgTutorial PRIVATE ospray_sg) # Internal catch2 testing add_test(NAME test-Node COMMAND $) add_test(NAME test-Frame COMMAND $) add_test(NAME test-sgTutorial COMMAND $) ``` -------------------------------- ### Include Project Subdirectories (CMake) Source: https://github.com/renderkit/ospray-studio/blob/master/external/CMakeLists.txt This snippet demonstrates how to include various third-party libraries and tools as subdirectories within a CMake project. Each add_subdirectory command integrates a specific library, making its targets available for use in the main project. ```CMake add_subdirectory(imgui) add_subdirectory(imguiFileDialog) add_subdirectory(imGuIZMO.quat) add_subdirectory(tiny_obj_loader) add_subdirectory(tiny_gltf) add_subdirectory(stb_image) add_subdirectory(tiny_exr) add_subdirectory(tiny_dng) add_subdirectory(json) add_subdirectory(cli11) ``` -------------------------------- ### Build OSPRay Studio (Linux/macOS) Source: https://github.com/renderkit/ospray-studio/blob/master/docs/quickstart.md Commands to create a build directory, navigate into it, and run CMake and make for building OSPRay Studio on Linux and macOS. ```bash cd ospray_studio mkdir build cd build cmake -DCMAKE_CXX_COMPILER=clang++ -DCMAKE_C_COMPILER=clang ... # or use ccmake make -j `nproc` # or cmake --build . ``` -------------------------------- ### Build OSPRay Studio (Windows) Source: https://github.com/renderkit/ospray-studio/blob/master/docs/quickstart.md Instructions for building OSPRay Studio on Windows using CMake and Visual Studio, including configuring paths and generating the solution file. ```pwsh cmake --build . --config Release --target install ``` -------------------------------- ### imGuIZMO.quat License Source: https://github.com/renderkit/ospray-studio/blob/master/third-party-programs.txt This section details the copyright and licensing terms for imGuIZMO.quat, a library used in the project. It specifies conditions for redistribution and use in source and binary forms, disclaiming warranties and limiting liability. ```License Copyright (c) 2018-2020 Michele Morrone All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: 1. Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. 2. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. ``` -------------------------------- ### Install OSPRay Shared Libraries Source: https://github.com/renderkit/ospray-studio/blob/master/app/CMakeLists.txt Conditionally installs OSPRay shared libraries based on the OSPRAY_INSTALL flag and operating system. ```cmake if(OSPRAY_INSTALL) get_target_property(OSPRAY_LIBNAME ospray::ospray IMPORTED_LOCATION_RELEASE) string(REGEX MATCH "^.*/" _sharedlib_glob "${OSPRAY_LIBNAME}") string(APPEND _sharedlib_glob "*${CMAKE_SHARED_LIBRARY_SUFFIX}*") # message(STATUS "_sharedlib_glob: ${_sharedlib_glob}") file(GLOB _sharedlibs LIST_DIRECTORIES false "${_sharedlib_glob}") # message(STATUS "_sharedlibs: ${_sharedlibs}") if(WIN32) install(FILES ${_sharedlibs} DESTINATION ${CMAKE_INSTALL_BINDIR} ) else() install(FILES ${_sharedlibs} DESTINATION ${CMAKE_INSTALL_LIBDIR} ) endif() endif() ``` -------------------------------- ### khrplatform.h License Source: https://github.com/renderkit/ospray-studio/blob/master/third-party-programs-Embree.txt Specifies the terms of use for khrplatform.h, including copyright and permission grants. ```text Copyright (c) 2008-2018 The Khronos Group Inc. Permission is hereby granted, free of charge, to any person obtaining a copy of this software and/or associated documentation files (the "Materials"), to deal in the Materials without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Materials, and to permit persons to whom the Materials are furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Materials. THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. ``` -------------------------------- ### Redistribution and Use Conditions Source: https://github.com/renderkit/ospray-studio/blob/master/third-party-programs-OIDN.txt This section outlines the mandatory conditions for redistributing and using the software in source and binary forms. It requires retaining the copyright notice, disclaimer, and providing them in documentation for binary distributions. ```APIDOC Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: 1. Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. 2. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. 3. Neither the names of Facebook, Deepmind Technologies, NYU, NEC Laboratories America ``` -------------------------------- ### Build pysg Python Module with CMake Source: https://github.com/renderkit/ospray-studio/blob/master/pysg/CMakeLists.txt Configures the build process for the pysg Python module using CMake. It specifies C++ flags, links necessary libraries (rkcommon, ospray, json, ospray_sg), and sets up include directories for both build and install targets. Platform-specific RPATH and installation destinations are also handled. ```cmake pybind11_add_module(pysg pysg.cpp) target_include_directories(pysg PUBLIC $ ) target_link_libraries(pysg PUBLIC rkcommon::rkcommon ospray::ospray json ospray_sg ) # ## Version header ## configure_file( ../sg/version.h.in ${CMAKE_CURRENT_BINARY_DIR}/version.h @ONLY ) target_include_directories(pysg PUBLIC $ ) if(APPLE) set_target_properties(pysg PROPERTIES SKIP_INSTALL_RPATH OFF INSTALL_RPATH "@loader_path;${CMAKE_INSTALL_PREFIX}/${CMAKE_INSTALL_LIBDIR}" ) elseif(UNIX) set_target_properties(pysg PROPERTIES SKIP_INSTALL_RPATH OFF INSTALL_RPATH "$ORIGIN" LINK_OPTIONS "LINKER:-disable-new-dtags" ) endif() _target_strip_and_sign(pysg) if(WIN32) install(TARGETS pysg DESTINATION ${CMAKE_INSTALL_BINDIR} COMPONENT lib ) else() install(TARGETS pysg DESTINATION ${CMAKE_INSTALL_LIBDIR} COMPONENT lib ) endif() ``` -------------------------------- ### Enable Testing Source: https://github.com/renderkit/ospray-studio/blob/master/app/CMakeLists.txt Enables testing if the BUILD_TESTING flag is set and adds a basic sanity test for the installed executable. ```cmake if(BUILD_TESTING) enable_testing() # Basic sanity test add_test(NAME ospStudio-verify-install COMMAND $ --verify_install) endif() ``` -------------------------------- ### Platform-Specific Target Properties Source: https://github.com/renderkit/ospray-studio/blob/master/app/CMakeLists.txt Configures installation paths and linker options for the 'ospStudio' executable based on the operating system (Apple or Unix). ```cmake if(APPLE) set_target_properties(ospStudio PROPERTIES SKIP_INSTALL_RPATH OFF INSTALL_RPATH "@executable_path;@executable_path/../${CMAKE_INSTALL_LIBDIR};${CMAKE_INSTALL_PREFIX}/${CMAKE_INSTALL_LIBDIR}" ) elseif(UNIX) set_target_properties(ospStudio PROPERTIES SKIP_INSTALL_RPATH OFF INSTALL_RPATH "$ORIGIN:$ORIGIN/../${CMAKE_INSTALL_LIBDIR}" LINK_OPTIONS "LINKER:-disable-new-dtags" ) endif() ``` -------------------------------- ### STB Image Libraries Source: https://github.com/renderkit/ospray-studio/blob/master/third-party-programs-Embree.txt Information on stb_image, stb_image_resize, and stb_image_write, which are public domain image loading, resizing, and writing libraries. ```text stb_image - v2.19 - public domain image loader - http://nothings.org/stb stb_image_resize - v0.95 - public domain image resizing stb_image_write - v1.09 - public domain - http://nothings.org/stb/stb_image_write.h ``` -------------------------------- ### OSPRay Studio Modes Source: https://github.com/renderkit/ospray-studio/blob/master/docs/quickstart.md Launches OSPRay Studio in different operational modes: GUI for interactive control, Batch for offline rendering, and Timeseries for time-varying data visualization. ```bash ./ospStudio [gui] [file1 [file2 ...]] ./ospStudio batch [options] [file1 [file2 ...]] ./ospStudio timeseries [options] ``` -------------------------------- ### Clone OSPRay Studio Repository Source: https://github.com/renderkit/ospray-studio/blob/master/docs/quickstart.md Clones the OSPRay Studio source code from its GitHub repository. ```bash git clone https://github.com/ospray/ospray_studio/ ``` -------------------------------- ### Unicode Data Files License Source: https://github.com/renderkit/ospray-studio/blob/master/third-party-programs-oneAPI-DPCPP.txt This section presents the Unicode, Inc. License Agreement for Data Files and Software, outlining the terms and conditions for downloading, installing, copying, or otherwise using the specified data and software. ```License UNICODE, INC. LICENSE AGREEMENT - DATA FILES AND SOFTWARE See Terms of Use for definitions of Unicode Inc.s Data Files and Software. NOTICE TO USER: Carefully read the following legal agreement. BY DOWNLOADING, INSTALLING, COPYING OR OTHERWISE USING UNICODE INC.'S DATA FILES ("DATA FILES"), AND/OR SOFTWARE ("SOFTWARE"), YOU UNEQUIVOCALLY ACCEPT, AND AGREE TO BE BOUND BY, ALL OF THE TERMS AND CONDITIONS OF THIS AGREEMENT. ``` -------------------------------- ### Project Options and Module Path Source: https://github.com/renderkit/ospray-studio/blob/master/CMakeLists.txt Defines project-wide options like OSPRAY installation and sets the module path to include custom CMake functions. Includes specific settings for macOS regarding rpaths. ```cmake ## global options and variables option(OSPRAY_INSTALL "Install OSPRay libraries in addition to OSPRay Studio libraries / binaries" ON) set(OSPRAY_STUDIO_RESOURCE_FILE "${PROJECT_SOURCE_DIR}/resources/ospray_studio.rc") if(APPLE) ## ensures that build-time executables contain install-time rpaths, ensuring ## they are identical from a code-signing POV set(CMAKE_BUILD_WITH_INSTALL_RPATH ON) endif() list(APPEND CMAKE_MODULE_PATH ${PROJECT_SOURCE_DIR}/cmake ) include(functions) ``` -------------------------------- ### LLVM Project Component Licenses Source: https://github.com/renderkit/ospray-studio/blob/master/third-party-programs-DPCPP.txt Lists the license files for various components within the LLVM project, hosted on GitHub. ```text https://github.com/intel/llvm/blob/master/flang/LICENSE.TXT https://github.com/intel/llvm/blob/master/compiler-rt/LICENSE.TXT https://github.com/intel/llvm/blob/master/mlir/LICENSE.TXT https://github.com/intel/llvm/blob/master/libclc/LICENSE.TXT https://github.com/intel/llvm/blob/master/libcxxabi/LICENSE.TXT https://github.com/intel/llvm/blob/master/lld/LICENSE.TXT https://github.com/intel/llvm/blob/master/cross-project-tests/debuginfo-tests/dexter/LICENSE.txt https://github.com/intel/llvm/blob/master/libc/LICENSE.TXT https://github.com/intel/llvm/blob/master/clang-tools-extra/LICENSE.TXT https://github.com/intel/llvm/blob/master/clang-tools-extra/clang-tidy/cert/LICENSE.TXT https://github.com/intel/llvm/blob/master/clang-tools-extra/clang-tidy/hicpp/LICENSE.TXT https://github.com/intel/llvm/blob/master/lldb/LICENSE.TXT https://github.com/intel/llvm/blob/master/lldb/third_party/Python/module/ptyprocess-0.6.0/LICENSE https://github.com/intel/llvm/blob/master/lldb/third_party/Python/module/six/LICENSE https://github.com/intel/llvm/blob/master/lldb/third_party/Python/module/pexpect-4.6/LICENSE https://github.com/intel/llvm/blob/master/polly/LICENSE.TXT https://github.com/intel/llvm/blob/master/polly/lib/External/isl/LICENSE https://github.com/intel/llvm/blob/master/polly/lib/External/isl/imath/LICENSE https://github.com/intel/llvm/blob/master/polly/tools/GPURuntime/LICENSE.TXT https://github.com/intel/llvm/blob/master/sycl/LICENSE.TXT https://github.com/intel/llvm/blob/master/llvm-spirv/LICENSE.TXT https://github.com/intel/llvm/blob/master/bolt/LICENSE.TXT https://github.com/intel/llvm/blob/master/pstl/LICENSE.TXT https://github.com/intel/llvm/blob/master/clang/LICENSE.TXT https://github.com/intel/llvm/blob/master/llvm/utils/lit/LICENSE.TXT https://github.com/intel/llvm/blob/master/llvm/utils/unittest/googletest/LICENSE.TXT https://github.com/intel/llvm/blob/master/llvm/utils/unittest/googlemock/LICENSE.txt https://github.com/intel/llvm/blob/master/llvm/LICENSE.TXT https://github.com/intel/llvm/blob/master/llvm/include/llvm/Support/LICENSE.TXT https://github.com/intel/llvm/blob/master/llvm/lib/Support/BLAKE3/LICENSE https://github.com/intel/llvm/blob/master/llvm/test/YAMLParser/LICENSE.txt https://github.com/intel/llvm/blob/master/libunwind/LICENSE.TXT https://github.com/intel/llvm/blob/master/openmp/LICENSE.TXT https://github.com/intel/llvm/blob/master/openmp/runtime/src/thirdparty/ittnotify/LICENSE.txt https://github.com/intel/llvm/blob/master/third-party/benchmark/LICENSE https://github.com/intel/llvm/blob/master/libcxx/LICENSE.TXT ``` -------------------------------- ### Dependency Discovery and Application Build Source: https://github.com/renderkit/ospray-studio/blob/master/CMakeLists.txt Finds necessary packages like OpenGL and GLFW, and includes custom CMake modules for OSPRay and benchmarking. It also sets the default component for installation and manages MPI support. ```cmake ## Find dependencies ## option(BUILD_APPS "Build OSPRay Studio Apps" ON) if (BUILD_APPS) set(OpenGL_GL_PREFERENCE "LEGACY") find_package(OpenGL 2 REQUIRED) include(glfw) endif() include(ospray) option(USE_BENCHMARK "Build benchmarking support into ospStudio" ON) if(USE_BENCHMARK) include(benchmark) endif() ## Build application ## set(OSPRAY_DEFAULT_COMPONENT apps) ## Optional MPI Support ## option(USE_MPI "Enable MPI" OFF) if (USE_MPI) find_package(MPI REQUIRED) set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -DUSE_MPI=1") endif() ``` -------------------------------- ### Draco License Information Source: https://github.com/renderkit/ospray-studio/blob/master/third-party-programs-Embree.txt Details the Apache 2.0 license under which the Draco library is provided, as bundled with USD. ```text USD bundles Draco, which is available under the Apache 2.0 license. For details, see https://github.com/google/draco/blob/master/README.md. ``` -------------------------------- ### OSPRay Studio Scenegraph Structure Source: https://github.com/renderkit/ospray-studio/blob/master/docs/api.md Details the basic structure of an OSPRay Studio scenegraph, starting with a root Frame node. This node typically includes children like FrameBuffer, Camera, Renderer, and World. Importer nodes can be added to the World, with Transform, Geometry, and Volume nodes as their children. ```C++ // Basic scenegraph structure: // Frame (root) // - FrameBuffer // - Camera // - Renderer // - World // - Lights (manager) // - Light (ambient) // - ImporterNode // - Transform // - Geometry // - Volume ``` -------------------------------- ### MIT License (Various Libraries) Source: https://github.com/renderkit/ospray-studio/blob/master/third-party-programs-Embree.txt This section outlines the MIT License, which applies to multiple libraries including Gruenschloss Halton, ImGui, PCG Random Number Generation, SSE2NEON, stb single-file libraries, and sampling_bluenoise_sig21. It grants broad permissions for use, modification, and distribution. ```text 5. MIT License ------------------------------------------------------------- 5.1. Gruenschloss Halton https://gruenschloss.org/halton/halton.zip Copyright (c) 2012 Leonhard Gruenschloss (leonhard@gruenschloss.org) 5.2. ImGui https://github.com/ocornut/imgui Copyright (c) 2014-2020 Omar Cornut 5.3. PCG Random Number Generation, C++ Edition https://github.com/imneme/pcg-cpp Copyright (c) 2014-2017 Melissa O'Neill and PCG Project contributors 5.4. SSE2NEON https://github.com/DLTcollab/sse2neon 5.5. stb single-file libraries for C/C++ https://github.com/nothings/stb Copyright (c) 2017 Sean Barrett 5.6. A GPU Optimizer for Blue-Noise Screen-Space Sampler https://github.com/unity-grenoble/sampling_bluenoise_sig21 Copyright (c) 2020 Sylvain Durand The MIT License (MIT) Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. ``` -------------------------------- ### OSPRay Studio Scenegraph Structure Source: https://github.com/renderkit/ospray-studio/blob/master/docs/components/scenegraph.markdown Describes a typical OSPRay Studio scenegraph starting with a root Frame node, which usually includes FrameBuffer, Camera, Renderer, and World children. The World node manages Lights, and importer nodes can be added to load geometry, volumes, and transforms. ```C++ Root Node: Frame - Default Children: - FrameBuffer - Camera - Renderer - World World Node: - Children: - Lights (lights manager) - Light (e.g., ambient light) Importer Nodes: - Added to the World node. - Children of importer nodes: - Transform - Geometry - Volume ``` -------------------------------- ### oneAPI DPC++ Compiler Link Source: https://github.com/renderkit/ospray-studio/blob/master/third-party-programs-DPCPP.txt Provides the GitHub repository link for the oneAPI DPC++ Compiler. ```text https://github.com/intel/llvm ``` -------------------------------- ### zLib License (GLFW) Source: https://github.com/renderkit/ospray-studio/blob/master/third-party-programs-Embree.txt This section details the zLib License as applied to the GLFW library. It includes copyright information and the terms for redistribution and use, emphasizing that the software is provided 'as-is' without warranty. ```text 4. zLib License ------------------------------------------------------------- 4.1. GLFW https://github.com/glfw/glfw Copyright (c) 2002-2006 Marcus Geelnard Copyright (c) 2006-2019 Camilla Loewy This software is provided 'as-is', without any express or implied warranty. In no event will the authors be held liable for any damages arising from the use of this software. Permission is granted to anyone to use this software for any purpose, including commercial applications, and to alter it and redistribute it freely, subject to the following restrictions: The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software. This notice may not be removed or altered from any source distribution. You can find this license in the file LICENSE.md of the GLFW source tree and in the comment header of each source file. ``` -------------------------------- ### Build imguiFileDialog as Static Library Source: https://github.com/renderkit/ospray-studio/blob/master/external/imguiFileDialog/CMakeLists.txt Configures the build system to create imguiFileDialog as a static library and links it with the imgui library. It also includes platform-specific directory inclusions for Windows. ```cmake add_library(imguiFileDialog STATIC ImGuiFileDialog.cpp ) target_link_libraries(imguiFileDialog PUBLIC imgui) if (WIN32) # Required for imguiFileDialog to find dirent include_directories(${CMAKE_CURRENT_LIST_DIR}/../) endif() target_include_directories(imguiFileDialog PUBLIC $ ) ``` -------------------------------- ### Apache License 2.0 Boilerplate Source: https://github.com/renderkit/ospray-studio/blob/master/third-party-programs-OIDN.txt This section provides the standard boilerplate notice for applying the Apache License, Version 2.0 to a project. It includes placeholders for copyright year and owner, and specifies the terms of use and distribution. ```APIDOC Copyright [yyyy] [name of copyright owner] Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0 Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. ``` -------------------------------- ### Catch2 License Source: https://github.com/renderkit/ospray-studio/blob/master/third-party-programs.txt This section provides the license details for Catch2, a testing framework. It grants permission to use, reproduce, display, distribute, execute, and transmit the software and its documentation, and to prepare derivative works. ```License Catch2 (catchorg/Catch2) Copyright 2010 Two Blue Cubes Ltd Permission is hereby granted, free of charge, to any person or organization obtaining a copy of the software and accompanying documentation covered by this license (the "Software") to use, reproduce, display, distribute, execute, and transmit the Software, and to prepare derivative works of the Software, and to permit third-parties to whom the Software is furnished to ``` -------------------------------- ### Build OSPRay UI Static Library Source: https://github.com/renderkit/ospray-studio/blob/master/app/CMakeLists.txt Creates a static library 'ospray_ui' for the user interface components, listing its source files. ```cmake add_library(ospray_ui STATIC imgui_impl_glfw.cpp imgui_impl_opengl2.cpp widgets/TransferFunctionWidget.cpp widgets/FileBrowserWidget.cpp widgets/AnimationWidget.cpp widgets/SearchWidget.cpp widgets/Guizmo.cpp widgets/PieMenu.cpp widgets/ListBoxWidget.cpp widgets/AdvancedMaterialEditor.cpp ) ``` -------------------------------- ### gcc/gm2/**/*.texi License Source: https://github.com/renderkit/ospray-studio/blob/master/third-party-programs-ISPC.txt This section details the license for the documentation files within gcc/gm2, specifically those with the .texi extension. Permission is granted to copy, distribute, and modify this document under the terms of the GNU Free Documentation License, Version 1.3 or any later version. ```License Copyright (C) 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2012, 2013 Free Software Foundation, Inc. Permission is granted to copy, distribute and/or modify this document under the terms of the GNU Free Documentation License, Version 1.3 or any later version published by the Free Software Foundation; with no Invariant Sections, no Front-Cover Texts, and no Back-Cover Texts. ``` -------------------------------- ### Protobuf License Source: https://github.com/renderkit/ospray-studio/blob/master/third-party-programs-oneAPI-DPCPP.txt This section outlines the license for Google's Protocol Buffers (protobuf), detailing redistribution and usage conditions for both source and binary forms, emphasizing the need for copyright notices and disclaimers. ```License Copyright 2008 Google Inc. All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. * Neither the name of Google Inc. nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. Code generated by the Protocol Buffer compiler is owned by the owner of the input file used when generating it. This code is not standalone and requires a support library to be linked with it. This support library is itself covered by the above license. ``` -------------------------------- ### Legacy LLVM License (University of Illinois/NCSA) Source: https://github.com/renderkit/ospray-studio/blob/master/third-party-programs-DPCPP.txt Details the Legacy LLVM License, including copyright information and redistribution permissions. ```text University of Illinois/NCSA Open Source License Copyright (c) 2003-2020 University of Illinois at Urbana-Champaign. All rights reserved. Developed by: LLVM Team University of Illinois at Urbana-Champaign http://llvm.org Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal with the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: * Redistributions of source code must retain the above copyright notice, ``` -------------------------------- ### ActiveState Thread Pool and hwloc License Source: https://github.com/renderkit/ospray-studio/blob/master/third-party-programs-oneTBB.txt Contains copyright and licensing details for the ActiveState Thread pool and the Portable Hardware Locality (hwloc) library. It specifies the BSD 3-clause license terms for redistribution and use in source and binary forms. ```License Copyright (c) 2008,2016 david decotigny (this file) Copyright (c) 2006-2008, R Oudkerk (multiprocessing.Pool) Portable Hardware Locality (hwloc) Copyright (c) 2004-2006 The Trustees of Indiana University and Indiana University Research and Technology Corporation. All rights reserved. Copyright (c) 2004-2005 The University of Tennessee and The University of Tennessee Research Foundation. All rights reserved. Copyright (c) 2004-2005 High Performance Computing Center Stuttgart, University of Stuttgart. All rights reserved. Copyright (c) 2004-2005 The Regents of the University of California. All rights reserved. Copyright (c) 2009 CNRS Copyright (c) 2009-2016 Inria. All rights reserved. Copyright (c) 2009-2015 Universit Bordeaux Copyright (c) 2009-2015 Cisco Systems, Inc. All rights reserved. Copyright (c) 2009-2012 Oracle and/or its affiliates. All rights reserved. Copyright (c) 2010 IBM Copyright (c) 2010 Jirka Hladky Copyright (c) 2012 Aleksej Saushev, The NetBSD Foundation Copyright (c) 2012 Blue Brain Project, EPFL. All rights reserved. Copyright (c) 2013-2014 University of Wisconsin-La Crosse. All rights reserved. Copyright (c) 2015 Research Organization for Information Science and Technology (RIST). All rights reserved. Copyright (c) 2015-2016 Intel, Inc. All rights reserved. BSD 3-clause "New" or "Revised" License Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: 1. Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. 2. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. 3. Neither the name of author nor the names of any contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS "AS IS" AND ``` -------------------------------- ### libhsail-rt License Source: https://github.com/renderkit/ospray-studio/blob/master/third-party-programs-ISPC.txt This section details the license for the libhsail-rt library. It grants broad permissions for use, modification, and distribution, provided the copyright notice and permission notice are included in all copies or substantial portions of the Software. The software is provided 'as is' without warranty. ```License Copyright (C) 2015-2017 Free Software Foundation, Inc. Contributed by Pekka Jaaskelainen for General Processor Tech. Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. ``` -------------------------------- ### LLVM Project License Summary Source: https://github.com/renderkit/ospray-studio/blob/master/third-party-programs-DPCPP.txt Describes the licensing policy for third-party software included in the LLVM Project, detailing how licenses are identified. ```text The LLVM Project contains third party software which is under different license terms. All such code will be identified clearly using at least one of two mechanisms: 1) It will be in a separate directory tree with its own `LICENSE.txt` or `LICENSE` file at the top containing the specific license and restrictions which apply to that software, or 2) It will contain specific license and restriction terms at the top of every file. ``` -------------------------------- ### LLVM Project Contributor Credits Source: https://github.com/renderkit/ospray-studio/blob/master/third-party-programs-DPCPP.txt Lists the credit files for contributors to various components of the LLVM project. ```text https://github.com/intel/llvm/blob/master/compiler-rt/CREDITS.TXT https://github.com/intel/llvm/blob/master/libclc/CREDITS.TXT https://github.com/intel/llvm/blob/master/libcxxabi/CREDITS.TXT https://github.com/intel/llvm/blob/master/polly/CREDITS.txt https://github.com/intel/llvm/blob/master/pstl/CREDITS.txt https://github.com/intel/llvm/blob/master/llvm/CREDITS.TXT https://github.com/intel/llvm/blob/master/openmp/CREDITS.txt https://github.com/intel/llvm/blob/master/libcxx/CREDITS.TXT ``` -------------------------------- ### Configure ImGui Static Library with CMake Source: https://github.com/renderkit/ospray-studio/blob/master/external/imgui/CMakeLists.txt This snippet configures CMake to build the ImGui library as a static library. It includes the necessary source files and sets the public include directories for the target library. ```cmake set(libType STATIC) add_library(imgui ${libType} imgui.cpp imgui_draw.cpp imgui_widgets.cpp imgui_tables.cpp imgui_piemenu.cpp ) target_include_directories(imgui PUBLIC $ ) ``` -------------------------------- ### Updating OSPRay Studio Documentation Source: https://github.com/renderkit/ospray-studio/blob/master/docs/README.md Provides instructions on how to update OSPRay Studio's documentation, including editing component files, running the build process, and committing changes. ```markdown ## Updating documentation On release, make sure to update `components/release.markdown`. If you are just adding to existing content, such as new API features: 1. Edit the appropriate component file in the `components/` directory (e.g. `scenegraph.markdown` for scenegraph API changes) 2. Run `make` inside this directory to build the new page(s) 3. Commit the updated files, including the generated files If you are adding a new component file or a new generated file: 1. Create the component files in `components/` with a `.markdown` extension (this differentiates generated files from hand-written files!) * If you are creating a new page, add it to the table of contents in `toc.markdown` 2. Edit the `Makefile` as needed * Add the name of the generated file to the `website` target if you are creating a new page * Edit the appropriate target or create a new target to include your component file(s) 3. Run `make` inside this directory to build the new page(s) 4. Commit the updated files, including the generated files If you are adding images to the gallery, add them directly to OSPRay's GitHub Pages repo. ``` -------------------------------- ### LZ4 Compression Library Information Source: https://github.com/renderkit/ospray-studio/blob/master/third-party-programs-Embree.txt Provides contact information and repository links for the LZ4 compression library. ```text LZ4 homepage : http://www.lz4.org LZ4 source repository : https://github.com/lz4/lz4 ``` -------------------------------- ### Set Library Path for Running OSPRay Studio (Linux/macOS) Source: https://github.com/renderkit/ospray-studio/blob/master/docs/quickstart.md Configures the library path to include OSPRay and its dependencies, allowing OSPRay Studio to run correctly on Linux and macOS. ```bash export LD_LIBRARY_PATH=${OSPRAY_INSTALL}/lib64:${OPENVKL_INSTALL}/lib64:...:$LD_LIBRARY_PATH # then run! ./ospStudio ``` -------------------------------- ### Creating and Adding Child Nodes Source: https://github.com/renderkit/ospray-studio/blob/master/docs/api.md Demonstrates how to create a parent node and a child node, then add the child to the parent using the Node::add() method. Supports adding Node& or NodePtr. ```C++ NodePtr myParentNode = createNode("mySpheres", "spheres"); NodePtr myChildNode = createNode("radius", "float", 1.f); myParentNode->add(myChildNode); ```