Inherits DD::Image::Iop.
Inherited by DD::Image::IllumShader.
Public Member Functions | |
| Material (Node *) | |
| const char * | node_shape () const |
| unsigned | node_color () const |
| void | knobs (Knob_Callback) |
| virtual void | get_geometry_hash (Hash *geo_hashes) |
| bool | set_texturemap (ViewerContext *ctx, bool gl) |
| void | unset_texturemap (ViewerContext *ctx) |
| bool | shade_GL (ViewerContext *, GeoInfo &) |
| void | vertex_shader (VertexContext &) |
| void | fragment_shader (const VertexContext &, Pixel &out) |
| void | displacement_shader (const VertexContext &vtx, VArray &out) |
| float | displacement_bound () const |
| void | blending_shader (const Pixel &in, Pixel &out) |
| void | render_state (GeoInfoRenderState &state) |
Static Public Member Functions | |
| static void | default_lighting (const VertexContext &vtx, Pixel &out) |
Static Public Attributes | |
| static const Vector4 | gDefaultAmbient |
| static const Vector4 | gDefaultDiffuse |
| static const Vector4 | gDefaultSpecular |
| static const Vector4 | gDefaultEmission |
Protected Member Functions | |
| void | _validate (bool) |
| void | _request (int x, int y, int r, int t, ChannelMask, int count) |
| void | engine (int y, int x, int r, ChannelMask, Row &) |
| void | set_blending_shader (const VertexContext &vtx) |
Friends | |
| std::ostream & | operator<< (std::ostream &, const Material &) |
This subclass of Iop provides some convienence functions so that it is easier to shade a 3D geometry object, such as calls to calculate the blinn or other lighting models, and the output has been modified to produce an image of a sphere lit using this material.
To make a useful Material, you almost certainly need to override these Iop functions: bool Iop::shade_GL(ViewerContext*, GeoInfo&); void Iop::fragment_shader(Scene*, VertexContext*, Pixel& out);
| const char * Material::node_shape | ( | ) | const [virtual] |
Define the material op's shape in the DAG.
Reimplemented from DD::Image::Op.
| unsigned Material::node_color | ( | ) | const [virtual] |
All material operators default to a orangish color.
Reimplemented from DD::Image::Op.
| void Material::get_geometry_hash | ( | Hash * | geo_hashes | ) | [virtual] |
Hash up knobs that can affect the geometric hashes. Base class just calls its input.
References get_geometry_hash(), and DD::Image::Iop::input().
Referenced by DD::Image::SourceGeo::get_geometry_hash(), and get_geometry_hash().
| bool Material::shade_GL | ( | ViewerContext * | ctx, |
| GeoInfo & | geo | ||
| ) | [virtual] |
Your subclass must implement this. This version produces an error.
Reimplemented from DD::Image::Iop.
Reimplemented in DD::Image::IllumShader.
References DD::Image::Op::Class(), and DD::Image::Op::debug().
| void Material::vertex_shader | ( | VertexContext & | vtx | ) | [virtual] |
Default version does nothing.
Reimplemented from DD::Image::Iop.
Reimplemented in DD::Image::IllumShader.
References DD::Image::Op::Class(), and DD::Image::Op::debug().
| void Material::fragment_shader | ( | const VertexContext & | vtx, |
| Pixel & | out | ||
| ) | [virtual] |
Your subclass must implement this. This version produces an error.
Reimplemented from DD::Image::Iop.
References DD::Image::Op::Class(), and DD::Image::Op::debug().
Referenced by engine().
| void Material::engine | ( | int | y, |
| int | x, | ||
| int | r, | ||
| ChannelMask | channels, | ||
| Row & | outrow | ||
| ) | [protected, virtual] |
If a Material is used as an Iop, it produces an image of a sphere rendered with the shader atop a gray background, with a light at the upper-left corner.
Implements DD::Image::Iop.
References fragment_shader(), DD::Image::Row::get(), DD::Image::Iop::input0(), DD::Image::IopInfoOwner::r(), DD::Image::Vector3::set(), DD::Image::Vector4::set(), DD::Image::VertexContext::vdX, DD::Image::VertexContext::vdY, DD::Image::VertexContext::vP, and DD::Image::Row::writable().
| void DD::Image::Material::set_blending_shader | ( | const VertexContext & | vtx | ) | [inline, protected] |
Call this at the start of fragment shader for Materials that do lighting.
References DD::Image::VertexContext::blending_shader.
| std::ostream& operator<< | ( | std::ostream & | , |
| const Material & | |||
| ) | [friend] |
Not implemented in the library but you can define it