3ds Max C++ API Reference
UnifiedRenderer Class Referenceabstract

Unifies functionality for, both, interactive (ActiveShade) and offline (Production) rendering. More...

#include <UnifiedRenderer.h>

+ Inheritance diagram for UnifiedRenderer:

Public Member Functions

 UnifiedRenderer ()
 
virtual ~UnifiedRenderer ()
 
virtual ClassDescriptorGetClassDescriptor () const =0
 Returns a reference to the class descriptor that defines this renderer plugin. More...
 
 ClassDescriptor ()
 The constructor initializes IMtlRender_Compatibility_Renderer. More...
 
virtual ~ClassDescriptor ()
 
virtual UnifiedRendererCreateRenderer (const bool loading)=0
 Returns a new instance of the renderer plugin. More...
 
virtual int IsPublic () override
 This default implementation returns true. More...
 
virtual voidCreate (BOOL loading) override final
 This method is final to enforce going through CreateRenderer(). More...
 
virtual SClass_ID SuperClassID () override final
 Returns RENDERER_CLASS_ID. More...
 
virtual const MCHARCategory () override
 This default implementation returns "Renderer". More...
 
virtual const MCHARInternalName () override=0
 Made pure virtual to enforce implementation. More...
 
virtual HINSTANCE HInstance () override=0
 Made pure virtual to enforce implementation. More...
 
Render Session Creation


virtual std::unique_ptr< IOfflineRenderSessionCreateOfflineSession (IRenderSessionContext &sessionContext)=0
 Creates a new render session, for offline (non-interactive) rendering. More...
 
virtual std::unique_ptr< IInteractiveRenderSessionCreateInteractiveSession (IRenderSessionContext &sessionContext)=0
 Creates a new render session, for interactive (ActiveShade) rendering. More...
 
virtual bool SupportsInteractiveRendering () const =0
 Returns whether this renderer supports interactive, that is: if an interactive render session can be created with CreateInteractiveSession(). More...
 
File I/O


virtual IOResult Load_UnifiedRenderer (ILoad &iload)=0
 Replaces ReferenceMaker::Load() for loading plugin-specific data. More...
 
virtual IOResult Save_UnifiedRenderer (ISave &isave) const =0
 Replaces ReferenceMaker::Save() for loading plugin-specific data. More...
 
Interface Access


virtual voidGetInterface_UnifiedRenderer (ULONG id)=0
 Replaces Animatable::GetInterface(ULONG), which is implemented as final by UnifiedRenderer to enforce correct behaviour. More...
 
virtual BaseInterfaceGetInterface_UnifiedRenderer (Interface_ID id)=0
 Replaces InterfaceServer::GetInterface(Interface_ID), which is implemented as final by UnifiedRenderer to enforce correct behaviour. More...
 
Scene Options


virtual bool MotionBlurIgnoresNodeProperties () const =0
 Enables the renderer to override the behaviour of per-object motion blur options. More...
 
Offline Rendering


This method is final to enforce usage of the render session.

All the data passed to this method is exposed through class IRenderSessionContext.

virtual int Open (INode *scene, INode *vnode, ViewParams *viewPar, RendParams &rp, HWND hwnd, DefaultLight *defaultLights, int numDefLights, RendProgressCallback *prog) override final
 This method is final to enforce usage of the render session. All the data passed to this method is exposed through class IRenderSessionContext. More...
 
virtual int Render (TimeValue t, Bitmap *tobm, FrameRendParams &frp, HWND hwnd, RendProgressCallback *prog, ViewParams *viewPar) override final
 This method is final to enforce usage of the render session. All the data passed to this method is exposed through class IRenderSessionContext. More...
 
virtual void Close (HWND hwnd, RendProgressCallback *prog) override final
 This method is final to enforce usage of the render session. All the data passed to this method is exposed through class IRenderSessionContext. More...
 
virtual bool ApplyRenderEffects (TimeValue t, Bitmap *pBitmap, bool updateDisplay) override final
 This method is final to enforce usage of the render session. It applies the render effects that are active in the current render session. More...
 
Interactive Rendering


Internally implements the IInteractiveRenderer interface.

virtual IInteractiveRenderGetIInteractiveRender () override final
 
Process Control


Returns whether the render supports the stop command (and button).

See Renderer::IsStopSupported().

virtual bool IsStopSupported () const override=0
 Returns whether the render supports the pause command (and button). See Renderer::IsPauseSupported(). More...
 
virtual PauseSupport IsPauseSupported () const override=0
 Returns whether the render supports the pause command (and button). See Renderer::IsPauseSupported(). More...
 
virtual void StopRendering () override final
 This method forwards to the render session. See IOfflineRenderSession::StopRendering(). More...
 
virtual void PauseRendering () override final
 This method forwards to the render session. See IOfflineRenderSession::PauseRendering(). More...
 
virtual void ResumeRendering () override final
 This method forwards to the render session. See IOfflineRenderSession::ResumeRendering(). More...
 
Parameter Access
virtual int NumParamBlocks () override=0
 See Animatable::GetParamBlock(int). More...
 
virtual IParamBlock2GetParamBlock (int i) override=0
 See Animatable::GetParamBlock(int). More...
 
virtual IParamBlock2GetParamBlockByID (BlockID id) override=0
 See Animatable::GetParamBlockByID(BlockID). More...
 
virtual void ResetParams () override
 See Renderer::ResetParams(). The default implementation resets all the parameter blocks. More...
 
Tabbed Dialog


Made pure virtual to force implementation.

The implementation should create at least one tab, in which the render settings UI will be displayed.

virtual void AddTabToDialog (ITabbedDialog *dialog, ITabDialogPluginTab *tab) override=0
 Default implementation refuses radiosity and ray-tracer tabs, to enable only showing the renderer's own tabs. More...
 
virtual int AcceptTab (ITabDialogPluginTab *tab) override
 Default implementation refuses radiosity and ray-tracer tabs, to enable only showing the renderer's own tabs. More...
 
Implementation of classes ReferenceTarget / ReferenceMaker


virtual RefTargetHandle Clone (RemapDir &remap) override
 Creates a new renderer plugin, cloned/copied from this one. More...
 
virtual RefResult NotifyRefChanged (const Interval &changeInt, RefTargetHandle hTarget, PartID &partID, RefMessage message, BOOL propagate) override
 This default implementation ignores all reference messages, as renderers typically don't need to react to them. More...
 
virtual IOResult Load (ILoad *iload) override final
 This method is final to enable UnifiedRenderer to load its own data. Use Load_UnifiedRenderer() to load data in the sub-class. More...
 
virtual IOResult Save (ISave *isave) override final
 This method is final to enable UnifiedRenderer to load its own data. Use Save_UnifiedRenderer() to load data in the sub-class. More...
 
virtual int NumRefs () override=0
 Made pure virtual to enforce implementation. More...
 
virtual RefTargetHandle GetReference (int i)=0
 Made pure virtual to enforce implementation. More...
 
virtual void SetReference (int i, RefTargetHandle rtarg)=0
 Made pure virtual to enforce implementation. More...
 
Implementation of class Animatable, misc.


This method is final to enable UnifiedRenderer to expose its own interfaces correctly.

Use GetInterface_UnifiedRenderer(ULONG) to expose interfaces in the sub-class.

virtual voidGetInterface (ULONG id) override final
 This method is final to enable UnifiedRenderer to expose its own interfaces correctly. More...
 
virtual BaseInterfaceGetInterface (Interface_ID id) override final
 This method is final to enable UnifiedRenderer to expose its own interfaces correctly. More...
 
virtual Class_ID ClassID () override final
 Call forwarded to class descriptor (see UnifiedRenderer::ClassDescriptor). More...
 
virtual SClass_ID SuperClassID () override final
 Returns RENDERER_CLASS_ID. More...
 
virtual void GetClassName (MSTR &s, bool localized=true) const override final
 Call forwarded to class descriptor (see UnifiedRenderer::ClassDescriptor). More...
 
