DD::Image::VertexContext Class Reference

List of all members.

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

Whether shaders should sample their textures.

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