Skip to content

Commit

Permalink
Merge branch 'release-1.1.x'
Browse files Browse the repository at this point in the history
  • Loading branch information
Bruce Cherniak committed Jul 31, 2024
2 parents 554724c + b915fdd commit 34fa395
Show file tree
Hide file tree
Showing 62 changed files with 5,901 additions and 4,321 deletions.
18 changes: 4 additions & 14 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@

name: OSPRay Studio Main CI
name: (Internal) OSPRay Studio Main CI

# XXX This uses FetchContent on the other components' release packages
# XXX not their devel branches.
Expand Down Expand Up @@ -33,15 +33,6 @@ jobs:
artifact-out: build-centos8
artifact-path: build

build-ubuntu18-04:
secrets: inherit
uses: intel-innersource/libraries.devops.renderkit.workflows/.github/workflows/docker.yml@main
with:
image: ubuntu:18.04
cmd: gitlab/build.sh
artifact-out: build-ubuntu18-04
artifact-path: build

build-ubuntu20-04:
secrets: inherit
uses: intel-innersource/libraries.devops.renderkit.workflows/.github/workflows/docker.yml@main
Expand Down Expand Up @@ -118,12 +109,12 @@ jobs:
needs: build-rocky8-7
uses: intel-innersource/libraries.devops.renderkit.workflows/.github/workflows/docker.yml@main
with:
# Run the rocky8-7 build on the ubuntu 18.04 image as a test, and because it has vncserver installed
image: rockylinux:8.7-tgt-rebuild
image: rockylinux:8.7
pre-cmd: yum -y install tigervnc-server mesa-libGLU
cmd: |
module load intel/2023.0
build/ospStudio --verify_install
mkdir build/model-results # in case run-dev tests fail artifacts will still upload
gitlab/run-dev.sh
gitlab/run-dev-img-cmp.sh
artifact-in: build-rocky8-7
Expand All @@ -134,8 +125,7 @@ jobs:
### Devel Coverity Job ###
static-analysis:
secrets: inherit
#uses: intel-innersource/libraries.devops.renderkit.workflows/.github/workflows/static_analysis.yml@main
uses: intel-innersource/libraries.devops.renderkit.workflows/.github/workflows/static_analysis.yml@tgt/coverity_env
uses: intel-innersource/libraries.devops.renderkit.workflows/.github/workflows/static_analysis.yml@main
with:
project: OSPRay Studio
prebuild: >
Expand Down
133 changes: 133 additions & 0 deletions .github/workflows/external.ci.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,133 @@
## Copyright 2024 Intel Corporation
## SPDX-License-Identifier: Apache-2.0

name: OSPRay Studio CI

on:
push:
pull_request:
workflow_dispatch:

