renderPassStateToken.cpp
Engine/source/renderInstance/renderPassStateToken.cpp
Public Functions
const char *
_get_enable(void * obj, const char * data)
bool
_set_enable(void * object, const char * index, const char * data)
ConsoleDocClass(RenderPassStateBin , "@brief A non-rendering <a href="/coding/file/editortool_8cpp/#editortool_8cpp_1a4cb041169a32ea3d4cacadbb955e06b4">render</a> bin used <a href="/coding/file/cmdgram_8cpp/#cmdgram_8cpp_1a5bafda9519252aa2d0fd038153f77dca">to</a> enable/disable <a href="/coding/file/pointer_8h/#pointer_8h_1aeeddce917cf130d62c370b8f216026dd">a</a> <a href="/coding/file/cmdscan_8cpp/#cmdscan_8cpp_1aeab71244afb687f16d8c4f5ee9d6ef0e">RenderPassStateToken.\n\n</a>" "This is <a href="/coding/file/pointer_8h/#pointer_8h_1aeeddce917cf130d62c370b8f216026dd">a</a> utility <a href="/coding/class/classrenderbinmanager/">RenderBinManager</a> which does not <a href="/coding/file/editortool_8cpp/#editortool_8cpp_1a4cb041169a32ea3d4cacadbb955e06b4">render</a> any <a href="/coding/file/editortool_8cpp/#editortool_8cpp_1a4cb041169a32ea3d4cacadbb955e06b4">render</a> instances. Its only " "used <a href="/coding/file/cmdgram_8cpp/#cmdgram_8cpp_1a5bafda9519252aa2d0fd038153f77dca">to</a> define <a href="/coding/file/pointer_8h/#pointer_8h_1aeeddce917cf130d62c370b8f216026dd">a</a> point in the <a href="/coding/file/editortool_8cpp/#editortool_8cpp_1a4cb041169a32ea3d4cacadbb955e06b4">render</a> bin order at which <a href="/coding/file/pointer_8h/#pointer_8h_1aeeddce917cf130d62c370b8f216026dd">a</a> <a href="/coding/class/classrenderpassstatetoken/">RenderPassStateToken</a> is <a href="/coding/file/cmdscan_8cpp/#cmdscan_8cpp_1aeab71244afb687f16d8c4f5ee9d6ef0e">triggered.\n\n</a>" "@see <a href="/coding/file/cmdscan_8cpp/#cmdscan_8cpp_1aeab71244afb687f16d8c4f5ee9d6ef0e">RenderPassStateToken\n</a>" "@ingroup <a href="/coding/file/cmdscan_8cpp/#cmdscan_8cpp_1aeab71244afb687f16d8c4f5ee9d6ef0e">RenderBin\n</a>" )
ConsoleDocClass(RenderPassStateToken , "@brief Abstract base class <a href="/coding/file/cmdscan_8cpp/#cmdscan_8cpp_1a2732ab74fa0237854c2ba0f75f88a624">for</a> RenderFormatToken, used <a href="/coding/file/cmdgram_8cpp/#cmdgram_8cpp_1a5bafda9519252aa2d0fd038153f77dca">to</a> manipulate what goes on in the <a href="/coding/file/editortool_8cpp/#editortool_8cpp_1a4cb041169a32ea3d4cacadbb955e06b4">render</a> <a href="/coding/file/cmdscan_8cpp/#cmdscan_8cpp_1aeab71244afb687f16d8c4f5ee9d6ef0e">manager\n\n</a>" "You cannot actually instantiate RenderPassToken, only its child:RenderFormatToken. " "<a href="/coding/class/classrenderformattoken/">RenderFormatToken</a> is an implementation which changes the format of the " "back buffer and/or the depth <a href="/coding/file/cmdscan_8cpp/#cmdscan_8cpp_1aeab71244afb687f16d8c4f5ee9d6ef0e">buffer.\n\n</a>" "The <a href="/coding/class/classrenderpassstatebin/">RenderPassStateBin</a> manager changes the rendering state associated with " "<a href="/coding/file/pointer_8h/#pointer_8h_1aeeddce917cf130d62c370b8f216026dd">a</a> token it is declared with. In stock Torque 3D, <a href="/coding/file/pointer_8h/#pointer_8h_1aeeddce917cf130d62c370b8f216026dd">a</a> single example exists in the " "way of AL_FormatToken(found in renderManager." TORQUE_SCRIPT_EXTENSION "). In that script file, all the " "<a href="/coding/file/editortool_8cpp/#editortool_8cpp_1a4cb041169a32ea3d4cacadbb955e06b4">render</a> managers are intialized, and <a href="/coding/file/pointer_8h/#pointer_8h_1aeeddce917cf130d62c370b8f216026dd">a</a> single <a href="/coding/class/classrenderformattoken/">RenderFormatToken</a> is used. This " "implementation basically exists <a href="/coding/file/cmdgram_8cpp/#cmdgram_8cpp_1a5bafda9519252aa2d0fd038153f77dca">to</a> ensure Advanced Lighting works with <a href="/coding/file/cmdscan_8cpp/#cmdscan_8cpp_1aeab71244afb687f16d8c4f5ee9d6ef0e">MSAA.\n\n</a>" " @see <a href="/coding/file/cmdscan_8cpp/#cmdscan_8cpp_1aeab71244afb687f16d8c4f5ee9d6ef0e">RenderFormatToken\n</a>" " @see <a href="/coding/file/cmdscan_8cpp/#cmdscan_8cpp_1aeab71244afb687f16d8c4f5ee9d6ef0e">RenderPassStateBin\n</a>" " @see game/core/scripts/client/renderManager." TORQUE_SCRIPT_EXTENSION "\n" " @ingroup <a href="/coding/file/cmdscan_8cpp/#cmdscan_8cpp_1aeab71244afb687f16d8c4f5ee9d6ef0e">RenderBin\n</a>" )
DefineEngineMethod(RenderPassStateToken , disable , void , () , "@brief Disables the token." )
DefineEngineMethod(RenderPassStateToken , enable , void , () , "@brief Enables the token." )
DefineEngineMethod(RenderPassStateToken , toggle , void , () , "@brief Toggles the token from enabled <a href="/coding/file/cmdgram_8cpp/#cmdgram_8cpp_1a5bafda9519252aa2d0fd038153f77dca">to</a> disabled or vice versa." )
Detailed Description
Public Functions
_get_enable(void * obj, const char * data)
_set_enable(void * object, const char * index, const char * data)
ConsoleDocClass(RenderPassStateBin , "@brief A non-rendering <a href="/coding/file/editortool_8cpp/#editortool_8cpp_1a4cb041169a32ea3d4cacadbb955e06b4">render</a> bin used <a href="/coding/file/cmdgram_8cpp/#cmdgram_8cpp_1a5bafda9519252aa2d0fd038153f77dca">to</a> enable/disable <a href="/coding/file/pointer_8h/#pointer_8h_1aeeddce917cf130d62c370b8f216026dd">a</a> <a href="/coding/file/cmdscan_8cpp/#cmdscan_8cpp_1aeab71244afb687f16d8c4f5ee9d6ef0e">RenderPassStateToken.\n\n</a>" "This is <a href="/coding/file/pointer_8h/#pointer_8h_1aeeddce917cf130d62c370b8f216026dd">a</a> utility <a href="/coding/class/classrenderbinmanager/">RenderBinManager</a> which does not <a href="/coding/file/editortool_8cpp/#editortool_8cpp_1a4cb041169a32ea3d4cacadbb955e06b4">render</a> any <a href="/coding/file/editortool_8cpp/#editortool_8cpp_1a4cb041169a32ea3d4cacadbb955e06b4">render</a> instances. Its only " "used <a href="/coding/file/cmdgram_8cpp/#cmdgram_8cpp_1a5bafda9519252aa2d0fd038153f77dca">to</a> define <a href="/coding/file/pointer_8h/#pointer_8h_1aeeddce917cf130d62c370b8f216026dd">a</a> point in the <a href="/coding/file/editortool_8cpp/#editortool_8cpp_1a4cb041169a32ea3d4cacadbb955e06b4">render</a> bin order at which <a href="/coding/file/pointer_8h/#pointer_8h_1aeeddce917cf130d62c370b8f216026dd">a</a> <a href="/coding/class/classrenderpassstatetoken/">RenderPassStateToken</a> is <a href="/coding/file/cmdscan_8cpp/#cmdscan_8cpp_1aeab71244afb687f16d8c4f5ee9d6ef0e">triggered.\n\n</a>" "@see <a href="/coding/file/cmdscan_8cpp/#cmdscan_8cpp_1aeab71244afb687f16d8c4f5ee9d6ef0e">RenderPassStateToken\n</a>" "@ingroup <a href="/coding/file/cmdscan_8cpp/#cmdscan_8cpp_1aeab71244afb687f16d8c4f5ee9d6ef0e">RenderBin\n</a>" )
ConsoleDocClass(RenderPassStateToken , "@brief Abstract base class <a href="/coding/file/cmdscan_8cpp/#cmdscan_8cpp_1a2732ab74fa0237854c2ba0f75f88a624">for</a> RenderFormatToken, used <a href="/coding/file/cmdgram_8cpp/#cmdgram_8cpp_1a5bafda9519252aa2d0fd038153f77dca">to</a> manipulate what goes on in the <a href="/coding/file/editortool_8cpp/#editortool_8cpp_1a4cb041169a32ea3d4cacadbb955e06b4">render</a> <a href="/coding/file/cmdscan_8cpp/#cmdscan_8cpp_1aeab71244afb687f16d8c4f5ee9d6ef0e">manager\n\n</a>" "You cannot actually instantiate RenderPassToken, only its child:RenderFormatToken. " "<a href="/coding/class/classrenderformattoken/">RenderFormatToken</a> is an implementation which changes the format of the " "back buffer and/or the depth <a href="/coding/file/cmdscan_8cpp/#cmdscan_8cpp_1aeab71244afb687f16d8c4f5ee9d6ef0e">buffer.\n\n</a>" "The <a href="/coding/class/classrenderpassstatebin/">RenderPassStateBin</a> manager changes the rendering state associated with " "<a href="/coding/file/pointer_8h/#pointer_8h_1aeeddce917cf130d62c370b8f216026dd">a</a> token it is declared with. In stock Torque 3D, <a href="/coding/file/pointer_8h/#pointer_8h_1aeeddce917cf130d62c370b8f216026dd">a</a> single example exists in the " "way of AL_FormatToken(found in renderManager." TORQUE_SCRIPT_EXTENSION "). In that script file, all the " "<a href="/coding/file/editortool_8cpp/#editortool_8cpp_1a4cb041169a32ea3d4cacadbb955e06b4">render</a> managers are intialized, and <a href="/coding/file/pointer_8h/#pointer_8h_1aeeddce917cf130d62c370b8f216026dd">a</a> single <a href="/coding/class/classrenderformattoken/">RenderFormatToken</a> is used. This " "implementation basically exists <a href="/coding/file/cmdgram_8cpp/#cmdgram_8cpp_1a5bafda9519252aa2d0fd038153f77dca">to</a> ensure Advanced Lighting works with <a href="/coding/file/cmdscan_8cpp/#cmdscan_8cpp_1aeab71244afb687f16d8c4f5ee9d6ef0e">MSAA.\n\n</a>" " @see <a href="/coding/file/cmdscan_8cpp/#cmdscan_8cpp_1aeab71244afb687f16d8c4f5ee9d6ef0e">RenderFormatToken\n</a>" " @see <a href="/coding/file/cmdscan_8cpp/#cmdscan_8cpp_1aeab71244afb687f16d8c4f5ee9d6ef0e">RenderPassStateBin\n</a>" " @see game/core/scripts/client/renderManager." TORQUE_SCRIPT_EXTENSION "\n" " @ingroup <a href="/coding/file/cmdscan_8cpp/#cmdscan_8cpp_1aeab71244afb687f16d8c4f5ee9d6ef0e">RenderBin\n</a>" )
DefineEngineMethod(RenderPassStateToken , disable , void , () , "@brief Disables the token." )
DefineEngineMethod(RenderPassStateToken , enable , void , () , "@brief Enables the token." )
DefineEngineMethod(RenderPassStateToken , toggle , void , () , "@brief Toggles the token from enabled <a href="/coding/file/cmdgram_8cpp/#cmdgram_8cpp_1a5bafda9519252aa2d0fd038153f77dca">to</a> disabled or vice versa." )
IMPLEMENT_CONOBJECT(RenderPassStateBin )
IMPLEMENT_CONOBJECT(RenderPassStateToken )
1 2//----------------------------------------------------------------------------- 3// Copyright (c) 2012 GarageGames, LLC 4// 5// Permission is hereby granted, free of charge, to any person obtaining a copy 6// of this software and associated documentation files (the "Software"), to 7// deal in the Software without restriction, including without limitation the 8// rights to use, copy, modify, merge, publish, distribute, sublicense, and/or 9// sell copies of the Software, and to permit persons to whom the Software is 10// furnished to do so, subject to the following conditions: 11// 12// The above copyright notice and this permission notice shall be included in 13// all copies or substantial portions of the Software. 14// 15// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING 20// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS 21// IN THE SOFTWARE. 22//----------------------------------------------------------------------------- 23 24#include "renderInstance/renderPassStateToken.h" 25#include "console/consoleTypes.h" 26 27#include "console/engineAPI.h" 28 29 30IMPLEMENT_CONOBJECT(RenderPassStateToken); 31 32ConsoleDocClass( RenderPassStateToken, 33 "@brief Abstract base class for RenderFormatToken, used to manipulate what goes on in the render manager\n\n" 34 35 "You cannot actually instantiate RenderPassToken, only its child: RenderFormatToken. " 36 "RenderFormatToken is an implementation which changes the format of the " 37 "back buffer and/or the depth buffer.\n\n" 38 39 "The RenderPassStateBin manager changes the rendering state associated with " 40 "a token it is declared with. In stock Torque 3D, a single example exists in the " 41 "way of AL_FormatToken (found in renderManager." TORQUE_SCRIPT_EXTENSION "). In that script file, all the " 42 "render managers are intialized, and a single RenderFormatToken is used. This " 43 "implementation basically exists to ensure Advanced Lighting works with MSAA.\n\n" 44 45 "@see RenderFormatToken\n" 46 "@see RenderPassStateBin\n" 47 "@see game/core/scripts/client/renderManager." TORQUE_SCRIPT_EXTENSION "\n" 48 49 "@ingroup RenderBin\n" 50); 51 52void RenderPassStateToken::process(SceneRenderState *state, RenderPassStateBin *callingBin) 53{ 54 TORQUE_UNUSED(state); 55 TORQUE_UNUSED(callingBin); 56 AssertWarn(false, "RenderPassStateToken is an abstract class, you must re-implement process()"); 57} 58 59void RenderPassStateToken::reset() 60{ 61 AssertWarn(false, "RenderPassStateToken is an abstract class, you must re-implement reset()"); 62} 63 64void RenderPassStateToken::enable( bool enabled /*= true*/ ) 65{ 66 TORQUE_UNUSED(enabled); 67 AssertWarn(false, "RenderPassStateToken is an abstract class, you must re-implement enable()"); 68} 69 70bool RenderPassStateToken::isEnabled() const 71{ 72 AssertWarn(false, "RenderPassStateToken is an abstract class, you must re-implement isEnabled()"); 73 return false; 74} 75 76static bool _set_enable( void *object, const char *index, const char *data ) 77{ 78 reinterpret_cast<RenderPassStateToken *>(object)->enable(dAtob(data)); 79 return false; 80} 81 82static const char *_get_enable(void* obj, const char* data) 83{ 84 TORQUE_UNUSED(data); 85 return reinterpret_cast<RenderPassStateToken *>(obj)->isEnabled() ? "true" : "false"; 86} 87 88void RenderPassStateToken::initPersistFields() 89{ 90 addProtectedField("enabled", TypeBool, NULL, &_set_enable, &_get_enable, "Enables or disables this token."); 91 Parent::initPersistFields(); 92} 93 94//------------------------------------------------------------------------------ 95//------------------------------------------------------------------------------ 96 97IMPLEMENT_CONOBJECT(RenderPassStateBin); 98 99 100ConsoleDocClass( RenderPassStateBin, 101 "@brief A non-rendering render bin used to enable/disable a RenderPassStateToken.\n\n" 102 103 "This is a utility RenderBinManager which does not render any render instances. Its only " 104 "used to define a point in the render bin order at which a RenderPassStateToken is triggered.\n\n" 105 106 "@see RenderPassStateToken\n" 107 108 "@ingroup RenderBin\n" 109); 110 111RenderPassStateBin::RenderPassStateBin() 112 : Parent() 113{ 114} 115 116RenderPassStateBin::~RenderPassStateBin() 117{ 118 119} 120 121void RenderPassStateBin::render(SceneRenderState *state) 122{ 123 if(mStateToken.isValid()) 124 mStateToken->process(state, this); 125} 126 127void RenderPassStateBin::clear() 128{ 129 if(mStateToken.isValid()) 130 mStateToken->reset(); 131} 132 133void RenderPassStateBin::sort() 134{ 135 136} 137 138void RenderPassStateBin::initPersistFields() 139{ 140 addProtectedField( "stateToken", TYPEID< RenderPassStateToken >(), Offset( mStateToken, RenderPassStateBin ), 141 _setStateToken, _getStateToken, ""); 142 143 Parent::initPersistFields(); 144} 145 146//------------------------------------------------------------------------------ 147 148DefineEngineMethod(RenderPassStateToken, enable, void, (),, 149 "@brief Enables the token." ) 150{ 151 object->enable(true); 152} 153 154DefineEngineMethod(RenderPassStateToken, disable, void, (),, 155 "@brief Disables the token.") 156{ 157 object->enable(false); 158} 159 160DefineEngineMethod(RenderPassStateToken, toggle, void, (),, 161 "@brief Toggles the token from enabled to disabled or vice versa." ) 162{ 163 object->enable(!object->isEnabled()); 164} 165