virtual int NumSubs () override
 This default implementation returns the number of parameter blocks. More...
 
virtual MSTR SubAnimName (int i, bool localized=true) override
 This default implementation returns the name of the parameter block at index i. More...
 
virtual AnimatableSubAnim (int i) override
 This default implementation returns the param block at index i. More...
 
virtual void DeleteThis () override final
 Calls: "delete this" and performs cleanup. More...
 
- Public Member Functions inherited from Renderer
virtual RendParamDlgCreateParamDialog (IRendParams *ir, BOOL prog=FALSE)=0
 This method is called to create and return a pointer to an instance of the RendParamDlg class. More...
 
virtual int GetAAFilterSupport ()
 
virtual bool SupportsTexureBaking ()
 Renderers which support texture baking should override this method to return true. More...
 
virtual bool SupportsCustomRenderPresets ()
 A renderer should override this method to return true if it supports any custom preset categories beyond the standard categories. More...
 
virtual int RenderPresetsFileVersion ()
 Return a number indicating the current version of the renderer's custom preset. More...
 
virtual BOOL RenderPresetsIsCompatible (int version)
 Return true if the renderer can load presets of the indicated version. More...
 
virtual const MCHARRenderPresetsMapIndexToCategory (int catIndex)
 Returns the UI name of a supported custom category. More...
 
virtual int RenderPresetsMapCategoryToIndex (const MCHAR *category)
 Returns the index of a supported custom category. More...
 
virtual int RenderPresetsPreSave (ITargetedIO *root, BitArray saveCategories)
 called before a render preset is saved. More...
 
virtual int RenderPresetsPostSave (ITargetedIO *, BitArray)
 called after a preset is saved. More...
 
virtual int RenderPresetsPreLoad (ITargetedIO *root, BitArray saveCategories)
 called before a preset is loaded. More...
 
virtual int RenderPresetsPostLoad (ITargetedIO *root, BitArray loadCategories)
 called after a preset is loaded. More...
 
virtual bool CompatibleWithAnyRenderElement () const =0
 Returns whether this renderer plugin is compatible with the given render element. More...
 
virtual bool CompatibleWithRenderElement (IRenderElement &pIRenderElement) const =0
 Returns whether this renderer plugin is compatible with the given render element. More...
 
virtual void GetVendorInformation (MSTR &info) const =0
 Platform information concerning the renderer. More...
 
virtual void GetPlatformInformation (MSTR &info) const =0
 Platform information concerning the renderer. More...
 
virtual bool HasRequirement (Requirement requirement)=0
 Returns true if the renderer has the given requirement, or returns false otherwise. More...
 
- Public Member Functions inherited from ReferenceTarget
virtual BOOL IsRefTarget ()
 Checks if this is a ReferenceTarget. More...
 
CoreExport RefResult TestForLoop (const Interval &refInterval, RefMakerHandle hmaker)
 Tests for a cyclical reference. More...
 
CoreExport BOOL HasDependents ()
 Checks if a ReferenceTarget has references. More...
 
CoreExport BOOL HasRealDependents ()
 Checks if this has Real (Strong) Dependents. More...
 
void BeginDependencyTest ()
 Starts Dependency Test. More...
 
BOOL EndDependencyTest ()
 Ends Dependency Test. More...
 
virtual void RefAdded (RefMakerHandle rm)
 Called after a reference is made to a target. More...
 
virtual void RefAddedUndoRedo (RefMakerHandle rm)
 Called after a reference is made to a target because of undo or redo. More...
 
virtual void RefDeleted ()
 Called after a references to this is deleted. More...
 
virtual void RefDeletedUndoRedo ()
 Called after a references to this is deleted because of undo or redo. More...
 
CoreExport RefResult DeleteAllRefsToMe ()
 Deletes all references to this ReferenceTarget. More...
 
CoreExport RefResult TransferReferences (RefTargetHandle oldTarget, BOOL delOld=FALSE)
 Transfers all the references from oldTarget to this. More...
 
CoreExport int DoEnumDependents (DependentEnumProc *dep)
 Begins an enumeration that searches back in the dependency network. More...
 
virtual CoreExport void BaseClone (ReferenceTarget *from, ReferenceTarget *to, RemapDir &remap)
 This method copies base class data from an object to its clone. More...
 
virtual CoreExport RefResult NotifyDependents (const Interval &changeInt, PartID partID, RefMessage message, SClass_ID sclass=NOTIFY_ALL, BOOL propagate=TRUE, RefTargetHandle hTarg=NULL, NotifyDependentsOption notifyDependentsOption=REFNOTIFY_ALLOW_OPTIMIZATIONS)
 Notify all dependent RefMakers concerned with the message. More...
 
void FlagDependents (TimeValue t, PartID which=PART_PUT_IN_FG)
 This sends the REFMSG_FLAGDEPENDENTS message up the pipeline. More...
 
virtual void NotifyForeground (TimeValue t)
 This method is called to flag dependents into the FG. More...
 
virtual void NotifyTarget (int message, ReferenceMaker *hMaker)
 Sends messages to ReferenceTargets. More...
 
CoreExport ReferenceTarget ()
 Constructor. More...
 
virtual CoreExport RefResult AutoDelete ()
 Deletes the object when it has no more real dependents. More...
 
CoreExport RefResult MaybeAutoDelete ()
 Deletes the object when it has no more real dependents. More...
 
- Public Member Functions inherited from ReferenceMaker
CoreExport RefResult ReplaceReference (int which, RefTargetHandle newtarg, BOOL delOld=TRUE)
 Used when cloning reference makers. More...
 
CoreExport RefResult DeleteAllRefsFromMe ()
 Deletes all references from this ReferenceMaker. More...
 
CoreExport RefResult DeleteAllRefs ()
 Deletes all references both to and from this item. More...
 
CoreExport RefResult DeleteReference (int i)
 Deletes the specified reference. More...
 
virtual BOOL CanTransferReference (int i)
 Tells whether this reference can be transfered. More...
 
CoreExport ReferenceSaveManagerGetReferenceSaveManager ()
 Access the ReferenceSaveManager of this ReferenceMaker. More...
 
virtual int RemapRefOnLoad (int iref)
 Used to load old files with references. More...
 
virtual CoreExport void RescaleWorldUnits (float f)
 Rescale size of all world units in reference hierarchy. More...
 
virtual CoreExport void EnumAuxFiles (AssetEnumCallback &assetEnum, DWORD flags)
 Enumerate auxiliary files (e.g. bitmaps) More...
 
virtual CoreExport void SaveEnum (SaveEnumProc &sep, BOOL isNodeCall=0)
 The default save enumeration. More...
 
virtual CoreExport bool SpecifySaveReferences (ReferenceSaveManager &referenceSaveManager)
 Used to specify reference slot remapping during scene file save. More...
 
CoreExport int DoEnumDependents (DependentEnumProc *dep)
 Begins an enumeration that searches back in the dependency network. More...
 
CoreExport bool EnumRefHierarchy (RefEnumProc &proc, bool includeCustAttribs=true, bool includeIndirectRefs=true, bool includeNonPersistentRefs=true, bool preventDuplicatesViaFlag=true)
 This method provides a general purpose reference enumerator. More...
 
CoreExport int FindRef (RefTargetHandle rtarg)
 Get the index of the ReferenceTarget. More...
 
virtual BOOL IsRefMaker ()
 Tells whether it is a ReferenceMaker. More...
 
virtual BOOL IsRealDependency (ReferenceTarget *rtarg)
 Returns whether this is a "real" (strong) dependency or not. More...
 
virtual BOOL ShouldPersistWeakRef (RefTargetHandle rtarg)
 Specifies whether a weak reference is to be persisted on a partial load or save. More...
 
CoreExport ReferenceMaker ()
 Constructor. More...
 
CoreExport void DeleteMe ()
 Deletes an instance of this class. More...
 
- Public Member Functions inherited from Animatable
virtual void FreeCaches ()
 
