shadowMatHook.h
Engine/source/lighting/shadowMap/shadowMatHook.h
Classes:
class
class
Detailed Description
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#ifndef _SHADOWMATHOOK_H_ 25#define _SHADOWMATHOOK_H_ 26 27#ifndef _MATINSTANCEHOOK_H_ 28#include "materials/matInstanceHook.h" 29#endif 30#ifndef _MATINSTANCE_H_ 31#include "materials/matInstance.h" 32#endif 33 34// TODO: Move ShadowType enum to somewhere 35// with less dependancies. 36#ifndef _SHADOWMAPPASS_H_ 37#include "lighting/shadowMap/shadowMapPass.h" 38#endif 39 40class ShadowMatInstance : public MatInstance 41{ 42 typedef MatInstance Parent; 43 44 bool mLightmappedMaterial; 45public: 46 ShadowMatInstance( Material *mat ); 47 virtual ~ShadowMatInstance() {} 48 49 virtual bool setupPass( SceneRenderState *state, const SceneData &sgData ); 50}; 51 52class ShadowMaterialHook : public MatInstanceHook 53{ 54public: 55 56 ShadowMaterialHook(); 57 58 // MatInstanceHook 59 virtual ~ShadowMaterialHook(); 60 virtual const MatInstanceHookType& getType() const { return Type; } 61 62 /// The material hook type. 63 static const MatInstanceHookType Type; 64 65 BaseMatInstance* getShadowMat( ShadowType type ) const; 66 67 void init( BaseMatInstance *mat ); 68 69protected: 70 71 static void _overrideFeatures( ProcessedMaterial *mat, 72 U32 stageNum, 73 MaterialFeatureData &fd, 74 const FeatureSet &features ); 75 76 /// 77 BaseMatInstance* mShadowMat[ShadowType_Count]; 78 79 80}; 81 82#endif // _SHADOWMATHOOK_H_ 83