Skip to content

Commit

Permalink
Sync README, fix links and spelling
Browse files Browse the repository at this point in the history
  • Loading branch information
johguenther committed Jul 22, 2024
1 parent f70252b commit 101ec57
Show file tree
Hide file tree
Showing 19 changed files with 161 additions and 119 deletions.
35 changes: 19 additions & 16 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -3,17 +3,6 @@ Version History

### Changes in v3.2.0:

- Clarify the size of `OSP_BOOL` to be 1 byte
- Support half-precision (16\ bit float) texture formats
`OSP_TEXTURE_[RGBA16F|RGB16F|RA16F|R16F]` and two-channel 32\ bit
float textures `OSP_TEXTURE_RA32F`
- Implement MIP Mapping for better texture filtering. If the
additional memory per texture needed cannot be spared, applications
can disable the generation of MIP maps with device parameter
`disableMipMapGeneration`
- New parameter `limitIndirectLightSamples` for the `pathtracer` which
limits the number of light samples after the first non-specular
(i.e., diffuse and glossy) bounce to at most one
- Sampling improvements:
- Better performance (lower rendering time and faster convergence)
- More pleasing blue noise enabled when the total number of frames
Expand All @@ -24,18 +13,32 @@ Version History
- User-controlled quality levels via parameter `quality`
- Optionally denoise alpha channel as well, enabled via
parameter `denoiseAlpha`
- Support half-precision (16\ bit float) texture formats
`OSP_TEXTURE_[RGBA16F|RGB16F|RA16F|R16F]` and two-channel 32\ bit
float textures `OSP_TEXTURE_RA32F`
- New parameter `limitIndirectLightSamples` for the `pathtracer` which
limits the number of light samples after the first non-specular
(i.e., diffuse and glossy) bounce to at most one
- Implement MIP Mapping for better texture filtering. If the
additional memory per texture needed cannot be spared, applications
can disable the generation of MIP maps with device parameter
`disableMipMapGeneration`
- The backplate (background texture) is now always sampled at the pixel
center and thus not blurred by the pixel filter anymore
- Avoid color bleeding across eye-subimages when stereo rendering
- Superbuild uses binary packages of Open VKL
- Removed Intel ISPCRT dependency (ISPC compiler is still needed):
- oneAPI Level Zero Loader is no longer necessary
- `zeContext` and `zeDevice`device parameters are no longer supported
- `ispcrtContext` and `ispcrtDevice`device parameters are no longer
supported
- Superbuild uses binary packages of Open VKL
- Avoid color bleeding across eye-subimages when stereo rendering
- The backplate (background texture) is now always sampled at the pixel
center and thus not blurred by the pixel filter anymore
- Fix artifacts occassionally appearing with `gpu` device
- Clarify the size of `OSP_BOOL` to be 1 byte
- Fix artifacts occasionally appearing with `gpu` device
- The new minimum versions of dependencies:
- Embree v4.3.3 (better error reporting)
- Open Image Denoise v2.3 (better image quality with `HIGH`
quality mode, added `FAST` quality mode)
- rkcommon v1.14.0

### Changes in v3.1.0:

Expand Down
190 changes: 115 additions & 75 deletions README.md

Large diffs are not rendered by default.

2 changes: 1 addition & 1 deletion STYLEGUIDE.md
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@ be overly strict. However, deviations from this document should be
supported with technical reasoning.

