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)
 
Scene * scene () const
 
void set_scene (Scene *s)
 
const GeoInfo * geoinfo () const
 
void set_geoinfo (const GeoInfo *g)
 
const Primitive * primitive () const
 
void set_primitive (const Primitive *p)
 
const GeoInfoRenderState * get_renderstate () const
 
void set_renderstate (const GeoInfoRenderState *r)
 
rPrimitive * rprimitive () const
 
void set_rprimitive (rPrimitive *rp)
 
Iop * rmaterial () const
 
void set_rmaterial (Iop *m)
 
Box3 & face_uv_bbox ()
 
unsigned & face_clipmask ()
 
void set_transforms (MatrixArray *m)
 
MatrixArray * transforms () const
 
const Matrix4 & matrix (int n) const
 
const Matrix4 & inverse_matrix (int n) const
 
PrimitiveTestCache * ray_test_cache () const
 
void set_ray_test_cache (PrimitiveTestCache *r)
 
TextureSampler texture_sampler () const
 
void set_texture_sampler (TextureSampler t)
 
Vector4 & P () const
 
Vector4 & dPdu () const
 
Vector4 & dPdv () const
 
float x () const
 
float y () const
 
float z () const
 
float w () const
 
Vector3 & PL () const
 
Vector3 & dPLdu () const
 
Vector3 & dPLdv () const
 
Vector3 & PW () const
 
Vector3 & dPWdu () const
 
Vector3 & dPWdv () const
 
Vector3 & MB () const
 
Vector3 & dMBdu () const
 
Vector3 & dMBdv () const
 
Vector4 & UV () const
 
Vector4 & dUVdu () const
 
Vector4 & dUVdv () const
 
Vector3 & N () const
 
Vector3 & dNdu () const
 
Vector3 & dNdv () const
 
Vector4 & Cf () const
 
Vector4 & dCfdu () const
 
Vector4 & dCfdv () const
 
float r () const
 
float g () const
 
float b () const
 
float a () const
 
Vector3 & VEL () const
 
Vector3 & dVELdu () const
 
Vector3 & dVELdv () 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.
 
Iop * blending_shader
 
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.
www.thefoundry.co.uk