#include <c4d_shaderdata.h>
A data class for creating shader (channel shader) plugins.
Shader plugins appear in the popup menu of the channels in the Material Manager.
使用 RegisterShaderPlugin() to register a scene hook plugin.
Here are some general comments on the shader API:
Draw |
|
| virtual Bool | Draw ( BaseShader *sh, BaseObject *op, BaseTag *tag, BaseDraw *bd, BaseDrawHelp *bh) |
Init/Free Render |
|
| virtual INITRENDERRESULT | InitRender ( BaseShader *sh, const InitRenderStruct &irs) |
| virtual void | FreeRender ( BaseShader *sh) |
输出 |
|
| virtual 向量 | 输出 ( BaseShader *sh, ChannelData *cd) |
杂项 |
|
| virtual SHADERINFO | GetRenderInfo ( BaseShader *sh) |
| virtual BaseShader * | GetSubsurfaceShader ( BaseShader *sh, Float &bestmpl) |
OpenGl Mode |
|
| virtual UInt32 | GlMessageDummy ( BaseShader *sh, Int32 type, void *msgdata) |
| virtual Int32 | InitGLImage ( BaseShader *sh, BaseDocument *doc, BaseThread *th, BaseBitmap *bmp, Bool alpha, Int32 doccolorspace, Bool linearworkflow) |
| virtual void | DestroyGLImage ( BaseShader *sh, BaseDocument *doc) |
| virtual void | InvalidateGLImage ( BaseShader *sh, BaseDocument *doc) |
| virtual Bool | GetGLImageSize ( BaseShader *sh, BaseDocument *doc, Int32 s, Bool noScale, Int32 &w, Int32 &h) |
Additional Inherited Members |
|
Public Member Functions inherited from
NodeData
|
|
| NodeData () | |
| GeListNode * | Get (void) const |
| virtual Bool | 消息 ( GeListNode *node, Int32 type, void *data) |
| virtual void | GetBubbleHelp ( GeListNode *node, maxon::String &str) |
| virtual BaseDocument * | GetDocument ( GeListNode *node) |
| virtual Int32 | GetBranchInfo ( GeListNode *node, BranchInfo *info, Int32 max, GETBRANCHINFO flags) |
| virtual Bool | IsInstanceOf (const GeListNode *node, Int32 type) const |
| virtual Bool | IsDocumentRelated (const GeListNode *node, Bool &docrelated) const |
| virtual Bool | Init ( GeListNode *node) |
| virtual void | Free ( GeListNode *node) |
| virtual Bool | 读取 ( GeListNode *node, HyperFile *hf, Int32 level) |
| virtual Bool | Write ( GeListNode *node, HyperFile *hf) |
| virtual Bool | CopyTo ( NodeData *dest, GeListNode *snode, GeListNode *dnode, COPYFLAGS flags, AliasTrans *trn) |
| virtual Bool | GetDDescription ( GeListNode *node, 描述 *description, DESCFLAGS_DESC &flags) |
| virtual Bool | GetDParameter ( GeListNode *node, const DescID &id, GeData &t_data, DESCFLAGS_GET &flags) |
| virtual Bool | SetDParameter ( GeListNode *node, const DescID &id, const GeData &t_data, DESCFLAGS_SET &flags) |
| virtual Bool | GetDEnabling ( GeListNode *node, const DescID &id, const GeData &t_data, DESCFLAGS_ENABLE flags, const BaseContainer *itemdesc) |
| virtual Bool | TranslateDescID ( GeListNode *node, const DescID &id, DescID &res_id, C4DAtom *&res_at) |
Public Member Functions inherited from
BaseData
|
|
| BaseData () | |
| virtual | ~BaseData (void) |
| void | Destructor (void) |
Protected Attributes inherited from
NodeData
|
|
| GeListNode * | private_link |
|
virtual |
Called to draw additional information for the shader in the editor's view.
| [in] | sh |
The
BaseShader
connected with the
ShaderData
instance. Equal to
static_cast
<
ShaderData
*>
Get()
. Provided for speed and convenience.
Cinema 4D
owns the pointed shader.
|
| [in] | op | The active object. Cinema 4D owns the pointed object. |
| [in] | tag | The active tag. The caller owns the pointed tag. |
| [in] | bd | The editor's view. The caller owns the pointed view. |
| [in] | bh | The helper for the editor's view. The caller owns the pointed base draw helper. |
|
virtual |
Called to initialize resources for the render.
| [in] | sh |
The
BaseShader
connected with the
ShaderData
instance. Equal to
static_cast
<
ShaderData
*>
Get()
. Provided for speed and convenience.
Cinema 4D
owns the pointed shader.
|
| [in] | irs | A struct with information about the upcoming rendering. |
|
virtual |
Called to free any resources allocated in InitRender .
| [in] | sh |
The
BaseShader
connected with the
ShaderData
instance. Equal to
static_cast
<
ShaderData
*>
Get()
. Provided for speed and convenience.
Cinema 4D
owns the pointed shader.
|
|
virtual |
Called for each point of the visible surface of a shaded object to calculate and return the channel color for the point cd -> p .
| [in] | sh |
The
BaseShader
connected with the
ShaderData
instance. Equal to
static_cast
<
ShaderData
*>
Get()
. Provided for speed and convenience.
Cinema 4D
owns the pointed shader.
|
| [in] | cd | The channel data to use and/or modify. The caller owns the pointed channel data. |
|
virtual |
Called to get information about what the shader plugin requires from the render and what it will return.
| [in] | sh |
The
BaseShader
connected with the
ShaderData
instance. Equal to
static_cast
<
ShaderData
*>
Get()
. Provided for speed and convenience.
Cinema 4D
owns the pointed shader.
|
|
virtual |
Called to return the best SSS sub-shader for the shader.
| [in] | sh |
The
BaseShader
connected with the
ShaderData
instance. Equal to
static_cast
<
ShaderData
*>
Get()
. Provided for speed and convenience.
Cinema 4D
owns the pointed shader.
|
| [in] | bestmpl |
The current best (smallest) Median Path Length found so far.
This value should never be changed by the code; it is auto adjusted only by the SSS shader and should be passed directly to the subshaders (see example code above). |
|
virtual |
To ensure SDK compatibility Private .
|
virtual |
Extended OpenGL mode. This mode is not documented. See c4d_gl.h for definitions.
|
virtual |
Extended OpenGL mode. This mode is not documented. See c4d_gl.h for definitions.
|
virtual |
Extended OpenGL mode. This mode is not documented. See c4d_gl.h for definitions.
|
virtual |
Called before the preview image for the shader is calculated.
| [in] | sh |
The
BaseShader
connected with the
ShaderData
instance. Equal to
static_cast
<
ShaderData
*>
Get()
. Provided for speed and convenience.
Cinema 4D
owns the pointed shader.
|
| [in] | doc | The host document of the shader. Cinema 4D owns the pointed document. |
| [in] | s | The exponent of the maximum texture size chosen in the 首选项 or the Material Editor tab. ( 2 ^ s = maximum preview size) |
| [in] | noScale | true if the user has selected the "No Scaling" option in the material. |
| [in] | w | Assign the width for the preview image. |
| [in] | h | Assign the height for the preview image. |