15 #include <osg/Uniform>
16 #include <osg/Texture2D>
31 class DtTileSpaceLightGrid;
33 class DtGlTextureBufferObject;
36 class TextureApplyAttribute;
37 class TextureBufferObjectApplyAttribute;
53 void update(
const VectorLights& lights,
const osg::State& state);
56 void setMaxLights(
int maxNumLights);
58 static int getTextureStartOffset(
void);
66 osg::Uniform* getEnableLightingUniform()
const;
69 void setAmbientFactor(
float ambientFactor);
72 void setUseGlobalAmbient(
bool useGlobalAmbient);
75 void setDiffuseFactor(
float diffuseFactor);
78 void setUseGlobalDiffuse(
bool useGlobalDiffuse);
81 void setUseHDR(
bool useHDR);
84 void setDirty(
bool isDirty) { myDirty = isDirty; }
87 void setEmissionFactor(
float emissionFactor);
90 bool dirty()
const {
return myDirty; }
92 void releaseGLObjects(
void);
97 virtual bool install(osg::StateSet* stateset);
100 virtual bool uninstall(osg::StateSet* stateset);
104 void setLightPointScale(
double scale);
105 void setDynamicLightScale(
double scale);
106 void setEmissiveTextureScale(
double scale);
107 void setSpecularScale(
double scale);
108 void setShininessScale(
double scale);
110 void setHdrOutputScale(
double scale);
112 osg::Uniform* createUniform(
const std::string& name, osg::Uniform::Type type,
int count=1);
114 void PackLights(
const osg::Matrixd &normalMatrix,
const VectorLights& lights ,
const osg::State& state);
115 void UpdateTextureLightDataGrid(
void);
116 void UpdateTiledShadingData(
const VectorLights& lights,
const osg::State& state);
118 void UpdateTileLightIndexListTexture();
119 void UpdateTileLightGridCountOffsetsTexture();