OpenVDB  9.0.1
Public Types | Public Member Functions | List of all members
DiffuseShader< GridT, SamplerType > Class Template Reference

Simple diffuse Lambertian surface shader. More...

#include <openvdb/tools/RayTracer.h>

Inherits BaseShader.

Public Types

using RayT = math::Ray< Real >

Public Member Functions

 DiffuseShader (const GridT &grid)
 DiffuseShader (const DiffuseShader &)=default
 ~DiffuseShader () override=default
Film::RGBA operator() (const Vec3R &xyz, const Vec3R &normal, const Vec3R &rayDir) const override
 Defines the interface of the virtual function that returns a RGB color. More...
BaseShadercopy () const override

Detailed Description

template<typename GridT = Film::RGBA, typename SamplerType = tools::PointSampler>
class openvdb::v9_0::tools::DiffuseShader< GridT, SamplerType >

Simple diffuse Lambertian surface shader.

The diffuse color can either be constant (if GridT = Film::RGBA which is the default) or defined in a separate Vec3 color grid. Lambertian implies that the (radiant) intensity is directly proportional to the cosine of the angle between the surface normal and the direction of the light source. Use SamplerType to define the order of interpolation (default is zero order, i.e. closes-point).

Member Typedef Documentation

using RayT = math::Ray<Real>

Constructor & Destructor Documentation

DiffuseShader ( const GridT &  grid)
DiffuseShader ( const DiffuseShader< GridT, SamplerType > &  )
~DiffuseShader ( )

Member Function Documentation

BaseShader* copy ( ) const

Implements BaseShader.

Film::RGBA operator() ( const Vec3R xyz,
const Vec3R nml,
const Vec3R dir 
) const

Defines the interface of the virtual function that returns a RGB color.

xyzWorld position of the intersection point.
nmlNormal in world space at the intersection point.
dirDirection of the ray in world space.

Implements BaseShader.