BaseShader Class Reference

#include <c4d_basechannel.h>

Inheritance diagram for BaseShader:

详细描述

Represents a shader in the shader tree of a channel. Call BaseChannel::GetShader() to retrieve an instance.

注意
Has to be created with Alloc() and destroyed with Free() 。使用 AutoAlloc to automate the allocation and destruction based on scope.

私有成员函数

  BaseShader ()
  ~BaseShader ()

Alloc/Free

static BaseShader Alloc ( Int32 type)
static void  Free ( BaseShader *&ps)

导航

BaseShader GetNext (void)
BaseShader GetPred (void)
BaseShader GetUp (void)
BaseShader GetDown (void)
BaseShader GetDownLast (void)

Init/Free Render

INITRENDERRESULT   InitRender (const InitRenderStruct &is)
void  FreeRender (void)

Sample

向量   Sample ( ChannelData *cd)
向量   SampleBump ( ChannelData *cd, SAMPLEBUMP bumpflags)

杂项

BaseBitmap GetBitmap (void)
SHADERINFO   GetRenderInfo (void)
Bool   比较 ( BaseShader *dst)
Bool   IsColorManagementOff ( BaseDocument *doc)
BaseShader GetSubsurfaceShader ( Float &bestmpl)
Bool   HasGPURendererSupport () const
Bool   BakeShaderIntoBaseBitmap ( BaseBitmap &outBmp, BaseDocument &doc, BaseThread *parentThread, Bool doAlpha, Int32 colorSpace, Bool linearworkflow, Bool useHDR, Int xmin, Int xmax, Int ymin, Int ymax)

Extended OpenGL mode

void  DestroyGLImage ( BaseDocument *doc)
void  InvalidateGLImage ( BaseDocument *doc)
void  ProcessEditorPreviewImage (const ProcessEditorPreviewImageFn &fn)

Additional Inherited Members