virtual int NumChildren ()
 
virtual AnimatableChildAnim (int i)
 
virtual CoreExport MSTR NodeName ()
 
virtual void EditTrack ()
 
virtual CoreExport BOOL SubAnimSetKeyBufferPresent (int subNum)
 returns true if the sub-anim has a "Set Key" buffer present More...
 
virtual BOOL SetKeyBufferPresent ()
 returns true if there is a "Set Key" buffer present More...
 
virtual CoreExport void SubAnimCommitSetKeyBuffer (TimeValue t, int subNum)
 Commit any "Set Key" buffers on the given sub-anim. More...
 
virtual void CommitSetKeyBuffer (TimeValue t)
 Commit any "Set Key" buffers. More...
 
virtual CoreExport void SubAnimRevertSetKeyBuffer (int subNum)
 Revert any "Set Key" buffers on the given sub-anim. More...
 
virtual void RevertSetKeyBuffer ()
 Revert any "Set Key" buffers. More...
 
virtual LRESULT CALLBACK TrackViewWinProc (HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam)
 This function is obsolete. More...
 
virtual bool IsParamBlockDesc2Used (ParamBlockDesc2 *desc)
 Returns true if the passed description is being used. More...
 
virtual bool GetMacroRecorderName (bool used_as_rhs_value, MSTR &objectSpecifiedName)
 This method is called to access the object specified name to use for the Maxscript macrorecorder. More...
 
CoreExport Animatable ()
 Constructor. More...
 
virtual void GetClassName (MSTR &s) MAX_SEALED
 
MSTR ClassName (bool localized=true) const
 Returns the name of the plugin class. More...
 
virtual void BeginEditParams (IObjParam *ip, ULONG flags, Animatable *prev=NULL)
 
virtual void EndEditParams (IObjParam *ip, ULONG flags, Animatable *next=NULL)
 
virtual CoreExport void ReleaseInterface (ULONG id, void *i)
 
virtual CoreExport int SetProperty (ULONG id, void *data)
 
virtual CoreExport voidGetProperty (ULONG id)
 
CoreExport void AppendProperty (AnimProperty *prop)
 A function to directly add arbitrary properties to this object developers should ensure that the properties ID does not conflict with any Max-specific IDs. More...
 
CoreExport AnimPropertyFindProperty (DWORD id)
 Find any property. More...
 
CoreExport void AddAppDataChunk (const Class_ID &cid, SClass_ID sid, DWORD sbid, DWORD len, void *data)
 Adds application/plugin specific (custom) data to an Animatable. More...
 
CoreExport AppDataChunkGetAppDataChunk (const Class_ID &cid, SClass_ID sid, DWORD sbid)
 Retrieves the application/plugin specific (custom) data stored with an Animatable. More...
 
CoreExport BOOL RemoveAppDataChunk (const Class_ID &cid, SClass_ID sid, DWORD sbid)
 Deletes the application/plugin specific (custom) data stored with an Animatable. More...
 
CoreExport void ClearAllAppData ()
 Deletes all application/plugin specific (custom) data stored with an Animatable. More...
 
virtual MSTR SubAnimName (int i) MAX_SEALED
 
virtual BOOL CanDeleteSubAnim (int i)
 
virtual void DeleteSubAnim (int i)
 
virtual DWORD GetSubAnimCurveColor (int subNum)
 
virtual int SubNumToRefNum (int subNum)
 
virtual BOOL CanCopyAnim ()
 
CoreExport int HasSubElements (int type=0)
 
virtual int GetSubFCurveExtents (int subNum, ParamDimensionBase *dim, float &min, float &max, DWORD flags)
 The values max and min should be initialized before calling this function. More...
 
virtual ParamDimensionGetParamDimension (int i)
 
virtual BOOL SelectSubAnim (int subNum)
 
virtual BOOL BypassTreeView ()
 
virtual BOOL BypassTrackBar ()
 
virtual BOOL BypassPropertyLevel ()
 
virtual BOOL InvisibleProperty ()
 
virtual int NumKeys ()
 
virtual TimeValue GetKeyTime (int index)
 
virtual int GetKeyIndex (TimeValue t)
 
virtual BOOL GetNextKeyTime (TimeValue t, DWORD flags, TimeValue &nt)
 
virtual void CopyKeysFromTime (TimeValue src, TimeValue dst, DWORD flags)
 
virtual void DeleteKeyAtTime (TimeValue t)
 
virtual BOOL IsKeyAtTime (TimeValue t, DWORD flags)
 
virtual int GetKeyTimes (Tab< TimeValue > &times, Interval range, DWORD flags)
 
virtual int GetKeySelState (BitArray &sel, Interval range, DWORD flags)
 
CoreExport void OpenTreeEntry (int type, DWORD tv)
 
CoreExport void CloseTreeEntry (int type, DWORD tv)
 
CoreExport int IsTreeEntryOpen (int type, DWORD tv)
 
CoreExport BOOL GetSelInTrackView (DWORD tv)
 
CoreExport void SetSelInTrackView (DWORD tv, BOOL sel)
 
CoreExport BOOL InTrackViewSelSet (int which)
 
CoreExport void SetTrackViewSelSet (int which, BOOL inOut)
 
virtual BOOL AssignController (Animatable *control, int subAnim)
 
virtual BOOL CanAssignController (int subAnim)
 Return true if we can reassign the subanim specified. More...
 
virtual BOOL CanMakeUnique ()
 
CoreExport int EnumAnimTree (AnimEnum *animEnum, Animatable *client, int subNum)
 
virtual int RenderBegin (TimeValue t, ULONG flags=0)
 
virtual int RenderEnd (TimeValue t)
 
virtual CoreExport Interval GetTimeRange (DWORD flags)
 
virtual void EditTimeRange (Interval range, DWORD flags)
 
virtual void DeleteTime (Interval iv, DWORD flags)
 
virtual void ReverseTime (Interval iv, DWORD flags)
 
virtual void ScaleTime (Interval iv, float s)
 
virtual void InsertTime (TimeValue ins, TimeValue amount)
 
virtual BOOL SupportTimeOperations ()
 
virtual CoreExport void MapKeys (TimeMap *map, DWORD flags)
 
virtual void DeleteKeys (DWORD flags)
 
virtual void DeleteKeyByIndex (int index)
 
virtual void SelectKeys (TrackHitTab &sel, DWORD flags)
 
virtual void SelectSubKeys (int subNum, TrackHitTab &sel, DWORD flags)
 
virtual void SelectSubCurve (int subNum, BOOL sel)
 
virtual void SelectKeyByIndex (int i, BOOL sel)
 
virtual BOOL IsKeySelected (int i)
 
virtual void FlagKey (TrackHitRecord hit)
 
virtual int GetFlagKeyIndex ()
 
virtual int NumSelKeys ()
 
virtual void CloneSelectedKeys (BOOL offset=FALSE)
 
virtual void AddNewKey (TimeValue t, DWORD flags)
 
virtual void MoveKeys (ParamDimensionBase *dim, float delta, DWORD flags)
 
virtual void ScaleKeyValues (ParamDimensionBase *dim, float origin, float scale, DWORD flags)
 
virtual void SelectCurve (BOOL sel)
 
virtual BOOL IsCurveSelected ()
 Returns TRUE if the function curve is selected; otherwise returns FALSE. More...
 
virtual BOOL IsSubCurveSelected (int subNum)
 Returns the selected state of the sub-curve whose index is passed. More...
 
virtual int GetSelKeyCoords (TimeValue &t, float &val, DWORD flags)
 
virtual void SetSelKeyCoords (TimeValue t, float val, DWORD flags)
 
virtual int SetSelKeyCoordsExpr (ParamDimension *dim, const MCHAR *timeExpr, const MCHAR *valExpr, DWORD flags)
 
virtual void AdjustTangents (TrackHitRecord hit, ParamDimensionBase *dim, Rect &rcGraph, float tzoom, int tscroll, float vzoom, int vscroll, int dx, int dy, DWORD flags)
 
