DD::Image::VertexContext Class Reference

Public Types

typedef void(* TextureSampler) (Iop *material, const Vector2 &center, const Vector2 &dU, const Vector2 &dV, TextureFilter *f, Pixel &out, void *context)

Public Member Functions

 VertexContext (const VertexContext &vtx)
Scenescene () const
void set_scene (Scene *s)
const GeoInfogeoinfo () const
void set_geoinfo (const GeoInfo *g)
const Primitiveprimitive () const
void set_primitive (const Primitive *p)
const GeoInfoRenderStateget_renderstate () const
void set_renderstate (const GeoInfoRenderState *r)
rPrimitiverprimitive () const
void set_rprimitive (rPrimitive *rp)
Ioprmaterial () const
void set_rmaterial (Iop *m)
Box3face_uv_bbox ()
unsigned & face_clipmask ()
void set_transforms (MatrixArray *m)
MatrixArraytransforms () const
const Matrix4matrix (int n) const
const Matrix4inverse_matrix (int n) const
PrimitiveTestCacheray_test_cache () const
void set_ray_test_cache (PrimitiveTestCache *r)
TextureSampler texture_sampler () const
void set_texture_sampler (TextureSampler t)
Vector4P () const
Vector4dPdu () const
Vector4dPdv () const
float x () const
float y () const
float z () const
float w () const
Vector3PL () const
Vector3dPLdu () const
Vector3dPLdv () const
Vector3PW () const
Vector3dPWdu () const
Vector3dPWdv () const
Vector3MB () const
Vector3dMBdu () const
Vector3dMBdv () const
Vector4UV () const
Vector4dUVdu () const
Vector4dUVdv () const
Vector3N () const
Vector3dNdu () const
Vector3dNdv () const
Vector4Cf () const
Vector4dCfdu () const
Vector4dCfdv () const
float r () const
float g () const
float b () const
float a () const
Vector3VEL () const
Vector3dVELdu () const
Vector3dVELdv () const
void sample (Iop *material, Pixel &out) const

Public Attributes

VArray vP
 Current values for fragment_shader.
VArray vdX
 Change if X of render pixel is increased by 1.
VArray vdY
 Change if Y of render pixel is increased by 1.
Vector3 ambient
 Global ambient setting.
bool texture_sampling
void * render_context

Detailed Description

This class is intended to be passed up a vertex shader tree. It's initialized with basic vertex info like the point location, a UV coordinate and a normal. A shader can then modify the parameters producing effects like point displacement, UV projection, and normal remapping.

Member Typedef Documentation

typedef void(* DD::Image::VertexContext::TextureSampler) (Iop *material, const Vector2 &center, const Vector2 &dU, const Vector2 &dV, TextureFilter *f, Pixel &out, void *context)

Callback to redefine the texture sampler

Member Function Documentation

void VertexContext::sample ( Iop material,
Pixel out 
) const

Use the UV and the derivatives of UV to sample the incoming image. UV of 0,0 is mapped to the lower-left corner of the image's format, and 1,1 is mapped to the upper-right corner.

References DD::Image::IopInfoOwner::channels(), DD::Image::ChannelSet::contains(), DD::Image::IopInfoOwner::format(), DD::Image::Box::h(), DD::Image::Iop::sample(), DD::Image::Box::w(), DD::Image::Box::x(), and DD::Image::Box::y().

Referenced by DD::Image::Render::draw_primitives(), and DD::Image::Iop::fragment_shader().

Member Data Documentation

Iop* DD::Image::VertexContext::blending_shader
bool DD::Image::VertexContext::texture_sampling

Whether shaders should sample their textures.

Referenced by DD::Image::Iop::fragment_shader(), and DD::Image::Render::Span::initialize().

©2022 The Foundry Visionmongers, Ltd. All Rights Reserved.