This document is relatively simple and meant as a "quick overview" of
expecations for OSPRay. A more complete set of guidelines for all of C++
expectations for OSPRay. A more complete set of guidelines for all of C++
can be found in the [ISO C++ Core
Guidelines](https://github.com/isocpp/CppCoreGuidelines/blob/master/CppCoreGuidelines.md).

Expand Down
2 changes: 1 addition & 1 deletion cmake/compiler/clang.cmake
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,7 @@ if(OSPRAY_STRICT_BUILD)
set(OSPRAY_CXX_FLAGS "-Wno-header-hygiene ${OSPRAY_CXX_FLAGS}")
set(OSPRAY_CXX_FLAGS "-Wno-covered-switch-default ${OSPRAY_CXX_FLAGS}")
set(OSPRAY_CXX_FLAGS "-Wno-date-time ${OSPRAY_CXX_FLAGS}")
set(OSPRAY_CXX_FLAGS "-Wno-unsafe-buffer-usage ${OSPRAY_CXX_FLAGS}") #we use pointer arithmetics on buffers
set(OSPRAY_CXX_FLAGS "-Wno-unsafe-buffer-usage ${OSPRAY_CXX_FLAGS}") #we use pointer arithmetic on buffers
set(OSPRAY_CXX_FLAGS "-Wno-reserved-identifier ${OSPRAY_CXX_FLAGS}") #used in autogenerated ISPC headers

# Should try to fix and remove...
Expand Down
6 changes: 3 additions & 3 deletions cmake/compiler/ispc.cmake
Original file line number Diff line number Diff line change
Expand Up @@ -172,7 +172,7 @@ macro (ispc_compile)
message(FATAL_ERROR "CMAKE_BUILD_TYPE (${CMAKE_BUILD_TYPE}) allows only the following values: Debug;Release;RelWithDebInfo")
endif()

# turn space sparated list into ';' separated list
# turn space separated list into ';' separated list
string(REPLACE " " ";" ISPC_OPT_FLAGS "${ISPC_OPT_FLAGS}")

if (NOT WIN32)
Expand Down Expand Up @@ -225,8 +225,8 @@ macro (ispc_compile)
endforeach()
endif()

# use relative path for genereated header file, because the path is
# included as commment and the header will be distributed
# use relative path for generated header file, because the path is
# included as comment and the header will be distributed
set(headerfile "${outdir}/${fname}_ispc.h")
file(RELATIVE_PATH headerfile ${CMAKE_CURRENT_BINARY_DIR} ${headerfile})

Expand Down
8 changes: 4 additions & 4 deletions doc/api.md
Original file line number Diff line number Diff line change
Expand Up @@ -3368,8 +3368,8 @@ memory with OSPRay or to control which device should be used
(e.g., in case multiple GPUs are present). If neither parameter is set,
the `gpu` device will automatically create a context internally
and select a GPU (that selection can be influenced via environment
variable `ONEAPI_DEVICE_SELECTOR`, see [Intel oneAPI DPC++ Compiler documentation]
(https://intel.github.io/llvm-docs/EnvironmentVariables.html#oneapi-device-selector)).
variable `ONEAPI_DEVICE_SELECTOR`, see [Intel oneAPI DPC++ Compiler
documentation](https://intel.github.io/llvm-docs/EnvironmentVariables.html#oneapi-device-selector)).

Compile times for just in time compilation (JIT compilation) can be
large. To resolve this issue we recommend enabling persistent JIT
Expand All @@ -3382,8 +3382,8 @@ To reduce GPU memory allocation overhead when rendering scenes with many
objects (geometries, instances, etc.), memory pooling should be enabled
by setting the environment variable
`SYCL_PI_LEVEL_ZERO_USM_ALLOCATOR="1;0;shared:1M,0,2M"`.
See [Intel oneAPI DPC++ Compiler documentation]
(https://intel.github.io/llvm-docs/EnvironmentVariables.html#debugging-variables-for-level-zero-plugin)
See [Intel oneAPI DPC++ Compiler
documentation](https://intel.github.io/llvm-docs/EnvironmentVariables.html#debugging-variables-for-level-zero-plugin)
for more details.

### Known Issues {-}
Expand Down
2 changes: 1 addition & 1 deletion modules/cpu/ISPCDevice.h
Original file line number Diff line number Diff line change
Expand Up @@ -162,7 +162,7 @@ struct OSPRAY_SDK_INTERFACE ISPCDevice : public Device

#ifdef OSPRAY_TARGET_SYCL
/* Compute the rounded dispatch global size for the given work group size.
* SYCL requires that globalSize % workgroupSize == 0, ths function will
* SYCL requires that globalSize % workgroupSize == 0, this function will
* round up globalSize and return nd_range(roundedSize, workgroupSize).
* The kernel being launched must discard tasks that are out of bounds
* bounds due to this rounding
Expand Down
4 changes: 2 additions & 2 deletions modules/cpu/common/World.ispc
Original file line number Diff line number Diff line change
Expand Up @@ -50,7 +50,7 @@ unmasked void clippingIntersectionFilterV(
instance, NULL, dg, *ray, DG_NG | DG_NS, true, *context->super.ffh);

// Use geometry normal for clipping
// but use shading normal to check if invertion is needed
// but use shading normal to check if inversion is needed
Nc = (dot(dg.Ns, dg.Ng) > 0.f) ? ray->Ng : neg(ray->Ng);
}

Expand All @@ -60,7 +60,7 @@ unmasked void clippingIntersectionFilterV(
}

// Based on clipping normal vector decide if the ray is
// entering clipping geometry (set positive hit value) or exitting clipping
// entering clipping geometry (set positive hit value) or exiting clipping
// geometry (set negative hit value)
const bool exitsClipping = (dot(ray->dir, Nc) > 0.f);
ClippingHit cHit;
Expand Down
4 changes: 1 addition & 3 deletions modules/cpu/fb/FrameBuffer.h
Original file line number Diff line number Diff line change
Expand Up @@ -59,10 +59,8 @@ struct OSPRAY_SDK_INTERFACE FrameBuffer
virtual utility::ArrayView<uint32_t> getRenderTaskIDs(
const float errorThreshold, const uint32_t spp) = 0;

// get number of pixels in x and y diretion
vec2i getNumPixels() const;

// get the color format type for this Buffer
ColorBufferFormat getColorBufferFormat() const;

virtual float getVariance() const;
Expand Down Expand Up @@ -139,7 +137,7 @@ struct OSPRAY_SDK_INTERFACE FrameBuffer
bool accumulationFinished() const;

private:
// for consistent reproducability of variance accumulation
// for consistent reproducibility of variance accumulation
constexpr static uint32_t mtSeed = 43;
std::mt19937 mtGen{mtSeed};
bool pickOdd{false};
Expand Down
2 changes: 1 addition & 1 deletion modules/cpu/fb/LocalFB.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -423,7 +423,7 @@ vec2i LocalFrameBuffer::getTaskStartPos(const uint32_t taskID) const
devicert::AsyncEvent LocalFrameBuffer::postProcess()
{
// Calculate per-task variance if any samples accumulated into variance
// buffer, skip it if frameVariance overriden in writeTiles()
// buffer, skip it if frameVariance overridden in writeTiles()
devicert::AsyncEvent event;
const bool oddFrame = (getSh()->super.frameID & 1) == 1;
if (varianceFrameOp && oddFrame && (frameVariance == float(inf)))
Expand Down
2 changes: 1 addition & 1 deletion modules/cpu/lights/SunSkyLight.h
Original file line number Diff line number Diff line change
Expand Up @@ -59,7 +59,7 @@ struct OSPRAY_SDK_INTERFACE SunSkyLight : public Light
float intensityScale{0.025f};
};

// Inlined defintions /////////////////////////////////////////////////////////
// Inlined definitions /////////////////////////////////////////////////////////

inline uint32_t SunSkyLight::getShCount() const
{
Expand Down
2 changes: 1 addition & 1 deletion modules/cpu/render/RendererRenderTaskFn.inl
Original file line number Diff line number Diff line change
Expand Up @@ -90,7 +90,7 @@ static void Renderer_default_renderTask(const uniform vec3ui itemIndex,
make_vec3f(Renderer_getBackground(self, screenSample.pos, ffh));
screenSample.normal = make_vec3f(0.f);

// The proper sample rendering function name is substitued here via macro
// The proper sample rendering function name is substituted here via macro
renderSampleFn(self, fb, world, screenSample, ffh);

col = col + screenSample.rgb;
Expand Down
3 changes: 2 additions & 1 deletion modules/cpu/render/pathtracer/NextEventEstimation.ispc
Original file line number Diff line number Diff line change
Expand Up @@ -55,7 +55,8 @@ SYCL_EXTERNAL vec3f nextEventEstimation(const PathContext &pathContext,
foreach_unique (l in light)
ls = Light_dispatch_sample(l, pathVertex.dg, s, pathState.time, ffh);

// adjust the contibution with the probabiltiy of selecting the light source
// adjust the contribution with the probabiltiy of selecting the light
// source
ls.weight = ls.weight / lightSelectionProb;
ls.pdf *= lightSelectionProb;

Expand Down
2 changes: 1 addition & 1 deletion modules/cpu/render/pathtracer/TransparentShadow.ispc
Original file line number Diff line number Diff line change
Expand Up @@ -26,7 +26,7 @@ SYCL_EXTERNAL __noinline vec3f transparentShadow(
const uniform FeatureFlagsHandler &ffh)
{
const uniform FeatureFlags ff = getFeatureFlags(ffh);
// It's not possible to have transpareny shadows if we don't have any geometry
// It's not possible to have transparent shadows if we don't have any geometry
if (!ff.geometry) {
return lightContrib;
}
Expand Down
2 changes: 1 addition & 1 deletion modules/mpi/ospray/fb/DistributedFrameBuffer.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -439,7 +439,7 @@ void DistributedFrameBuffer::processMessage(MasterTileMessage_FB *msg)
}
// All IDs are sent if any were requested, however we need to write only the
// ones that actually exist in the local FB since it doesn't allocate
// buffers for the non-existant channels
// buffers for the non-existent channels
if (hasPrimitiveIDBuffer) {
pidBuf = reinterpret_cast<uint32 *>(data);
}
Expand Down
8 changes: 4 additions & 4 deletions ospray/common/DeviceRT.h
Original file line number Diff line number Diff line change
Expand Up @@ -273,7 +273,7 @@ inline Device &DeviceAllocator<T>::getDevice() const
// Use it for data that needs the highest read/write performance on the device.
// The buffer supports initialization from system (non-USM) memory. Preferably
// should be used for all scene data that does not need to be updated from or
// transfered back to the host.
// transferred back to the host.
template <typename T>
struct BufferDevice
{
Expand Down Expand Up @@ -319,7 +319,7 @@ BufferDevice<T>::BufferDevice(Device &device, const std::vector<T> &v)
ptr(static_cast<T *>(device.deviceMalloc(v.size() * sizeof(T))))
{
// Schedule buffer copying and wait till completed so the input resource can
// be released immediatelly
// be released immediately
AsyncEvent event = device.memcpy(ptr, v.data(), v.size() * sizeof(T));
event.wait();
}
Expand All @@ -331,7 +331,7 @@ BufferDevice<T>::BufferDevice(Device &device, T *data, std::size_t count)
ptr(static_cast<T *>(device.deviceMalloc(count * sizeof(T))))
{
// Schedule buffer copying and wait till completed so the input resource can
// be released immediatelly
// be released immediately
AsyncEvent event = device.memcpy(ptr, data, count * sizeof(T));
event.wait();
}
Expand Down Expand Up @@ -378,7 +378,7 @@ inline std::unique_ptr<BufferDevice<T>> make_buffer_device_unique(
// Buffer in the device memory with host memory shadow

// For usages that need the highest read/write efficiency on the device, similar
// to `BufferDevice`, but additionally the data has to be transfered from/to
// to `BufferDevice`, but additionally the data has to be transferred from/to
// host periodically, e.g. framebuffers. After construction and initialization
// of the host/shadow buffer, an explicit call to copyToDevice() is required so
// the data will be visible for the device. Beware, it may use pinned (not
Expand Down
2 changes: 1 addition & 1 deletion ospray/include/ospray/ospray_util.h
Original file line number Diff line number Diff line change
Expand Up @@ -86,7 +86,7 @@ OSPRAY_INTERFACE void ospSetObjectAsData(OSPObject target,

// Rendering helpers //////////////////////////////////////////////////////////

// Start a frame task and immediately wait on it, return frame buffer varaince
// Start a frame task and immediately wait on it, return frame buffer variance
OSPRAY_INTERFACE float ospRenderFrameBlocking(
OSPFrameBuffer, OSPRenderer, OSPCamera, OSPWorld);

Expand Down
2 changes: 1 addition & 1 deletion scripts/files-to-md5.sh
Original file line number Diff line number Diff line change
Expand Up @@ -46,7 +46,7 @@ set -e
for FILE in $BASELINE_INPUT_IMAGES_DIR/*; do
# Copy file to local tmp directory with new name (based on md5 from this img)
cp $FILE $LOCAL_TMP_DIR/`md5 $FILE`
# Create/Filll metadata file in ospray repo
# Create/Fill metadata file in ospray repo
# so we can link img in remote repo by this md5 string
md5 $FILE > $BASELINE_MD5_OUTPUT_DIR/`basename $FILE`.md5
done
Expand Down
2 changes: 1 addition & 1 deletion scripts/superbuild/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@ cmake [<OSPRAY_SOURCE_DIR>/scripts/superbuild]
cmake --build .
```

On Windows make sure to select a 64bit generator, e.g.
On Windows make sure to select a 64\ bit generator, e.g.

```sh
cmake -G "Visual Studio 17 2022" [<OSPRAY_SOURCE_DIR>/scripts/superbuild]
Expand Down

0 comments on commit 101ec57

Please sign in to comment.