virtual void AdjustTangents (TrackHitRecord hit, ParamDimensionBase *dim, float angle, float length, DWORD flags)
 
virtual CoreExport BOOL IsAnimated ()
 
virtual BOOL CanCopyTrack (Interval iv, DWORD flags)
 
virtual BOOL CanPasteTrack (TrackClipObject *cobj, Interval iv, DWORD flags)
 
virtual TrackClipObjectCopyTrack (Interval iv, DWORD flags)
 
virtual void PasteTrack (TrackClipObject *cobj, Interval iv, DWORD flags)
 
virtual BOOL CanCopySubTrack (int subNum, Interval iv, DWORD flags)
 
virtual BOOL CanPasteSubTrack (int subNum, TrackClipObject *cobj, Interval iv, DWORD flags)
 
virtual TrackClipObjectCopySubTrack (int subNum, Interval iv, DWORD flags)
 
virtual void PasteSubTrack (int subNum, TrackClipObject *cobj, Interval iv, DWORD flags)
 
virtual int GetTrackVSpace (int lineHeight)
 
virtual int HitTestTrack (TrackHitTab &hits, Rect &rcHit, Rect &rcTrack, float zoom, int scroll, DWORD flags)
 
virtual int PaintTrack (ParamDimensionBase *dim, HDC hdc, Rect &rcTrack, Rect &rcPaint, float zoom, int scroll, DWORD flags)
 
virtual int PaintSubTrack (int subNum, ParamDimensionBase *dim, HDC hdc, Rect &rcTrack, Rect &rcPaint, float zoom, int scroll, DWORD flags)
 
virtual int PaintFCurves (ParamDimensionBase *dim, HDC hdc, Rect &rcGraph, Rect &rcPaint, float tzoom, int tscroll, float vzoom, int vscroll, DWORD flags)
 
virtual int HitTestFCurves (ParamDimensionBase *dim, TrackHitTab &hits, Rect &rcHit, Rect &rcGraph, float tzoom, int tscroll, float vzoom, int vscroll, DWORD flags)
 
virtual int PaintSubFCurves (int subNum, ParamDimensionBase *dim, HDC hdc, Rect &rcGraph, Rect &rcPaint, float tzoom, int tscroll, float vzoom, int vscroll, DWORD flags)
 
virtual int HitTestSubFCurves (int subNum, ParamDimensionBase *dim, TrackHitTab &hits, Rect &rcHit, Rect &rcGraph, float tzoom, int tscroll, float vzoom, int vscroll, DWORD flags)
 
virtual void EditTrackParams (TimeValue t, ParamDimensionBase *dim, const MCHAR *pname, HWND hParent, IObjParam *ip, DWORD flags)
 
virtual int TrackParamsType ()
 
virtual int GetFCurveExtents (ParamDimensionBase *dim, float &min, float &max, DWORD flags)
 This method is called to calculate the largest and smallest values of the anim. More...
 
CoreExport void AddNoteTrack (NoteTrack *note)
 
CoreExport void DeleteNoteTrack (NoteTrack *note, BOOL delNote=TRUE)
 
CoreExport BOOL HasNoteTracks ()
 
CoreExport int NumNoteTracks ()
 
CoreExport NoteTrackGetNoteTrack (int i)
 
virtual void FreeAllBitmaps ()
 
virtual void GetSystemNodes (INodeTab &nodes, SysNodeContext Context)
 
virtual BOOL IsSubClassOf (Class_ID classID)
 returns true if the animatable has sub-classed off the given class More...
 
virtual CoreExport void MouseCycleCompleted (TimeValue t)
 
virtual CoreExport void MouseCycleStarted (TimeValue t)
 
CoreExport bool SvSaveData (ISave *isave, USHORT id)
 
CoreExport bool SvLoadData (ILoad *iLoad)
 
CoreExport DWORD SvGetRefIndex ()
 
CoreExport void SvSetRefIndex (DWORD i)
 
CoreExport bool SvDeleteRefIndex ()
 
virtual CoreExport SvGraphNodeReference SvTraverseAnimGraph (IGraphObjectManager *gom, Animatable *owner, int id, DWORD flags)
 
CoreExport SvGraphNodeReference SvStdTraverseAnimGraph (IGraphObjectManager *gom, Animatable *owner, int id, DWORD flags)
 
virtual CoreExport bool SvCanInitiateLink (IGraphObjectManager *gom, IGraphNode *gNode)
 
virtual CoreExport bool SvCanConcludeLink (IGraphObjectManager *gom, IGraphNode *gNode, IGraphNode *gNodeChild)
 
virtual CoreExport MSTR SvGetName (IGraphObjectManager *gom, IGraphNode *gNode, bool isBeingEdited)
 
virtual CoreExport bool SvCanSetName (IGraphObjectManager *gom, IGraphNode *gNode)
 
virtual CoreExport bool SvSetName (IGraphObjectManager *gom, IGraphNode *gNode, const MSTR &name)
 
virtual CoreExport bool SvCanRemoveThis (IGraphObjectManager *gom, IGraphNode *gNode)
 
virtual CoreExport bool SvRemoveThis (IGraphObjectManager *gom, IGraphNode *gNode)
 Called when the user deletes this object in the schematic view... More...
 
virtual CoreExport bool SvIsSelected (IGraphObjectManager *gom, IGraphNode *gNode)
 Returns true if the object is selected in its schematic view. More...
 
virtual CoreExport bool SvIsHighlighted (IGraphObjectManager *gom, IGraphNode *gNode)
 
virtual CoreExport COLORREF SvHighlightColor (IGraphObjectManager *gom, IGraphNode *gNode)
 
virtual CoreExport COLORREF SvGetSwatchColor (IGraphObjectManager *gom, IGraphNode *gNode)
 
virtual CoreExport bool SvIsInactive (IGraphObjectManager *gom, IGraphNode *gNode)
 
virtual CoreExport bool SvLinkChild (IGraphObjectManager *gom, IGraphNode *gNodeThis, IGraphNode *gNodeChild)
 
virtual CoreExport bool SvHandleDoubleClick (IGraphObjectManager *gom, IGraphNode *gNode)
 
virtual CoreExport MultiSelectCallbackSvGetMultiSelectCallback (IGraphObjectManager *gom, IGraphNode *gNode)
 
virtual CoreExport bool SvCanSelect (IGraphObjectManager *gom, IGraphNode *gNode)
 
virtual CoreExport bool SvEditProperties (IGraphObjectManager *gom, IGraphNode *gNode)
 
virtual CoreExport MSTR SvGetTip (IGraphObjectManager *gom, IGraphNode *gNode)
 
virtual CoreExport MSTR SvGetRefTip (IGraphObjectManager *gom, IGraphNode *gNode, IGraphNode *gNodeMaker)
 
virtual CoreExport bool SvCanDetach (IGraphObjectManager *gom, IGraphNode *gNode)
 
virtual CoreExport bool SvDetach (IGraphObjectManager *gom, IGraphNode *gNode)
 
virtual CoreExport MSTR SvGetRelTip (IGraphObjectManager *gom, IGraphNode *gNodeTarget, int id, IGraphNode *gNodeMaker)
 Returns a string to be displayed in the tip window in the schematic view for a relationship from "gNodeMaker" to "gNodeTarget"... More...
 
virtual CoreExport bool SvCanDetachRel (IGraphObjectManager *gom, IGraphNode *gNodeTarget, int id, IGraphNode *gNodeMaker)
 Returns true if this object can respond to the SvDetachRel(...) method... More...
 
virtual CoreExport bool SvDetachRel (IGraphObjectManager *gom, IGraphNode *gNodeTarget, int id, IGraphNode *gNodeMaker)
 Detach this relationship. More...
 
virtual CoreExport bool SvHandleRelDoubleClick (IGraphObjectManager *gom, IGraphNode *gNodeTarget, int id, IGraphNode *gNodeMaker)
 Called when this relationship is double-clicked in the schematic view... More...
 
