Skip to content
This repository was archived by the owner on Jan 12, 2026. It is now read-only.

Commit 15f87e4

Browse files
author
Bruce Cherniak
committed
Merge branch 'release-1.0.x'
2 parents d2c83a6 + da370f7 commit 15f87e4

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

90 files changed

+18902
-13887
lines changed

.github/workflows/ci.yml

Lines changed: 12 additions & 48 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@ concurrency:
2020
jobs:
2121

2222
## Build Jobs ##
23+
2324
## Linux
2425
build-centos8:
2526
secrets: inherit
@@ -83,53 +84,22 @@ jobs:
8384
artifact-out: build-rocky8-7
8485
artifact-path: build
8586

86-
## Dev Build Jobs ##
87-
## Linux
88-
cache-ospray-rocky8-7:
89-
secrets: inherit
90-
uses: ./.github/workflows/cache-ospray.yml
91-
with:
92-
image: rockylinux:8.7
93-
ospray-version: devel
94-
rkcommon-version: devel
95-
96-
build-rocky8-7-dev:
97-
needs: cache-ospray-rocky8-7
98-
uses: intel-innersource/libraries.devops.renderkit.workflows/.github/workflows/docker.yml@main
99-
with:
100-
image: rockylinux:8.7
101-
cmd: |
102-
module load cmake/3.25.3
103-
module load intel/2022.1
104-
export CC=icx
105-
export CXX=icpx
106-
export CXXFLAGS="-fhonor-infinities -fhonor-nans"
107-
export CFLAGS=$CXXFLAGS
108-
export CACHE_DIR=${{ needs.cache-ospray-rocky8-7.outputs.cache-dir }}
109-
export OSPRAY_VER=${{ needs.cache-ospray-rocky8-7.outputs.ospray-version }}
110-
export CMAKE_PREFIX_PATH=$CACHE_DIR/ospray-$OSPRAY_VER/build/install
111-
export TBB_ROOT=$CACHE_DIR/ospray-$OSPRAY_VER/build/tbb/src/tbb
112-
cmake -L -S . -B build -DENABLE_OPENIMAGEIO=OFF -DENABLE_OPENVDB=OFF -DENABLE_EXR=OFF
113-
cmake --build build -- -j`nproc`
114-
artifact-path: build
115-
artifact-out: build-rocky8-7-dev
116-
11787
## MacOS
118-
build-macos-clang-dev:
88+
build-macos-clang:
11989
uses: intel-innersource/libraries.devops.renderkit.workflows/.github/workflows/macos.yml@main
12090
with:
12191
cmd: |
122-
gitlab/macos-dev.sh
92+
gitlab/macos.sh
12393
artifact-out: build-macos
12494
artifact-path: build-macos
12595

12696
## Windows
127-
build-windows-msvc15-dev:
97+
build-windows-msvc15:
12898
uses: intel-innersource/libraries.devops.renderkit.workflows/.github/workflows/windows.yml@main
12999
with:
130100
cmd: |
131101
$env:Python3_ROOT = "N:/packages/apps/python/3.9.7/windows"
132-
gitlab\win-dev.ps1
102+
gitlab\win.ps1
133103
artifact-out: build-windows
134104
artifact-path: build-win
135105

