OpenVDB 13.0.0

Loading...
Searching...
No Matches
LevelSetRayTracer< GridT, IntersectorT > Class Template Reference

A (very) simple multithreaded ray tracer specifically for narrow-band level sets. More...

`#include <openvdb/tools/RayTracer.h>`

## Public Types
using | GridType = GridT
using | Vec3Type = typename IntersectorT::Vec3Type
using | RayType = typename IntersectorT::RayType

## Public Member Functions
| LevelSetRayTracer (const GridT &grid, const BaseShader &shader, BaseCamera &camera, size_t pixelSamples=1, unsigned int seed=0)
| Constructor based on an instance of the grid to be rendered.
| LevelSetRayTracer (const IntersectorT &inter, const BaseShader &shader, BaseCamera &camera, size_t pixelSamples=1, unsigned int seed=0)
| Constructor based on an instance of the intersector performing the ray-intersections.
| LevelSetRayTracer (const LevelSetRayTracer &other)
| Copy constructor.
| ~LevelSetRayTracer ()
| Destructor.
void | setGrid (const GridT &grid)
| Set the level set grid to be ray-traced.
void | setIntersector (const IntersectorT &inter)
| Set the intersector that performs the actual intersection of the rays against the narrow-band level set.
void | setShader (const BaseShader &shader)
| Set the shader derived from the abstract BaseShader class.
void | setCamera (BaseCamera &camera)
| Set the camera derived from the abstract BaseCamera class.
void | setPixelSamples (size_t pixelSamples, unsigned int seed=0)
| Set the number of pixel samples and the seed for jittered sub-rays. A value larger than one implies anti-aliasing by jittered super-sampling.
void | render (bool threaded=true) const
| Perform the actual (potentially multithreaded) ray-tracing.
void | operator() (const tbb::blocked_range< size_t > &range) const
| Public method required by tbb::parallel_for.

## Detailed Description

template<typename GridT, typename IntersectorT = tools::LevelSetRayIntersector<GridT>>
class openvdb::v13_0::tools::LevelSetRayTracer< GridT, IntersectorT >

A (very) simple multithreaded ray tracer specifically for narrow-band level sets.

Included primarily as a reference implementation.

## Member Typedef Documentation

## ◆ GridType

template<typename GridT, typename IntersectorT = tools::LevelSetRayIntersector<GridT>>

using GridType = GridT

## ◆ RayType

template<typename GridT, typename IntersectorT = tools::LevelSetRayIntersector<GridT>>

using RayType = typename IntersectorT::RayType

## ◆ Vec3Type

template<typename GridT, typename IntersectorT = tools::LevelSetRayIntersector<GridT>>

using Vec3Type = typename IntersectorT::Vec3Type

## Constructor & Destructor Documentation

## ◆ LevelSetRayTracer() [1/3]

template<typename GridT, typename IntersectorT>

LevelSetRayTracer | ( | const GridT & | grid,
|  | const BaseShader & | shader,
|  | BaseCamera & | camera,
|  | size_t | pixelSamples = 1,
|  | unsigned int | seed = 0 )
| inline

Constructor based on an instance of the grid to be rendered.

## ◆ LevelSetRayTracer() [2/3]

template<typename GridT, typename IntersectorT>

LevelSetRayTracer | ( | const IntersectorT & | inter,
|  | const BaseShader & | shader,
|  | BaseCamera & | camera,
|  | size_t | pixelSamples = 1,
|  | unsigned int | seed = 0 )
| inline

Constructor based on an instance of the intersector performing the ray-intersections.

## ◆ LevelSetRayTracer() [3/3]

template<typename GridT, typename IntersectorT>

LevelSetRayTracer | ( | const LevelSetRayTracer< GridT, IntersectorT > & | other | ) |
| inline

Copy constructor.

## ◆ ~LevelSetRayTracer()

template<typename GridT, typename IntersectorT>

~LevelSetRayTracer | ( |  | ) |
| inline

Destructor.

## Member Function Documentation

## ◆ operator()()

template<typename GridT, typename IntersectorT>

void operator() | ( | const tbb::blocked_range< size_t > & | range | ) | const
| inline

Public method required by tbb::parallel_for.

Warning
  Never call it directly.

## ◆ render()

template<typename GridT, typename IntersectorT>

void render | ( | bool | threaded = true | ) | const
| inline

Perform the actual (potentially multithreaded) ray-tracing.

## ◆ setCamera()

template<typename GridT, typename IntersectorT>

void setCamera | ( | BaseCamera & | camera | ) |
| inline

Set the camera derived from the abstract BaseCamera class.

## ◆ setGrid()

template<typename GridT, typename IntersectorT>

void setGrid | ( | const GridT & | grid | ) |
| inline

Set the level set grid to be ray-traced.

## ◆ setIntersector()

template<typename GridT, typename IntersectorT>

void setIntersector | ( | const IntersectorT & | inter | ) |
| inline

Set the intersector that performs the actual intersection of the rays against the narrow-band level set.

## ◆ setPixelSamples()

template<typename GridT, typename IntersectorT>

void setPixelSamples | ( | size_t | pixelSamples,
|  | unsigned int | seed = 0 )
| inline

Set the number of pixel samples and the seed for jittered sub-rays. A value larger than one implies anti-aliasing by jittered super-sampling.

Exceptions

  ValueError | if pixelSamples is equal to zero.

## ◆ setShader()

template<typename GridT, typename IntersectorT>

void setShader | ( | const BaseShader & | shader | ) |
| inline

Set the shader derived from the abstract BaseShader class.

Note
  The shader is not assumed to be thread-safe so each thread will get its only deep copy. For instance it could contains a ValueAccessor into another grid with auxiliary shading information. Thus, make sure it is relatively light-weight and efficient to copy (which is the case for ValueAccesors).