CoreExport ICustAttribContainerGetCustAttribContainer ()
 This method returns a pointer to the custom attributes container interface class. More...
 
CoreExport void AllocCustAttribContainer ()
 This method allocates space for a custom attributes container. More...
 
CoreExport void DeleteCustAttribContainer ()
 This method deletes space used by a custom attributes container. More...
 
void SetAFlag (DWORD mask)
 
void ClearAFlag (DWORD mask)
 Clears one or more bits in the Animatable flags. More...
 
bool TestAFlag (DWORD mask) const
 Tests one or more bits in the Animatable flags. More...
 
void SetAFlagEx (DWORD mask)
 Sets one or more bits in the Animatable extended flags. More...
 
void ClearAFlagEx (DWORD mask)
 Clears one or more bits in the Animatable extended flags. More...
 
bool TestAFlagEx (DWORD mask) const
 Tests one or more bits in the Animatable extended flags. More...
 
CoreExport bool TestFlagBit (int index)
 Tests the specified flag bit. More...
 
CoreExport void SetFlagBit (int index, bool newValue=true)
 Sets the specified flag bit. More...
 
CoreExport void ClearFlagBit (int index)
 Clears the specified flag bit. More...
 
- Public Member Functions inherited from InterfaceServer
virtual UtilExport ~InterfaceServer ()
 Destructor. More...
 
template<class InterfaceType >
InterfaceType * GetTypedInterface ()
 
- Public Member Functions inherited from ITabDialogObject
virtual void Activate (ITabbedDialog *dialog)
 Notify the object that the dialog is activated in a tabbed dialog. More...
 
virtual void Deactivate (ITabbedDialog *dialog)
 Notify the object that the dialog is deactivated in a tabbed dialog. More...
 
- Public Member Functions inherited from BaseInterface
virtual UtilExport ~BaseInterface ()
 Destructor. More...
 
virtual bool RegisterNotifyCallback (InterfaceNotifyCallback *incb)
 
virtual void UnRegisterNotifyCallback (InterfaceNotifyCallback *incb)
 
virtual BaseInterfaceAcquireInterface ()
 
virtual void ReleaseInterface ()
 
virtual void DeleteInterface ()
 
virtual BaseInterfaceCloneInterface (void *remapDir=NULL)
 
- Public Member Functions inherited from IMtlRender_Compatibility_Renderer
void Init (ClassDesc &classDesc)
 
virtual bool IsCompatibleWithMtlBase (ClassDesc &mtlBaseClassDesc)=0
 
- Public Member Functions inherited from FPInterfaceDesc
CoreExport FPInterfaceDesc ()
 
CoreExport FPInterfaceDesc (Interface_ID id, const MCHAR *int_name, StringResID descr, ClassDesc *cd, ULONG flag,...)
 
CoreExport ~FPInterfaceDesc ()
 
virtual void Init ()
 
LifetimeType LifetimeControl ()
 
CoreExport void LoadDescriptor (Interface_ID id, const MCHAR *int_name, StringResID descr, ClassDesc *pCD, ULONG flag,...)
 
CoreExport void AppendFunction (int id,...)
 Add a new function to this interface descriptor. More...
 
CoreExport void AppendProperty (int id,...)
 Add a new property to this interface descriptor. More...
 
CoreExport void AppendEnum (int id,...)
 Add a new enum to this interface descriptor. More...
 
CoreExport void SetClassDesc (ClassDesc *i_cd)
 
CoreExport va_list check_fn (va_list ap, int id)
 
CoreExport va_list scan_fn (va_list ap, int id, int index)
 
CoreExport va_list check_prop (va_list ap, int id)
 
CoreExport va_list scan_prop (va_list ap, int id, int index)
 
CoreExport va_list check_enum (va_list ap, EnumID id)
 
CoreExport va_list scan_enum (va_list ap, EnumID id, int index)
 
FPInterfaceDescGetDesc ()
 
Interface_ID GetID ()
 
CoreExport FPFunctionDefGetFnDef (FunctionID fid)
 
ActionTableGetActionTable ()
 
CoreExport void EnableActions (BOOL onOff)
 
virtual CoreExport const MCHARGetRsrcString (StringResID id)
 
- Public Member Functions inherited from FPInterface
virtual CoreExport FPStatus Invoke (FunctionID fid, TimeValue t=0, FPParams *params=NULL)
 
virtual FPStatus Invoke (FunctionID fid, FPParams *params)
 
virtual CoreExport FPStatus Invoke (FunctionID fid, TimeValue t, FPValue &result, FPParams *params=NULL)
 
virtual FPStatus Invoke (FunctionID fid, FPValue &result, FPParams *params=NULL)
 
virtual CoreExport FunctionID FindFn (const MCHAR *name)
 
virtual CoreExport BOOL IsEnabled (FunctionID actionID)
 
virtual CoreExport BOOL IsChecked (FunctionID actionID)
 
virtual CoreExport BOOL IsVisible (FunctionID actionID)
 
virtual CoreExport FunctionID GetIsEnabled (FunctionID actionID)
 
virtual CoreExport FunctionID GetIsChecked (FunctionID actionID)
 
virtual CoreExport FunctionID GetIsVisible (FunctionID actionID)
 

Protected Member Functions

virtual bool GetEnableInteractiveMEditSession () const =0
 Returns whether the renderer supports interactive material editor sessions. More...
 
virtual bool IsCompatibleWrapperMaterial (ClassDesc &mtlBaseClassDesc) const
 Returns whether the given material class descriptor is that of a "wrapper" material, which would get resolved by BaseTranslator_INode::GetMaterial(). More...
 
- Protected Member Functions inherited from ReferenceTarget
virtual CoreExport int DoEnumDependentsImpl (DependentEnumProc *dep)
 Method to perform an enumeration on a ReferenceTarget. More...
 
virtual CoreExport ~ReferenceTarget ()=0
 Destructor. More...
 
- Protected Member Functions inherited from ReferenceMaker
virtual CoreExport ~ReferenceMaker ()=0
 Destructor. More...
 
void BlockEval ()
 Validates a given reference link between this reference maker and its reference target. More...
 
void UnblockEval ()
 Validates a given reference link between this reference maker and its reference target. More...
 
int Evaluating ()
 Validates a given reference link between this reference maker and its reference target. More...
 
CoreExport RefResult StdNotifyRefChanged (const Interval &changeInt, RefTargetHandle hTarget, PartID partID, RefMessage message, BOOL propagate, NotifyDependentsOption notifyDependentsOption)
 Validates a given reference link between this reference maker and its reference target. More...
 
- Protected Member Functions inherited from Animatable
virtual CoreExport ~Animatable ()=0
 Destructor. More...
 
- Protected Member Functions inherited from Noncopyable
 Noncopyable ()
 
 ~Noncopyable ()
 
- Protected Member Functions inherited from FPInterfaceDesc
CoreExport void load_descriptor (Interface_ID id, const MCHAR *int_name, StringResID descr, ClassDesc *cd, USHORT flag, va_list ap)
 
- Protected Member Functions inherited from FPInterface
virtual FPStatus _dispatch_fn (FunctionID fid, TimeValue t, FPValue &result, FPParams *p)
 

Additional Inherited Members

- Public Types inherited from Renderer
enum class  PauseSupport { None , Full , Legacy }
 Returns whether pause is supported by this renderer. More...
 
enum  Requirement {
  kRequirement_NoVFB = 1 , kRequirement_DontSaveRenderOutput = 2 , kRequirement_Wants32bitFPOutput = 3 , kRequirement_WantsObjectSelection = 4 ,
  kRequirement_NoGBufferForToneOpPreview = 5 , kRequirement_SupportsConcurrentRendering = 6
}
 Returns true if the renderer has the given requirement, or returns false otherwise. More...
 
- Public Types inherited from BaseInterface
enum  LifetimeType { noRelease , immediateRelease , wantsRelease , serverControlled }
 
