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);
105 Light::LightTypes mType;
121 typedef vector<LightParams>::type LightParamsList;
122 typedef LightParamsList::iterator LightParamsIterator;
123 typedef LightParamsList::const_iterator LightParamsConstIterator;
133 void setTrackVertexColourType(TrackVertexColourType type) { mTrackVertexColourType = type; }
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;
270class _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();
int TrackVertexColourType
An enumeration describing which material properties should track the vertex colours.
SharedPtr< Parameter > ParameterPtr
SharedPtr< UniformParameter > UniformParameterPtr