#ifndef _MRenderCallback #define _MRenderCallback // //- // ========================================================================== // Copyright (C) 1995 - 2006 Autodesk, Inc., and/or its licensors. All // rights reserved. // // The coded instructions, statements, computer programs, and/or related // material (collectively the "Data") in these files contain unpublished // information proprietary to Autodesk, Inc. ("Autodesk") and/or its // licensors, which is protected by U.S. and Canadian federal copyright law // and by international treaties. // // The Data may not be disclosed or distributed to third parties or be // copied or duplicated, in whole or in part, without the prior written // consent of Autodesk. // // The copyright notices in the Software and this entire statement, // including the above license grant, this restriction and the following // disclaimer, must be included in all copies of the Software, in whole // or in part, and all derivative works of the Software, unless such copies // or derivative works are solely in the form of machine-executable object // code generated by a source language processor. // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND. // AUTODESK DOES NOT MAKE AND HEREBY DISCLAIMS ANY EXPRESS OR IMPLIED // WARRANTIES INCLUDING, BUT NOT LIMITED TO, THE WARRANTIES OF // NON-INFRINGEMENT, MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE, // OR ARISING FROM A COURSE OF DEALING, USAGE, OR TRADE PRACTICE. IN NO // EVENT WILL AUTODESK AND/OR ITS LICENSORS BE LIABLE FOR ANY LOST // REVENUES, DATA, OR PROFITS, OR SPECIAL, DIRECT, INDIRECT, OR // CONSEQUENTIAL DAMAGES, EVEN IF AUTODESK AND/OR ITS LICENSORS HAS // BEEN ADVISED OF THE POSSIBILITY OR PROBABILITY OF SUCH DAMAGES. // ========================================================================== //+ // // CLASS: MRenderCallback // // ***************************************************************************** // // CLASS DESCRIPTION (MRenderCallback) // // This class is used to register callbacks to gain access to Maya's // rendering information during software rendering. You can modify Maya's // shadow maps, RGB pixmap, and depth map to composite your own rendering // effects into Maya's rendering. // // To register callbacks, inherit from this class and override // renderCallback(), shadowCastCallback(), or postProcessCallback(). Any // number of these methods can be overridden by the callback. Then // register the callbacks by calling the addCallback() method. // // Each of the callback method gets passed a MRenderData which contains // the information. MRenderData also provides utility methods for // converting between world space and screen space. In the case of // shadowCastCallback, MRenderShadowData is provided and it also has // utility methods for converting between world space and shadow map // space. // // If there are callbacks registered, prior to shadow maps being written out, // shadowCastCallback() will be invoked with light information and a pointer // to the shadow map passed in. Then immediately after software rendering // completes, renderCallback() will be invoked with the rendering's dimension // info and image passed in. Lastly, during post-processing, postProcessCallback() // will be invoked with the rendering's dimension and pointers to the rgb pixmap // and depthmap passed in. // // If multiple callbacks need to be registered, the order of invocation // can be set by adding each callback with a priority number, 0 being the // highest priority. // // ***************************************************************************** #if defined __cplusplus #ifdef _WIN32 #pragma warning(disable: 4522) #endif // _WIN32 class MRenderShadowData; class MRenderData; /// Rendering Callbacks (OpenMayaRender) (OpenMayaRender.py) /** */ class OPENMAYARENDER_EXPORT MRenderCallback { public: /// MRenderCallback(); /// virtual ~MRenderCallback(); // Methods to override, return true on success /// virtual bool shadowCastCallback(const MRenderShadowData& data); /// virtual bool renderCallback(const MRenderData& data); /// virtual bool postProcessCallback(const MRenderData& data); /// static void addCallback(MRenderCallback*, int priority = 0); /// static void removeCallback(MRenderCallback*); private: const void* internalData; }; #ifdef _WIN32 #pragma warning(default: 4522) #endif // _WIN32 // ***************************************************************************** #endif /* __cplusplus */ #endif /* _MRenderCallback */