- Static Public Member Functions inherited from Animatable
static CoreExport BOOL IsDeleted (Animatable *anim)
 Debug method to determine whether an object has been deleted. More...
 
static CoreExport AnimHandle GetHandleByAnim (Animatable *anim)
 Get the unique handle for an Animatable object. More...
 
static CoreExport AnimatableGetAnimByHandle (AnimHandle handle)
 Get an Animatable object from its unique handle. More...
 
static CoreExport AnimHandle GetNextHandle ()
 Get the unique handle for the next Animatable object to be created. More...
 
static CoreExport void EnumerateAllAnimatables (EnumAnimList &enumProcObject)
 Enumerator to enumerate across all animatables. More...
 
static CoreExport bool RegisterAppDataLoadCallback (const Class_ID &cid, SClass_ID sid, APPDATALOADPROC proc)
 Registers a callback proc that is called when an AppDataChunk is read from a scene file. More...
 
static CoreExport bool UnRegisterAppDataLoadCallback (const Class_ID &cid, SClass_ID sid, APPDATALOADPROC proc)
 Unregisters a callback proc that is called when an AppDataChunk is read from a scene file. More...
 
static CoreExport bool RegisterAppDataLoadCallback (DWORD sbid, APPDATALOADPROC proc)
 Registers a callback proc that is called when an AppDataChunk is read from a scene file. More...
 
static CoreExport bool UnRegisterAppDataLoadCallback (DWORD sbid, APPDATALOADPROC proc)
 Unregisters a callback proc that is called when an AppDataChunk is read from a scene file. More...
 
static CoreExport int RequestFlagBit ()
 Requests an unique flag bit index. More...
 
static CoreExport void ReleaseFlagBit (int index)
 Releases the flag bit index. More...
 
static CoreExport void ClearFlagBitInAllAnimatables (int index)
 Clears the specified flag bit in all Animatables. More...
 
- Static Public Member Functions inherited from MaxHeapOperators
static UtilExport voidoperator new (size_t size)
 Standard new operator used to allocate objects If there is insufficient memory, an exception will be thrown. More...
 
static UtilExport voidoperator new (size_t size, const std::nothrow_t &e)
 Standard new operator used to allocate objects if there is insufficient memory, NULL will be returned. More...
 
static UtilExport voidoperator new (size_t size, const char *filename, int line)
 New operator used to allocate objects that takes the filename and line number where the new was called If there is insufficient memory, an exception will be thrown. More...
 
static UtilExport voidoperator new (size_t size, int block_type, const char *filename, int line)
 New operator used to allocate objects that takes the type of memory, filename and line number where the new was called If there is insufficient memory, an exception will be thrown. More...
 
static UtilExport voidoperator new (size_t size, const std::nothrow_t &e, const char *filename, int line)
 New operator used to allocate objects that takes the filename and line number where the new was called If there is insufficient memory, NULL will be returned. More...
 
static UtilExport voidoperator new (size_t size, unsigned long flags)
 New operator used to allocate objects that takes extra flags to specify special operations If there is insufficient memory, an exception will be thrown. More...
 
static UtilExport voidoperator new (size_t size, const std::nothrow_t &e, unsigned long flags)
 New operator used to allocate objects that takes extra flags to specify special operations If there is insufficient memory, NULL will be returned. More...
 
static UtilExport voidoperator new[] (size_t size)
 New operator used to allocate arrays of objects If there is insufficient memory, an exception will be thrown. More...
 
static UtilExport voidoperator new[] (size_t size, const std::nothrow_t &e)
 New operator used to allocate arrays of objects If there is insufficient memory, NULL will be returned. More...
 
static UtilExport voidoperator new[] (size_t size, const char *filename, int line)
 New operator used to allocate arrays of objects If there is insufficient memory, an exception will be thrown. More...
 
static UtilExport voidoperator new[] (size_t size, int block_type, const char *filename, int line)
 New operator used to allocate arrays of objects. More...
 
static UtilExport voidoperator new[] (size_t size, const std::nothrow_t &e, const char *filename, int line)
 New operator used to allocate arrays of objects If there is insufficient memory, NULL will be returned. More...
 
static UtilExport voidoperator new[] (size_t size, unsigned long flags)
 New operator used to allocate arrays of objects If there is insufficient memory, an exception will be thrown. More...
 
static UtilExport voidoperator new[] (size_t size, const std::nothrow_t &e, unsigned long flags)
 New operator used to allocate arrays of objects If there is insufficient memory, NULL will be returned. More...
 
static UtilExport void operator delete (void *ptr)
 Standard delete operator used to deallocate an object If the pointer is invalid, an exception will be thrown. More...
 
static UtilExport void operator delete (void *ptr, const std::nothrow_t &e)
 Standard delete operator used to deallocate an object If the pointer is invalid, nothing will happen. More...
 
static UtilExport void operator delete (void *ptr, const char *filename, int line)
 Delete operator used to deallocate an object that takes the filename and line number where the delete was called If the pointer is invalid, an exception will be thrown. More...
 
static UtilExport void operator delete (void *ptr, int block_type, const char *filename, int line)
 Delete operator used to deallocate an object that takes the type of memory, filename and line number where the delete was called If the pointer is invalid, an exception will be thrown. More...
 
static UtilExport void operator delete (void *ptr, const std::nothrow_t &e, const char *filename, int line)
 Delete operator used to deallocate an object that takes the filename and line number where the delete was called If the pointer is invalid, nothing will happen. More...
 
static UtilExport void operator delete (void *ptr, unsigned long flags)
 Delete operator used to deallocate an object that takes extra flags to specify special operations If the pointer is invalid, an exception will be thrown. More...
 
static UtilExport void operator delete (void *ptr, const std::nothrow_t &e, unsigned long flags)
 Delete operator used to deallocate an object that takes extra flags to specify special operations If the pointer is invalid, nothing will happen. More...
 
static UtilExport void operator delete[] (void *ptr)
 Standard delete operator used to deallocate an array of objects If the pointer is invalid, an exception will be thrown. More...
 
static UtilExport void operator delete[] (void *ptr, const std::nothrow_t &e)
 Standard delete operator used to deallocate an array of objects If the pointer is invalid, nothing will happen. More...
 
static UtilExport void operator delete[] (void *ptr, const char *filename, int line)
 Delete operator used to deallocate an array of objects that takes the filename and line number where the delete was called If the pointer is invalid, an exception will be thrown. More...
 
static UtilExport void operator delete[] (void *ptr, int block_type, const char *filename, int line)
 Delete operator used to deallocate an array of objects that takes the type of memory, filename and line number where the delete was called If the pointer is invalid, an exception will be thrown. More...
 
static UtilExport void operator delete[] (void *ptr, const std::nothrow_t &e, const char *filename, int line)
 Delete operator used to deallocate an array of objects that takes the filename and line number where the delete was called If the pointer is invalid, nothing will happen. More...
 
static UtilExport void operator delete[] (void *ptr, unsigned long flags)
 Delete operator used to deallocate an array of objects that takes extra flags to specify special operations If the pointer is invalid, an exception will be thrown. More...
 
static UtilExport void operator delete[] (void *ptr, const std::nothrow_t &e, unsigned long flags)
 Delete operator used to deallocate an array of objects that takes extra flags to specify special operations If the pointer is invalid, an exception will be thrown. More...
 
static UtilExport voidoperator new (size_t size, void *placement_ptr)
 Placement new operator. More...
 
static UtilExport void operator delete (void *ptr, void *placement_ptr)
 Placement delete operator. More...
 
static UtilExport voidaligned_malloc (size_t size, size_t alignment)
 Allocates memory on a specified alignment boundary. More...
 
static UtilExport voidaligned_realloc (void *ptr, size_t size, size_t alignment)
 Reallocates memory on a specified alignment boundary. More...
 
static UtilExport void aligned_free (void *ptr)
 Frees a block of memory that was allocated with aligned_malloc/aligned_realloc. More...
 
