27 #ifndef _ShaderExPerPixelLighting_ 28 #define _ShaderExPerPixelLighting_ 31 #ifdef RTSHADER_SYSTEM_BUILD_EXT_SHADERS 48 #define SGX_LIB_PERPIXELLIGHTING "SGXLib_PerPixelLighting" 49 #define SGX_FUNC_TRANSFORMNORMAL "SGX_TransformNormal" 50 #define SGX_FUNC_TRANSFORMPOSITION "SGX_TransformPosition" 51 #define SGX_FUNC_LIGHT_DIRECTIONAL_DIFFUSE "SGX_Light_Directional_Diffuse" 52 #define SGX_FUNC_LIGHT_DIRECTIONAL_DIFFUSESPECULAR "SGX_Light_Directional_DiffuseSpecular" 53 #define SGX_FUNC_LIGHT_POINT_DIFFUSE "SGX_Light_Point_Diffuse" 54 #define SGX_FUNC_LIGHT_POINT_DIFFUSESPECULAR "SGX_Light_Point_DiffuseSpecular" 55 #define SGX_FUNC_LIGHT_SPOT_DIFFUSE "SGX_Light_Spot_Diffuse" 56 #define SGX_FUNC_LIGHT_SPOT_DIFFUSESPECULAR "SGX_Light_Spot_DiffuseSpecular" 72 virtual const String& getType()
const;
77 virtual int getExecutionOrder()
const;
82 virtual void updateGpuProgramsParams(Renderable* rend, Pass* pass,
const AutoParamDataSource* source,
const LightList* pLightList);
87 virtual void copyFrom(
const SubRenderState& rhs);
93 virtual bool preAddToRenderState(
const RenderState* renderState, Pass* srcPass, Pass* dstPass);
122 typedef LightParamsList::iterator LightParamsIterator;
123 typedef LightParamsList::const_iterator LightParamsConstIterator;
145 void setLightCount(
const int lightCount[3]);
151 void getLightCount(
int lightCount[3])
const;
157 void setSpecularEnable(
bool enable) { mSpecularEnable = enable; }
162 bool getSpecularEnable()
const {
return mSpecularEnable; }
168 virtual bool resolveParameters(ProgramSet* programSet);
171 bool resolveGlobalParameters(ProgramSet* programSet);
174 bool resolvePerLightParameters(ProgramSet* programSet);
179 virtual bool resolveDependencies(ProgramSet* programSet);
184 virtual bool addFunctionInvocations(ProgramSet* programSet);
190 bool addVSInvocation(Function* vsMain,
const int groupOrder,
int& internalCounter);
196 bool addPSGlobalIlluminationInvocation(Function* psMain,
const int groupOrder,
int& internalCounter);
201 bool addPSIlluminationInvocation(LightParams* curLightParams, Function* psMain,
const int groupOrder,
int& internalCounter);
206 bool addPSFinalAssignmentInvocation(Function* psMain,
const int groupOrder,
int& internalCounter);
214 bool mSpecularEnable;
216 LightParamsList mLightParamsList;
262 static Light msBlankLight;
270 class _OgreRTSSExport PerPixelLightingFactory :
public SubRenderStateFactory
277 virtual const String& getType()
const;
282 virtual SubRenderState* createInstance(ScriptCompiler* compiler, PropertyAbstractNode* prop, Pass* pass, SGScriptTranslator* translator);
287 virtual void writeInstance(MaterialSerializer* ser, SubRenderState* subRenderState, Pass* srcPass, Pass* dstPass);
295 virtual SubRenderState* createInstanceImpl();
SharedPtr< UniformParameter > UniformParameterPtr
HashedVector< Light * > LightList
SharedPtr< Parameter > ParameterPtr
int TrackVertexColourType
An enumeration describing which material properties should track the vertex colours.
This source file is part of OGRE (Object-oriented Graphics Rendering Engine) For the latest info...
LightTypes
Defines the type of light.