-  Public Member Functions inherited from BaseList2D
const Char GetViewportRenderId ( VIEWPORT_RENDER_ID typeId) const
BaseList2D GetNext ()
BaseList2D GetPred ()
void  SetBit ( Int32 mask)
Bool   GetBit ( Int32 mask) const
void  DelBit ( Int32 mask)
void  ToggleBit ( Int32 mask)
Int32   GetAllBits () const
void  SetAllBits ( Int32 bits)
void  SetBitEx ( Int32 mask, Int32 flags)
BaseContainer   GetData ()
void  SetData (const BaseContainer &bc, Bool add=true)
const BaseContainer GetDataInstance () const
BaseContainer GetDataInstance ()
const BaseContainer GetDataInstanceRef () const
BaseContainer GetDataInstanceRef ()
String   GetName () const
void  SetName (const maxon::String &name)
String   GetBubbleHelp ()
Bool   TransferGoal ( BaseList2D *dst, Bool undolink)
Bool   TransferMarker ( BaseList2D *dst) const
Bool   比例 ( Float scale)
Bool   编辑 ()
void  GetIcon ( IconData *dat)
GeListHead GetNLARoot ()
BaseList2D AnimationLayerRemap ( BaseObject **layer=nullptr)
String   GetTypeName ()
BaseList2D GetMain () const
void  InsertTrackSorted ( CTrack *track)
Bool   AddEventNotification ( BaseList2D *bl, NOTIFY_EVENT eventid, NOTIFY_EVENT_FLAG flags, const BaseContainer *data)
Bool   RemoveEventNotification ( BaseDocument *doc, BaseList2D *bl, NOTIFY_EVENT eventid)
Bool   FindEventNotification ( BaseDocument *doc, BaseList2D *bl, NOTIFY_EVENT eventid)
Bool   SetDescIDState (const DescID &id, DESCIDSTATE descidstate)
DESCIDSTATE   GetDescIDState (const DescID &id, Bool tolerant) const
GeListHead GetOverrideRoot ()
BaseOverride GetFirstOverride ()
GeListHead GetShaderRepositoryRoot ()
GeListHead GetHiddenShaderRoot ()
maxon::NimbusInterface *  GetNimbusRef (const maxon::Id &spaceId) const
maxon::Result < maxon::NimbusInterface * >  GetOrCreateNimbusRef (const maxon::Id &spaceId)
void  RemoveNimbusRef (const maxon::Id &spaceId)
maxon::Result < maxon::HashMap < maxon::Id , maxon::ForwardRef < maxon::NimbusRef > > >  GetAllNimbusRefs () const
Bool   IsNodeBased () const
void  GetMarkerStampEx ( UInt32 *l1, UInt32 *l2)
const GeMarker GetMarker () const
void  SetMarker (const GeMarker &m)
Bool   AddUniqueID ( Int32 appid, const Char *const mem, Int bytes)
Bool   FindUniqueID ( Int32 appid, const Char *&mem, Int &bytes) const
Int32   GetUniqueIDCount () const
Bool   GetUniqueIDIndex ( Int32 idx, Int32 &id, const Char *&mem, Int &bytes) const
Bool   SetAnimatedParameter ( CTrack *track, const DescID &id, const GeData &t_data1, const GeData &t_data2, Float mix, DESCFLAGS_SET flags)
Bool   GetAnimatedParameter (const DescID &id, GeData &t_data1, GeData &t_data2, Float &mix, DESCFLAGS_GET flags)
BaseShader GetFirstShader () const
void  InsertShader ( BaseShader *shader, BaseShader *pred=nullptr)
void  ClearKeyframeSelection ()
Bool   FindKeyframeSelection (const DescID &id)
Bool   SetKeyframeSelection (const DescID &id, Bool selection)
Bool   KeyframeSelectionContent ()
LayerObject GetLayerObject ( BaseDocument *doc)
Bool   SetLayerObject ( LayerObject *layer)
const LayerData GetLayerData ( BaseDocument *doc, Bool rawdata=false)
Bool   SetLayerData ( BaseDocument *doc, const LayerData &data)
GeListHead GetCTrackRoot ()
CTrack GetFirstCTrack ()
CTrack FindCTrack (const DescID &id)
-  Public Member Functions inherited from GeListNode
GeListNode GetNext ()
GeListNode GetPred ()
GeListNode GetDown ()
GeListNode GetUp ()
GeListNode GetDownLast ()
void  InsertBefore ( GeListNode *bl)
void  InsertAfter ( GeListNode *bl)
void  InsertUnder ( GeListNode *bl)
void  InsertUnderLast ( GeListNode *bl)
void  移除 ()
GeListHead GetListHead ()
Int32   GetNodeID ( Int32 index=0) const
template<typename CAST >
const CAST *  GetNodeData ( Int32 index=0) const
template<typename CAST >
CAST *  GetNodeData ( Int32 index=0)
void  SetCustomData ( GeListNode *node)
GeListNode GetCustomData ()
BaseDocument GetDocument ()
Int32   GetBranchInfo ( BranchInfo *info, Int32 max, GETBRANCHINFO flags)
Bool   IsDocumentRelated ()
Int32   GetInfo ()
Bool   GetNBit ( NBIT bit) const
UInt32   GetNBitMask ( Int32 index) const
Bool   ChangeNBit ( NBIT bit, NBITCONTROL bitmode)
-  Public Member Functions inherited from C4DAtom
Int32   GetType () const
Int32   GetRealType () const
Int32   GetDiskType () const
Bool   IsInstanceOf ( Int32 id) const
Int32   GetClassification () const
Bool   消息 ( Int32 type, void *data=nullptr)
Bool   MultiMessage ( MULTIMSG_ROUTE flags, Int32 type, void *data)
C4DAtom GetClone ( COPYFLAGS flags, AliasTrans *trn)
Bool   CopyTo ( C4DAtom *dst, COPYFLAGS flags, AliasTrans *trn)
Bool   读取 ( HyperFile *hf, Int32 id, Int32 level)
Bool   Write ( HyperFile *hf)
Bool   ReadObject ( HyperFile *hf, Bool readheader)
Bool   WriteObject ( HyperFile *hf)
Bool   GetDescription ( 描述 *description, DESCFLAGS_DESC flags)
Bool   GetParameter (const DescID &id, GeData &t_data, DESCFLAGS_GET flags)
Bool   SetParameter (const DescID &id, const GeData &t_data, DESCFLAGS_SET flags)
DynamicDescription GetDynamicDescription ()
Bool   GetEnabling (const DescID &id, const GeData &t_data, DESCFLAGS_ENABLE flags, const BaseContainer *itemdesc)
Bool   TranslateDescID (const DescID &id, DescID &res_id, C4DAtom *&res_at)
UInt32   GetDirty ( DIRTYFLAGS flags) const
void  SetDirty ( DIRTYFLAGS flags)
UInt32   GetHDirty ( HDIRTYFLAGS mask) const
void  SetHDirty ( HDIRTYFLAGS mask)
-  Static Public Member Functions inherited from BaseList2D
static BaseList2D Alloc ( Int32 type)
static void  Free ( BaseList2D *&bl)
-  Static Public Attributes inherited from BaseList2D
static const Int32   SETBIT_FLAG_NODIRTY
static const Int32   SETBIT_FLAG_REMOVE