- Public Attributes inherited from FPInterfaceDesc
Interface_ID ID
 
MSTR internal_name
 
StringResID description
 
ClassDesccd
 
USHORT flags
 
Tab< FPFunctionDef * > functions
 
Tab< FPPropDef * > props
 
Tab< FPEnum * > enumerations
 
MSPluginClasspc
 
Rolloutrollout
 
ActionTableaction_table
 
- Static Public Attributes inherited from Animatable
static const AnimHandle kInvalidAnimHandle = 0
 
- Static Public Attributes inherited from FPInterface
static CoreExport FPInterfaceDesc nullInterface
 
- Protected Attributes inherited from Animatable
DWORD aflag
 
AnimPropertyList aprops
 

Detailed Description

Unifies functionality for, both, interactive (ActiveShade) and offline (Production) rendering.

Base class for all class descriptors of plugins that derive from UnifiedRenderer.

This is the base class for any renderer plugin that wishes to use the Rendering API - which, ideally, should be the case for all renderer plugins going forward. This class implements most of the core rendering functionality, which is common to all renderers, and exposes a simplified mechanism based around render sessions. The responsibilities are as follows:

  • class UnifiedRenderer: file I/O, user interface, and misc. application-side behaviour.
  • class IOfflineRenderSession: rendering for offline (non-interactive, Production) purposes; render-engine-side behaviour.
  • class IInteractiveRenderSession: rendering for interactive (ActiveShade) purposes; render-engine-side-behaviour.

Many of the methods, inherited from class Renderer and others, are made explicitly final, as overriding them would jeopardize the foundations of this class' implementation. Other methods are made explicitly pure virtual to enforce their implementation by the plugin.

Remarks
The class descriptor of a plugin deriving from UnifiedRenderer must derive from UnifiedRenderer::ClassDescriptor.

This class implements functionality and interfaces necessary for plugins that derive from UnifiedRenderer.

Constructor & Destructor Documentation

◆ UnifiedRenderer()

◆ ~UnifiedRenderer()

virtual ~UnifiedRenderer ( )
virtual

◆ ~ClassDescriptor()

virtual ~ClassDescriptor ( )
virtual

Member Function Documentation

◆ GetClassDescriptor()

virtual ClassDescriptor& GetClassDescriptor ( ) const
pure virtual

Returns a reference to the class descriptor that defines this renderer plugin.

The class descriptor must inherit from class UnifiedRenderer::ClassDescriptor, and must be implemented as a singleton.

◆ CreateOfflineSession()

virtual std::unique_ptr<IOfflineRenderSession> CreateOfflineSession ( IRenderSessionContext sessionContext)
pure virtual

Creates a new render session, for offline (non-interactive) rendering.

Parameters
sessionContextThe context in which the render session operates. This reference is guaranteed to be valid for the lifetime of the session, but may not be used beyond this.
Remarks
As the render session is returned through a std::unique_ptr, the caller takes ownership of the session and will destroy it once it is no longer needed.
Returns
A new offline render session, or null to abort the render operation entirely.

◆ CreateInteractiveSession()

virtual std::unique_ptr<IInteractiveRenderSession> CreateInteractiveSession ( IRenderSessionContext sessionContext)
pure virtual

Creates a new render session, for interactive (ActiveShade) rendering.

Parameters
sessionContextThe context in which the render session operates. This reference is guaranteed to be valid for the lifetime of the session, but may not be used beyond this.
Remarks
As the render session is returned through a std::unique_ptr, the caller takes ownership of the session and will destroy it once it is no longer needed.
If interactive rendering is not supported by the renderer plugin, then this method should return null.
Returns
A new interactive render session, or null to abort the render operation entirely.
See also
SupportsInteractiveRendering()

◆ SupportsInteractiveRendering()

virtual bool SupportsInteractiveRendering ( ) const
pure virtual

Returns whether this renderer supports interactive, that is: if an interactive render session can be created with CreateInteractiveSession().

This affects whether this renderer plugin will be offered as a choice of ActiveShade renderer.

See also
CreateInteractiveSession()

◆ Load_UnifiedRenderer()

virtual IOResult Load_UnifiedRenderer ( ILoad iload)
pure virtual

Replaces ReferenceMaker::Load() for loading plugin-specific data.

ReferenceMaker::Load() is overridden and marked final to enforce that UnifiedRenderer be loaded in a certain way. This method is called by the implementation of Load() an should behave in an identical manner to ReferenceMaker::Load().

See also
ReferenceMaker::Load()

◆ Save_UnifiedRenderer()

virtual IOResult Save_UnifiedRenderer ( ISave isave) const
pure virtual

Replaces ReferenceMaker::Save() for loading plugin-specific data.

ReferenceMaker::Save() is overridden and marked final to enforce that UnifiedRenderer be saved in a certain way. This method is called by the implementation of Save() an should behave in an identical manner to ReferenceMaker::Save().

See also
ReferenceMaker::Save()

◆ GetInterface_UnifiedRenderer() [1/2]

virtual void* GetInterface_UnifiedRenderer ( ULONG  id)
pure virtual

Replaces Animatable::GetInterface(ULONG), which is implemented as final by UnifiedRenderer to enforce correct behaviour.

See also
Animatable::GetInterface(ULONG)

◆ GetInterface_UnifiedRenderer() [2/2]

virtual BaseInterface* GetInterface_UnifiedRenderer ( Interface_ID  id)
pure virtual

Replaces InterfaceServer::GetInterface(Interface_ID), which is implemented as final by UnifiedRenderer to enforce correct behaviour.

See also
InterfaceServer::GetInterface(Interface_ID)

◆ MotionBlurIgnoresNodeProperties()

virtual bool MotionBlurIgnoresNodeProperties ( ) const
pure virtual

Enables the renderer to override the behaviour of per-object motion blur options.

class INode exposes properties to control how motion blur is to be processed for that object: image based, object based, or disabled entirely. Certain renderers may want to override these properties, especially if they do not support image-based motion blur - or simply to expose a global switch to avoid having to change the properties of all nodes in the scene.

Returns
True if object-based motion blur is to be used for all objects in the scene, regardless of the per-object proeprties. False if the node properties are to be respected.

◆ Open()

virtual int Open ( INode scene,
INode vnode,
ViewParams viewPar,
RendParams rp,
HWND  hwnd,
DefaultLight defaultLights,
int  numDefLights,
RendProgressCallback prog 
)
finaloverridevirtual

This method is final to enforce usage of the render session. All the data passed to this method is exposed through class IRenderSessionContext.

Implements Renderer.

◆ Render()

virtual int Render ( TimeValue  t,
Bitmap tobm,
FrameRendParams frp,
HWND  hwnd,
RendProgressCallback prog,
ViewParams viewPar 
)
finaloverridevirtual

This method is final to enforce usage of the render session. All the data passed to this method is exposed through class IRenderSessionContext.

Implements Renderer.

◆ Close()

virtual void Close ( HWND  hwnd,
RendProgressCallback prog 
)
finaloverridevirtual

This method is final to enforce usage of the render session. All the data passed to this method is exposed through class IRenderSessionContext.

Implements Renderer.

◆ ApplyRenderEffects()

virtual bool ApplyRenderEffects ( TimeValue  t,
Bitmap pBitmap,
bool  updateDisplay 
)
finaloverridevirtual

This method is final to enforce usage of the render session. It applies the render effects that are active in the current render session.

Reimplemented from Renderer.

◆ GetIInteractiveRender()

virtual IInteractiveRender* GetIInteractiveRender ( )
finaloverridevirtual
Remarks
Will return null if SupportsInteractiveRendering() returns false.

Implements Renderer.

◆ IsStopSupported()

virtual bool IsStopSupported ( ) const
overridepure virtual

Returns whether the render supports the pause command (and button). See Renderer::IsPauseSupported().

Implements Renderer.

◆ IsPauseSupported()

virtual PauseSupport IsPauseSupported ( ) const
overridepure virtual

Returns whether the render supports the pause command (and button). See Renderer::IsPauseSupported().