@@ -142,37 +112,31 @@ jobs:
142112
cmake --build build-win-msvc16 --parallel $env:NUMBER_OF_PROCESSORS --config Release --target install
143113
144114
## Dev Test Jobs
145-
test-run-rocky8-7-dev:
146-
needs: build-rocky8-7-dev
115+
test-run-rocky8-7:
116+
needs: build-rocky8-7
147117
uses: intel-innersource/libraries.devops.renderkit.workflows/.github/workflows/docker.yml@main
148118
with:
149-
# Run the rocky8-7-dev build on the ubuntu 18.04 image as a test, and because it has vncserver installed
119+
# Run the rocky8-7 build on the ubuntu 18.04 image as a test, and because it has vncserver installed
150120
image: rockylinux:8.7-tgt-rebuild
151121
pre-cmd: yum -y install tigervnc-server mesa-libGLU
152122
cmd: |
153123
module load intel/2023.0
154124
build/ospStudio --verify_install
155-
export CACHE_DIR=/NAS/ci-cache
156-
export OSPRAY_VER=devel
157125
gitlab/run-dev.sh
158126
gitlab/run-dev-img-cmp.sh
159-
artifact-in: build-rocky8-7-dev
127+
artifact-in: build-rocky8-7
160128
artifact-path: build/model-results build/cert-tests/*
161-
artifact-out: test-run-rocky8-7-dev
129+
artifact-out: test-run-rocky8-7
162130
artifact-on-failure: true
163131

164132
### Devel Coverity Job ###
165133
static-analysis:
166-
needs: cache-ospray-rocky8-7
167134
secrets: inherit
168-
uses: intel-innersource/libraries.devops.renderkit.workflows/.github/workflows/static_analysis.yml@main
135+
#uses: intel-innersource/libraries.devops.renderkit.workflows/.github/workflows/static_analysis.yml@main
136+
uses: intel-innersource/libraries.devops.renderkit.workflows/.github/workflows/static_analysis.yml@tgt/coverity_env
169137
with:
170138
project: OSPRay Studio
171139
prebuild: >
172140
module load cmake/3.25.3 &&
173-
export CACHE_DIR=${{ needs.cache-ospray-rocky8-7.outputs.cache-dir }} &&
174-
export OSPRAY_VER=${{ needs.cache-ospray-rocky8-7.outputs.ospray-version }} &&
175-
export CMAKE_PREFIX_PATH=$CACHE_DIR/ospray-$OSPRAY_VER/build/install/lib64/cmake/ospray-3.0.0 &&
176-
export TBB_ROOT=$CACHE_DIR/ospray-$OSPRAY_VER/build/tbb/src/tbb &&
177141
cmake -L -S . -B build -DENABLE_OPENIMAGEIO=OFF -DENABLE_OPENVDB=OFF -DENABLE_EXR=OFF
178142
build: cmake --build build

.github/workflows/release.yml

Lines changed: 3 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -115,7 +115,7 @@ jobs:
115115
with:
116116
cmd: |
117117
msiexec.exe /a (Get-ChildItem $env:GITHUB_WORKSPACE\build-win\package\*.msi | Select-Object -Expand FullName) /qn TARGETDIR=$env:GITHUB_WORKSPACE | Out-Null
118-
& $env:SIGN_FILE_WINDOWS -t $env:GITHUB_WORKSPACE\build-win\package\*.msi (Get-ChildItem "$env:GITHUB_WORKSPACE\Intel\OSPRay Studio v0\bin\*" | Select-Object -Expand FullName)
118+
& $env:SIGN_FILE_WINDOWS -t $env:GITHUB_WORKSPACE\build-win\package\*.msi (Get-ChildItem "$env:GITHUB_WORKSPACE\Intel\OSPRay Studio*\bin\*" | Select-Object -Expand FullName)
119119
artifact-in: release-windows
120120

121121
## macOS ##
@@ -131,33 +131,21 @@ jobs:
131131

132132
### Scan Jobs ###
133133

134-
cache-ospray:
135-
secrets: inherit
136-
uses: ./.github/workflows/cache-ospray.yml
137-
with:
138-
image: rockylinux:8.7
139-
ospray-version: devel
140-
rkcommon-version: devel
141-
142134
composition-analysis:
143135
secrets: inherit
144136
uses: intel-innersource/libraries.devops.renderkit.workflows/.github/workflows/composition_analysis.yml@main
145137

146138
static-analysis:
147-
needs: cache-ospray
148139
secrets: inherit
149-
uses: intel-innersource/libraries.devops.renderkit.workflows/.github/workflows/static_analysis.yml@main
140+
#uses: intel-innersource/libraries.devops.renderkit.workflows/.github/workflows/static_analysis.yml@main
141+
uses: intel-innersource/libraries.devops.renderkit.workflows/.github/workflows/static_analysis.yml@tgt/coverity_env
150142
with:
151143
coverity: true
152144
image: rockylinux:8.7
153145
project: OSPRay Studio
154146
ignore-files: pysg.cpp
155147
prebuild: >
156148
module load cmake/3.25.3 &&
157-
export CACHE_DIR=${{ needs.cache-ospray.outputs.cache-dir }} &&
158-
export OSPRAY_VER=${{ needs.cache-ospray.outputs.ospray-version }} &&
159-
export CMAKE_PREFIX_PATH=$CACHE_DIR/ospray-$OSPRAY_VER/build/install &&
160-
export TBB_ROOT=$CACHE_DIR/ospray-$OSPRAY_VER/build/tbb/src/tbb &&
161149
cmake -L -S . -B build -DENABLE_OPENIMAGEIO=OFF -DENABLE_OPENVDB=OFF -DENABLE_EXR=OFF &&
162150
echo "Done: Configure OSPRay Studio"
163151
build: cmake --build build

CHANGELOG.md

Lines changed: 53 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,59 @@
11
Version History
22
---------------
33

4+
### Changes in OSPRay Studio v1.0.0
5+
6+
- Compatible with OSPRay release v3.1.0
7+
8+
- Features and Improvements
9+
- Add support for new OSPRay functionality:<br>
10+
- Principled and Luminous materials support emissive textures
11+
- Add native support for disc and oriented disc geometry
12+
- Add support for mirror repeat and clamp to edge texture wrap modes
13+
- `OSPTextureWrapMode` supported on all textures
14+
- glTF texture wrapping now fully supported
15+
- Support frame buffer denoise and tonemapper on non-float buffer format
16+
17+
- Add more OSPRay material types to UI, supporting the rest of
18+
the OSPRay material types and their default values.
19+
- Support for both OpenEXR v2.x and v3.x APIs
20+
- Detection of asynchronous file modifications for automatic
21+
update HDRI and backplate textures.
22+
- Enable plugins to access MainWindow class, re-enabling plugins to access
23+
the ArcballCamera
24+
- Enable MPI distributed rendering in Batch mode allowing ospStudio to utilize
25+
OSPRay's MPI Distributed renderer in Batch mode
26+
<br><br>
27+
28+
- Cleanup and bug fixes:
29+
- For Windows builds, add dependent load for dll injection security
30+
- Graceful exit if command line parsing fails
31+
- Fix support for 2D measured light intensity distribution
32+
- Correctly set OBJ texture parameters in SciVis/AO and show OBJ colors in widget
33+
- Fixed a long-standing bug in OBJ material loader. kd and ks textures were
34+
loaded as linear format and not sRGB gamma encoded.
35+
- Fix value scaling when displaying depth buffer
36+
- Add helper code to enable loading of pre-OSPRayStudio v0.13 sg files
37+
- Fix incorrect texture flip on load in UDIM and reuse
38+
39+
- Update 3rd party dependencies
40+
- Implicitly included in this repo:
41+
- CLI11 v2.4.0 (github.com/CLIUtils/CLI11)
42+
- dear imgui v1.90.2 WIP (docking branch) (github.com/ocornut/imgui)
43+
- dirent v1.24 (github.com/tronkko/dirent)
44+
- ImGuiFileDialog v0.6.6.1 (github.com/aiekick/ImGuiFileDialog)
45+
- imGuIZMO.quat v3.0 (github.com/BrutPitt/imGuIZMO.quat)
46+
- JSON for Modern C++ 3.11.3 (github.com/nlohmann/json)
47+
- stb_image v2.29 (github.com/nothings/stb)
48+
- tinydng v0.1.0 (github.com/syoyo/tinydng)
49+
- tinyexr v1.0.7 (github.com/syoyo/tinyexr)
50+
- tinygltf v2.8.20 (github.com/syoyo/tinygltf)
51+
- tinyobjloader v2.0.0rc13 (github.com/tinyobjloader/tinyobjloader)
52+
- via FetchContent:
53+
- glfw v3.3.9 (github.com/glfw/glfw)
54+
- pybind11 v2.11.1 (github.com/pybind/pybind11)
55+
- draco v1.5.7 (github.com/google/draco)
56+
457
### Changes in OSPRay Studio v0.13.0
558

659
- Compatible with OSPRay release v3.0.0

CMakeLists.txt

Lines changed: 15 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33

44
cmake_minimum_required(VERSION 3.15)
55

6-
project(ospray_studio VERSION 0.13.0 LANGUAGES CXX C)
6+
project(ospray_studio VERSION 1.0.0 LANGUAGES CXX C)
77

88
include(GNUInstallDirs)
99
include(ProcessorCount)
@@ -55,6 +55,20 @@ else()
5555
set_property(CACHE CMAKE_BUILD_TYPE PROPERTY STRINGS ${CONFIGURATION_TYPES})
5656
endif()
5757

58+
## Add dependent load for Windows dll injection load security
59+
if (WIN32)
60+
get_filename_component(COMPILER_NAME ${CMAKE_CXX_COMPILER} NAME_WE)
61+
if (COMPILER_NAME STREQUAL "icx" OR COMPILER_NAME STREQUAL "icpx")
62+
set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} /Qoption,link,/DEPENDENTLOADFLAG:0x2000")
63+
set(CMAKE_SHARED_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS} /Qoption,link,/DEPENDENTLOADFLAG:0x2000")
64+
elseif (MSVC)
65+
set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} /DEPENDENTLOADFLAG:0x2000")
66+
set(CMAKE_SHARED_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS} /DEPENDENTLOADFLAG:0x2000")
67+
else()
68+
message(WARNING "Urecognized compiler, DEPENDENTLOADFLAG can't be set")
69+
endif()
70+
endif()
71+
5872
## global options and variables
5973
option(OSPRAY_INSTALL "Install OSPRay libraries in addition to OSPRay Studio libraries / binaries" ON)
6074
set(OSPRAY_STUDIO_RESOURCE_FILE "${PROJECT_SOURCE_DIR}/resources/ospray_studio.rc")

README.md

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
# OSPRay Studio
22

3-
This is release v0.13.0 of Intel® OSPRay Studio. It is released under the
3+
This is release v1.0.0 of Intel® OSPRay Studio. It is released under the
44
Apache 2.0 license.
55

66
Visit [**OSPRay Studio**](http://www.ospray.org/ospray_studio)
@@ -72,28 +72,28 @@ listed in OS-specific building process below.
7272
### Required dependencies
7373

7474
- [CMake](https://www.cmake.org) (v3.15+) and any C++14 compiler
75-
- Intel [OSPRay](https://www.github.com/ospray/ospray) (v3.0.0) and its
75+
- Intel [OSPRay](https://www.github.com/ospray/ospray) (v3.1.0) and its
7676
dependencies - OSPRay Studio builds on top of OSPRay. Instructions on
7777
building OSPRay are provided
7878
[here](http://www.ospray.org/downloads.html#building-and-finding-ospray).
7979
OSPRay and OSPRay Studio have the following common dependencies which Studio
8080
can hence leverage from an OSPRay build.
8181
- Intel oneAPI Rendering Toolkit common library
82-
[rkcommon](https://www.github.com/ospray/rkcommon) (v1.12.0)
82+
[rkcommon](https://www.github.com/ospray/rkcommon) (v1.13.0)
8383
- Intel [Threading Building Blocks](https://www.threadingbuildingblocks.org/)
84-
- OpenGL and [GLFW](https://www.glfw.org) (v3.3.8) - for the windowing environment
84+
- OpenGL and [GLFW](https://www.glfw.org) (v3.3.9) - for the windowing environment
8585

8686

8787
### Optional Dependencies
8888

89-
- Intel [Open Image Denoise](https://openimagedenoise.github.io) - (v2.0.0 or
89+
- Intel [Open Image Denoise](https://openimagedenoise.github.io) - (v2.2.0 or
9090
newer) for denoising frames. To use with OSPRay Studio, OSPRay must be built
9191
with `-DBUILD_OIDN=ON` in CMake.
9292
- [OpenVDB](https://www.openvdb.org/) to support loading VDB formatted volume files.
9393
- [OpenImageIO](http://openimageio.org/) and [OpenEXR](https://www.openexr.com/)
94-
(pre-3.x versions) to support images in a variety of file formats. Set `OPENIMAGEIO_ROOT`
94+
(either v2.x or v3.x) to support images in a variety of file formats. Set `OPENIMAGEIO_ROOT`
9595
and `OPENEXR_ROOT` to the respective install directories to use these libraries.
96-
(tested with OpenImageIO v2.3.16 and OpenEXR v2.5.8)
96+
(tested with OpenImageIO v2.3.16 and OpenEXR v2.5.8 and v3.3.0)
9797
- [Python] (3.9.7) (https://python.org) for python bindings
9898

9999
### Building on Linux and macOS

app/Batch.cpp

Lines changed: 12 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -63,6 +63,14 @@ void BatchContext::start()
6363
cameraIdx = whichCamera;
6464

6565
if (parseCommandLine()) {
66+
// If using MPI distributed, ensure mpiRaycast renderer is chosen.
67+
if (sgUsingMpi()) {
68+
if (optRendererTypeStr != "mpiRaycast") {
69+
std::cerr << "Distributed rendering requires mpiRaycast renderer." << std::endl;
70+
optRendererTypeStr = "mpiRaycast";
71+
}
72+
}
73+
6674
std::cout << "...importing files!" << std::endl;
6775

6876
loadCamJson();
@@ -235,14 +243,15 @@ bool BatchContext::parseCommandLine()
235243
try {
236244
app->parse(ac, av);
237245
} catch (const CLI::ParseError &e) {
238-
exit(app->exit(e));
246+
app->exit(e);
247+
return false;
239248
}
240249

241250
if (filesToImport.size() == 0) {
242251
std::cout << "No files to import " << std::endl;
243-
return 0;
252+
return false;
244253
} else
245-
return 1;
254+
return true;
246255
}
247256

248257
void BatchContext::refreshRenderer()

app/GUIContext.cpp

Lines changed: 7 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -63,6 +63,7 @@ void GUIContext::start()
6363
if (!mainWindow) {
6464
mainWindow = new MainWindow(defaultSize, currentUtil);
6565
mainWindow->initGLFW();
66+
StudioContext::setMainWindow((void *)mainWindow);
6667
}
6768

6869
// load plugins //
@@ -245,22 +246,7 @@ void GUIContext::refreshRenderer()
245246
r["maxContribution"] = maxContribution;
246247

247248
// Re-add the backplate on renderer change
248-
if (backPlateTexture != "") {
249-
auto backplateTex =
250-
createNodeAs<Texture2D>("map_backplate", "texture_2d");
251-
if (backplateTex->load(backPlateTexture, false, false))
252-
r.add(backplateTex);
253-
else {
254-
backplateTex = nullptr;
255-
backPlateTexture = "";
256-
}
257-
} else {
258-
// Node removal requires waiting on previous frame completion
259-
frame->cancelFrame();
260-
frame->waitOnFrame();
261-
r.remove("map_backplate");
262-
r.handle().removeParam("map_backplate");
263-
}
249+
r["backplate_filename"] = backPlateTexture.str();
264250
}
265251

266252
void GUIContext::saveRendererParams()
@@ -345,7 +331,8 @@ bool GUIContext::parseCommandLine()
345331
try {
346332
app->parse(ac, av);
347333
} catch (const CLI::ParseError &e) {
348-
exit(app->exit(e));
334+
app->exit(e);
335+
return false;
349336
}
350337

351338
// XXX: changing windowSize here messes causes some display scaling issues
@@ -616,11 +603,12 @@ void GUIContext::saveNodesJson(const std::string nodeTypeStr)
616603

617604
void GUIContext::selectBuffer(OSPFrameBufferChannel whichBuffer, bool invert)
618605
{
606+
auto &framebuffer = frame->childAs<FrameBuffer>("framebuffer");
607+
619608
optDisplayBuffer = whichBuffer;
620-
optDisplayBufferInvert = invert;
609+
optDisplayBufferInvert = invert && framebuffer.isFloatFormat();
621610

622611
// Only enabled if they exist
623-
auto &framebuffer = frame->childAs<FrameBuffer>("framebuffer");
624612
if (!framebuffer.hasDepthChannel())
625613
optDisplayBuffer &= ~OSP_FB_DEPTH;
626614
if (!framebuffer.hasAccumChannel())

app/MainWindow.cpp

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -706,7 +706,9 @@ void MainWindow::display()
706706
std::transform(depthCopy.begin(),
707707
depthCopy.end(),
708708
depthCopy.begin(),
709-
[&](float value) { return (value - minValue) * rcpRange; });
709+
[&](float value) {
710+
return isinf(value) ? 1.f : (value - minValue) * rcpRange;
711+
});
710712

711713
bufferCopy = std::move(depthCopy);
712714
}

0 commit comments

Comments
 (0)