构造函数 & 析构函数文档编制

◆  BaseShader()

BaseShader () private

◆  ~BaseShader()

~ BaseShader () private

成员函数文档编制

◆  Alloc()

static BaseShader * Alloc ( Int32   type )
static

Allocates a shader. Destroy the allocated shader with Free() 。使用 AutoAlloc to automate the allocation and destruction based on scope.

参数
[in] type The shader type: Shader Types
返回
The allocated shader, or nullptr if the allocation failed.

◆  Free()

static void Free ( BaseShader *&  ps )
static

Destructs shaders allocated with Alloc() 。使用 AutoAlloc to automate the allocation and destruction based on scope.

参数
[in] ps The shader to destruct. If the pointer is nullptr nothing happens. The pointer is assigned nullptr afterwards.

◆  GetNext()

BaseShader * GetNext ( void  )

Gets the next shader in the list. Convenience version of GeListNode::GetNext() returning a BaseShader *.

返回
The next shader, or nullptr if there is none. Cinema 4D owns the pointed shader.

◆  GetPred()

BaseShader * GetPred ( void  )

Gets the previous shader in the list. Convenience version of GeListNode::GetPred() returning a BaseShader *.

返回
The previous shader, or nullptr if there is none. Cinema 4D owns the pointed shader.

◆  GetUp()

BaseShader * GetUp ( void  )

Gets the parent shader of the list node. Convenience version of GeListNode::GetUp() returning a BaseShader *.

返回
The parent shader, or nullptr if there is none. Cinema 4D owns the pointed shader.

◆  GetDown()

BaseShader * GetDown ( void  )

Gets the first child shader of the list node. Convenience version of GeListNode::GetDown() returning a BaseShader *.

返回
The first child shader, or nullptr if there is none. Cinema 4D owns the pointed shader.

◆  GetDownLast()

BaseShader * GetDownLast ( void  )

Gets the last child shader of the list node. Convenience version of GeListNode::GetDownLast() returning a BaseShader *.

返回
The last child shader, or nullptr if there is none. Cinema 4D owns the pointed shader.

◆  InitRender()

INITRENDERRESULT InitRender ( const InitRenderStruct is )

Calls ShaderData::InitRender() for the corresponding shader plugin.

警告
It is mandatory to call this method before any Sample() , SampleBump() or GetBitmap() 函数。
参数
[in] is A struct with information about the upcoming render. The caller owns the pointed struct.
返回
The result of the initialization: INITRENDERRESULT

◆  FreeRender()

void FreeRender ( void  )

Frees all resources used by this shader that were allocated by calling InitRender() .

◆  Sample()

向量 Sample ( ChannelData cd )

Calls ShaderData::Output() for the corresponding shader plugin. The channel color for the point cd -> p is calculated.

注意
This method has to be called within a pair of InitRender() / FreeRender() calls.
参数
[in] cd A pointer to a channel data struct to use for the sampling. The caller owns the pointed ChannelData .
返回
The calculated color.

◆  SampleBump()

向量 SampleBump ( ChannelData cd ,
SAMPLEBUMP   bumpflags  
)

This function allows you to calculate bump mapping for a shader (and its children) with the same algorithm as Cinema 4D does.
The method returns the delta vector that is added to the normal. The resulting normal is calculated by

n_dst = !(n_src + SampleBump ( SAMPLEBUMP _0)); // Normalize result