Implements Renderer.

◆ StopRendering()

virtual void StopRendering ( )
finaloverridevirtual

This method forwards to the render session. See IOfflineRenderSession::StopRendering().

Implements Renderer.

◆ PauseRendering()

virtual void PauseRendering ( )
finaloverridevirtual

This method forwards to the render session. See IOfflineRenderSession::PauseRendering().

Implements Renderer.

◆ ResumeRendering()

virtual void ResumeRendering ( )
finaloverridevirtual

This method forwards to the render session. See IOfflineRenderSession::ResumeRendering().

Implements Renderer.

◆ NumParamBlocks()

virtual int NumParamBlocks ( )
overridepure virtual

See Animatable::GetParamBlock(int).

Reimplemented from Animatable.

◆ GetParamBlock()

virtual IParamBlock2* GetParamBlock ( int  i)
overridepure virtual

See Animatable::GetParamBlock(int).

Reimplemented from Animatable.

◆ GetParamBlockByID()

virtual IParamBlock2* GetParamBlockByID ( BlockID  id)
overridepure virtual

◆ ResetParams()

virtual void ResetParams ( )
overridevirtual

See Renderer::ResetParams(). The default implementation resets all the parameter blocks.

Implements Renderer.

◆ AddTabToDialog()

virtual void AddTabToDialog ( ITabbedDialog dialog,
ITabDialogPluginTab tab 
)
overridepure virtual

Default implementation refuses radiosity and ray-tracer tabs, to enable only showing the renderer's own tabs.

Reimplemented from ITabDialogObject.

◆ AcceptTab()

virtual int AcceptTab ( ITabDialogPluginTab tab)
overridevirtual

Default implementation refuses radiosity and ray-tracer tabs, to enable only showing the renderer's own tabs.

Reimplemented from ITabDialogObject.

◆ Clone()

virtual RefTargetHandle Clone ( RemapDir remap)
overridevirtual

Creates a new renderer plugin, cloned/copied from this one.

The default implementation creates a new instance of the renderer through the class descriptor, and clones all the references. The plugin may need to specialize this method, for example if it has data members to copy.

Reimplemented from ReferenceTarget.

◆ NotifyRefChanged()

virtual RefResult NotifyRefChanged ( const Interval changeInt,
RefTargetHandle  hTarget,
PartID partID,
RefMessage  message,
BOOL  propagate 
)
overridevirtual

This default implementation ignores all reference messages, as renderers typically don't need to react to them.

Implements ReferenceMaker.

◆ Load()

virtual IOResult Load ( ILoad iload)
finaloverridevirtual

This method is final to enable UnifiedRenderer to load its own data. Use Load_UnifiedRenderer() to load data in the sub-class.

Reimplemented from ReferenceMaker.

◆ Save()

virtual IOResult Save ( ISave isave)
finaloverridevirtual

This method is final to enable UnifiedRenderer to load its own data. Use Save_UnifiedRenderer() to load data in the sub-class.

Reimplemented from ReferenceMaker.

◆ NumRefs()

virtual int NumRefs ( )
overridepure virtual

Made pure virtual to enforce implementation.

Reimplemented from ReferenceMaker.

◆ GetReference()

virtual RefTargetHandle GetReference ( int  i)
pure virtual

Made pure virtual to enforce implementation.

Reimplemented from ReferenceMaker.

◆ SetReference()

virtual void SetReference ( int  i,
RefTargetHandle  rtarg 
)
pure virtual

Made pure virtual to enforce implementation.

Reimplemented from ReferenceMaker.

◆ GetInterface() [1/2]

virtual void* GetInterface ( ULONG  id)
finaloverridevirtual

This method is final to enable UnifiedRenderer to expose its own interfaces correctly.

Use GetInterface_UnifiedRenderer(Interface_ID) to expose interfaces in the sub-class.

Reimplemented from ReferenceTarget.

◆ GetInterface() [2/2]

virtual BaseInterface* GetInterface ( Interface_ID  id)
finaloverridevirtual

This method is final to enable UnifiedRenderer to expose its own interfaces correctly.

Use GetInterface_UnifiedRenderer(Interface_ID) to expose interfaces in the sub-class.

Reimplemented from BaseInterface.

◆ ClassID()

virtual Class_ID ClassID ( )
finaloverridevirtual

Call forwarded to class descriptor (see UnifiedRenderer::ClassDescriptor).

Reimplemented from Animatable.

◆ SuperClassID() [1/2]

virtual SClass_ID SuperClassID ( )
finaloverridevirtual

Returns RENDERER_CLASS_ID.

Reimplemented from Renderer.

◆ GetClassName()

virtual void GetClassName ( MSTR s,
bool  localized = true 
) const
finaloverridevirtual

Call forwarded to class descriptor (see UnifiedRenderer::ClassDescriptor).

Reimplemented from ReferenceTarget.

◆ NumSubs()

virtual int NumSubs ( )
overridevirtual

This default implementation returns the number of parameter blocks.

Reimplemented from Animatable.

◆ SubAnimName()

virtual MSTR SubAnimName ( int  i,
bool  localized = true 
)
overridevirtual

This default implementation returns the name of the parameter block at index i.

Reimplemented from Animatable.

◆ SubAnim()

virtual Animatable* SubAnim ( int  i)
overridevirtual

This default implementation returns the param block at index i.

Reimplemented from Animatable.

◆ DeleteThis()

virtual void DeleteThis ( )
finaloverridevirtual

Calls: "delete this" and performs cleanup.

Reimplemented from Animatable.

◆ GetEnableInteractiveMEditSession()

virtual bool GetEnableInteractiveMEditSession ( ) const
protectedpure virtual

Returns whether the renderer supports interactive material editor sessions.

Material editor previews are rendered using offline render sessions. But to optimize the preview renders by avoiding a full re-initialization of the session and re-translation of the scene, the system implements a level of semi-interactive rendering. This is performed by keeping the render session alive between MEdit preview renders, allowing the re-use of translated scene elements from the last render, as well as removing the need for re-initializing the renderer. The translation mechanism works exactly the same as with an interactive render session, but is performed through the offline render session interface. Scene changes can therefore only occur between renders - no asynchronous changes may occur.

◆ ClassDescriptor()

ClassDescriptor ( )

The constructor initializes IMtlRender_Compatibility_Renderer.

◆ CreateRenderer()

virtual UnifiedRenderer* CreateRenderer ( const bool  loading)
pure virtual

Returns a new instance of the renderer plugin.

Parameters
loadingTrue if the plugin is being created for loading purposes, in which case the plugin may skip any initialization steps that would be superfluous.

◆ IsPublic()

virtual int IsPublic ( )
overridevirtual

This default implementation returns true.

◆ Create()

virtual void* Create ( BOOL  loading)
finaloverridevirtual

This method is final to enforce going through CreateRenderer().

◆ SuperClassID() [2/2]

virtual SClass_ID SuperClassID ( )
finaloverridevirtual

Returns RENDERER_CLASS_ID.

Reimplemented from Renderer.

◆ Category()

virtual const MCHAR* Category ( )
overridevirtual

This default implementation returns "Renderer".

◆ InternalName()

virtual const MCHAR* InternalName ( )
overridepure virtual

Made pure virtual to enforce implementation.

◆ HInstance()

virtual HINSTANCE HInstance ( )
overridepure virtual

Made pure virtual to enforce implementation.

Remarks
Consider calling MaxSDK::GetHInstance().

Reimplemented from FPInterfaceDesc.

◆ IsCompatibleWrapperMaterial()

virtual bool IsCompatibleWrapperMaterial ( ClassDesc mtlBaseClassDesc) const
protectedvirtual

Returns whether the given material class descriptor is that of a "wrapper" material, which would get resolved by BaseTranslator_INode::GetMaterial().

This is may be used by the implementation of IMtlRender_Compatibility_Renderer::IsCompatibleWithMtlBase() to flag wrapper materials as compatible.