concurrency:
group: ${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: true

permissions:
contents: read

jobs:

build-rocky-8:
runs-on: ubuntu-latest
container:
image: rockylinux:8

steps:
- name: Install packages
run: |
echo "Installing build dependencies..."
dnf update -y
dnf install -y git cmake mesa-libGL-devel libXrandr-devel libXinerama-devel libXcursor-devel libXi-devel python3.11-devel
dnf group install -y "Development Tools"
- name: Checkout Repository
uses: actions/checkout@v4

- name: Build
run: |
mkdir build
cd build
cmake ..
make -j$(nproc) install
- name: Upload build
uses: actions/upload-artifact@v4
with:
name: build-rocky-8
path: build/install

test-rocky-8:
needs: build-rocky-8
runs-on: ubuntu-latest
container:
image: rockylinux:8

steps:
- name: Install packages
run: |
dnf update -y
dnf install -y mesa-libGL mesa-dri-drivers xorg-x11-server-Xvfb
- name: Download build
uses: actions/download-artifact@v4
with:
name: build-rocky-8

- name: Run tests
run: |
chmod +x ./bin/*
set +e
timeout --preserve-status 10s xvfb-run ./bin/ospStudio
exitCode=$?
set -e
if [ "${exitCode}" -eq 143 ]; then
echo "code 143 is SIGTERM, which we expect from terminating the studio GUI"
exitCode=0
fi
echo "Exit code: ${exitCode}"
exit $exitCode
build-ubuntu-2204:
runs-on: ubuntu-latest
container:
image: ubuntu:22.04

steps:
- name: Install packages
run: |
echo "Installing build dependencies..."
apt update
apt upgrade -y
apt install -y build-essential cmake ninja-build libglfw3-dev libgl1-mesa-dev libxinerama-dev libxcursor-dev libxi-dev git python3-dev
- name: Checkout Repository
uses: actions/checkout@v4

- name: Build
run: |
mkdir build
cd build
cmake ..
make -j$(nproc) install
- name: Upload build
uses: actions/upload-artifact@v4
with:
name: build-ubuntu-2204
path: build/install

test-ubuntu-2204:
needs: build-ubuntu-2204
runs-on: ubuntu-latest
container:
image: ubuntu:22.04

steps:
- name: Install packages
run: |
echo "Installing build dependencies..."
apt update
apt upgrade -y
apt install -y libglfw3 xvfb
- name: Download build
uses: actions/download-artifact@v4
with:
name: build-ubuntu-2204

- name: Run tests
run: |
chmod +x ./bin/*
set +e
timeout --preserve-status 10s xvfb-run ./bin/ospStudio
exitCode=$?
set -e
if [ "${exitCode}" -eq 143 ]; then
echo "code 143 is SIGTERM, which we expect from terminating the studio GUI"
exitCode=0
fi
echo "Exit code: ${exitCode}"
exit $exitCode
19 changes: 7 additions & 12 deletions .github/workflows/release.yml
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@

name: OSPRay Studio Release
name: (Internal) OSPRay Studio Release

# XXX This uses FetchContent on the other components' release packages
# XXX not their devel branches.
Expand Down Expand Up @@ -28,8 +28,7 @@ jobs:
uses: intel-innersource/libraries.devops.renderkit.workflows/.github/workflows/docker.yml@main
with:
force-delete: true # guarantees .gitattributes are respected in working dir
# image: rockylinux:8.7
image: ubuntu:22.04 # temp, to use OSPRay v3.0.0 SYCL build
image: ubuntu:22.04
cmd: |
module load cmake/3.25.3
module load intel/2023.0
Expand Down Expand Up @@ -58,7 +57,7 @@ jobs:
secrets: inherit
uses: intel-innersource/libraries.devops.renderkit.workflows/.github/workflows/macos.yml@main
with:
runs-on: '[ "macOS", "sign", "x86_64" ]'
runs-on: '[ "sign", "x86_64" ]'
cmd: |
gitlab/macos.sh package
artifact-out: release-macos
Expand All @@ -70,10 +69,7 @@ jobs:
needs: release-linux
uses: intel-innersource/libraries.devops.renderkit.workflows/.github/workflows/docker.yml@main
with:
# Run the rockylinux 8.7 build on the ubuntu 18.04 image as a test, and because it has vncserver installed
#image: ubuntu:18.04
#image: rockylinux:8.7-tgt-rebuild
image: ubuntu:22.04 # temp, to use OSPRay v3.0.0 SYCL build
image: ubuntu:22.04
#pre-cmd: yum -y install tigervnc-server mesa-libGLU
cmd: |
module load intel/2023.0
Expand Down Expand Up @@ -125,10 +121,10 @@ jobs:
needs: release-macos
uses: intel-innersource/libraries.devops.renderkit.workflows/.github/workflows/macos.yml@main
with:
runs-on: '[ "macOS", "sign", "x86_64" ]'
runs-on: '[ "sign", "x86_64" ]'
cmd: |
unzip $GITHUB_WORKSPACE/build-macos/package/*.zip
$SIGN_FILE_MAC -t $GITHUB_WORKSPACE/ospray_studio-*/bin/* $GITHUB_WORKSPACE/ospray_studio-*/lib/*.dylib $GITHUB_WORKSPACE/build-macos/package/*.pkg
sign-path-verify: ospray_studio-*/bin/* ospray_studio-*/lib/*.dylib build-macos/package/*.pkg
artifact-in: release-macos

### Scan Jobs ###
Expand All @@ -139,8 +135,7 @@ jobs:

static-analysis:
secrets: inherit
#uses: intel-innersource/libraries.devops.renderkit.workflows/.github/workflows/static_analysis.yml@main
uses: intel-innersource/libraries.devops.renderkit.workflows/.github/workflows/static_analysis.yml@tgt/coverity_env
uses: intel-innersource/libraries.devops.renderkit.workflows/.github/workflows/static_analysis.yml@main
with:
coverity: true
image: rockylinux:8.7
Expand Down
31 changes: 31 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,6 +1,37 @@
Version History
---------------

### Changes in OSPRay Studio v1.1.0

- Compatible with OSPRay release v3.2.0

- Features and Improvements
- Add support for new OSPRay functionality:<br>
- Blue noise sampling enabled through setting `accumLimit`
- Tonemapper post-process adjustments without re-rendering
- OpenImageDenoise quality settings and denoise alpha channel through UI and
new command line parameters:
- "--denoiseQuality" {low, medium, high} sets the final frame quality
- "--denoiseAlpha" enables denoising the alpha channel
- Half-float texture format supported for EXR textures
- Support for new OSPRay param `limitIndirectLightSamples` optimization
which limits the number of light samples after the first non-specular
(i.e., diffuse and glossy) bounce to at most one.
- Added glTF importer support for EXT_mesh_gpu_instancing to allow loading of
highly instanced scenes.
<br><br>

- Cleanup and bug fixes:
- Fixes for glTF PBR materials:<br>
- normal channel, previously used default normal
that affects all layers, including coat. Now baseNormal and coatNormal
are considered separately.
- `sheenColorTexture` parameter was not applied correctly
- Removed `thicknessTexture` from KHR_materials_volume to allow ray-depth
to determine thickness.
- Fix verify install condition to report ospInit errors correctly
- Update 3rd party dependencies

### Changes in OSPRay Studio v1.0.0

- Compatible with OSPRay release v3.1.0
Expand Down
2 changes: 1 addition & 1 deletion CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@

cmake_minimum_required(VERSION 3.15)

project(ospray_studio VERSION 1.0.0 LANGUAGES CXX C)
project(ospray_studio VERSION 1.1.0 LANGUAGES CXX C)

include(GNUInstallDirs)
include(ProcessorCount)
Expand Down
12 changes: 6 additions & 6 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
# OSPRay Studio

This is release v1.0.0 of Intel® OSPRay Studio. It is released under the
This is release v1.1.0 of Intel® OSPRay Studio. It is released under the
Apache 2.0 license.

Visit [**OSPRay Studio**](http://www.ospray.org/ospray_studio)
Expand Down Expand Up @@ -72,21 +72,21 @@ listed in OS-specific building process below.
### Required dependencies

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


### Optional Dependencies

- Intel [Open Image Denoise](https://openimagedenoise.github.io) - (v2.2.0 or
- Intel [Open Image Denoise](https://openimagedenoise.github.io) - (v2.3.0 or
newer) for denoising frames. To use with OSPRay Studio, OSPRay must be built
with `-DBUILD_OIDN=ON` in CMake.
- [OpenVDB](https://www.openvdb.org/) to support loading VDB formatted volume files.
Expand Down
16 changes: 11 additions & 5 deletions app/Batch.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -370,17 +370,23 @@ void BatchContext::render()

void BatchContext::renderFrame()
{
auto &fb = frame->childAs<sg::FrameBuffer>("framebuffer");
auto &v = frame->childAs<sg::Renderer>("renderer")["varianceThreshold"];
auto varianceThreshold = v.valueAs<float>();
float fbVariance{inf};

if (studioCommon.denoiserAvailable && optDenoiser) {
frame->denoiseFB = true;
frame->denoiseFBFinalFrame = true;
// Set denoiser final frame quality and denoiseAlpha command line options
auto denoiser = fb.getDenoiser();
if (denoiser) {
denoiser->child("final") = optDenoiseQuality;
denoiser->child("denoiseAlpha") = optDenoiseAlpha;
}
}
frame->immediatelyWait = true;

auto &fb = frame->childAs<sg::FrameBuffer>("framebuffer");
auto &v = frame->childAs<sg::Renderer>("renderer")["varianceThreshold"];
auto varianceThreshold = v.valueAs<float>();
float fbVariance{inf};

// continue accumulation till variance threshold or accumulation limit is
// reached
do {
Expand Down
6 changes: 6 additions & 0 deletions app/GUIContext.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -86,6 +86,12 @@ void GUIContext::start()
frame->denoiseFB = true;
frame->denoiseFBFinalFrame = optDenoiseFinalFrame;
framebuffer->child("floatFormat") = true;
// Set denoiser final frame quality and denoiseAlpha command line options
auto denoiser = framebuffer->getDenoiser();
if (denoiser) {
denoiser->child("final") = optDenoiseQuality;
denoiser->child("denoiseAlpha") = optDenoiseAlpha;
}
framebuffer->commit();
}
refreshRenderer();
Expand Down
6 changes: 6 additions & 0 deletions app/MainMenuBuilder.h
Original file line number Diff line number Diff line change
Expand Up @@ -308,6 +308,10 @@ void MainMenuBuilder::buildMainMenuView()
GenerateWidget(renderer["varianceThreshold"]);
GenerateWidget(renderer["backgroundColor"]);

// Backplate can also be changed directly by changing the renderer
// parameter. Keep them in sync.
ctx->backPlateTexture = renderer["backplate_filename"].valueAs<string>();

if (ImGui::MenuItem("Set background texture..."))
showFileBrowser = true;
if (!ctx->backPlateTexture.str().empty()) {
Expand Down Expand Up @@ -443,6 +447,8 @@ void MainMenuBuilder::buildMainMenuView()

if (!fileList.empty()) {
ctx->backPlateTexture = fileList[0];
auto &renderer = ctx->frame->childAs<sg::Renderer>("renderer");
renderer["backplate_filename"] = ctx->backPlateTexture;
ctx->refreshRenderer();
}
}
Expand Down
Loading

0 comments on commit 34fa395

Please sign in to comment.