where n_src is the original normal and n_dst is the bumped normal.

注意
This method has to be called within a pair of InitRender() / FreeRender() calls.
Also, the BaseVolumeData::ddu and BaseVolumeData::ddv vectors have to be initialized. Use VolumeData::GetDUDV() or set them manually.
参数
[in] cd A pointer to a channel data struct to use for the sampling the bump. The caller owns the pointed ChannelData .
[in] bumpflags The flags: SAMPLEBUMP
返回
The delta normal.

◆  GetBitmap()

BaseBitmap * GetBitmap ( void  )

Gets the bitmap for shaders of type Xbitmap .

注意
This method has to be called within a pair of InitRender() / FreeRender() calls.
返回
The bitmap of shaders of type Xbitmap , otherwise nullptr .
警告
The return bitmap must be accessed as read-only.

◆  GetRenderInfo()

SHADERINFO GetRenderInfo ( void  )

Calls ShaderData::GetRenderInfo() for the corresponding shader plugin. This retrieves information about what the plugin requires from the raytracer and what it will return.

返回
The return values are: SHADERINFO

◆  Compare()

Bool 比较 ( BaseShader dst )

Checks if *this 类似 *dst .

参数
[in] dst The shader to compare with. The caller owns the pointed shader.
返回
true if the shaders are the same, otherwise false .

◆  IsColorManagementOff()

Bool IsColorManagementOff ( BaseDocument doc )

Checks if color management is disabled for shaders within reflectance, bump, alpha, displacement or normal channels when linear workflow is enabled.

参数
[in] doc The document to check color management. The caller owns the pointed document.
返回
true if color management is disabled, otherwise false .

◆  GetSubsurfaceShader()

BaseShader * GetSubsurfaceShader ( Float bestmpl )

Gets the best SSS shader.

注意
If the shader uses subshaders it is crucial to call their GetSubsurfaceShader() method override so if any subshaders are in fact SSS shaders they are used and initialized properly.
另请参阅
ShaderData::GetSubsurfaceShader()
参数
[in] bestmpl The current best (smallest) Median Path Length.
返回
The best SSS shader.

◆  HasGPURendererSupport()

Bool HasGPURendererSupport ( ) const

Checks if the shader is supported by the GPU Renderer.

由于
R19
返回
true if the shader is natively supported by the GPU Renderer, otherwise false .

◆  BakeShaderIntoBaseBitmap()

Bool BakeShaderIntoBaseBitmap ( BaseBitmap outBmp ,
BaseDocument doc ,
BaseThread parentThread ,
Bool   doAlpha ,
Int32   colorSpace ,
Bool   linearworkflow ,
Bool   useHDR ,
Int   xmin ,
Int   xmax ,
Int   ymin ,
Int   ymax  
)

Bakes the shader into a BaseBitmap

由于
R21
参数
[out] outBmp The BaseBitmap that is baked into.
[in] doc The document.
[in] parentThread The parent thread used to check for interruption The caller owns the pointed BaseThread .
[in] doAlpha Pass true if alpha should be considered.
[in] colorSpace The documents colorspace.
[in] linearworkflow Pass true when LWF is enabled.
[in] useHDR Pass true when HDR should be considered.
[in] xmin The min in x.
[in] xmax The max in x.
[in] ymin The min in y.
[in] ymax The max in y.
返回
true if baking succeeded, otherwise false .

◆  DestroyGLImage()

void DestroyGLImage ( BaseDocument doc )

Extended OpenGL mode. This mode is not documented. See c4d_gl.h for definitions.

◆  InvalidateGLImage()

void InvalidateGLImage ( BaseDocument doc )

Extended OpenGL mode. This mode is not documented. See c4d_gl.h for definitions.

◆  ProcessEditorPreviewImage()

void ProcessEditorPreviewImage ( const ProcessEditorPreviewImageFn fn )

Extended OpenGL mode. This mode is not documented. See c4d_gl.h for definitions.

SAMPLEBUMP
SAMPLEBUMP
定义: ge_prepass.h:4755
BaseShader::SampleBump
Vector SampleBump(ChannelData *cd, SAMPLEBUMP bumpflags)
定义: c4d_basechannel.h:138