11 #ifndef GR_LightTypes_h
12 #define GR_LightTypes_h
25 #define LIGHTPARM(TYPE, NAME) \
26 TYPE get##NAME() const { return myLight.NAME; } \
27 void set##NAME(const TYPE &v) \
28 { if(myLight.NAME != v) { myLight.NAME=v; myDirtyFlag=true; } }
30 #define SHADOWPARM(TYPE, NAME) \
31 TYPE get##NAME() const { return myShadow.NAME; } \
32 void set##NAME(const TYPE &v) \
33 { if(myShadow.NAME != v) { myShadow.NAME=v; myShadowDirtyFlag=true; } }
61 &myShadow,
sizeof(Shadow));
73 int32 UseSpecular =
true;
126 if(myProjectMap != map_name || myProjectMapOpId != op_id)
128 myProjectMap = map_name;
129 myProjectMapOpId = op_id;
131 myProjectMapId.reset();
150 &myShadow,
sizeof(Shadow));
182 int32 HasSpot =
false;
183 int32 HasProject =
false;
184 int32 ProjectClamp =
false;
185 int32 HasAttenRamp =
false;
195 bool myTexDirty =
true;
197 int myProjectMapOpId = -999;
242 if(myEnvMap != map_name || myEnvMapOpId != op_id)
245 myEnvMapOpId = op_id;
246 if(map_name.
isstring() != (myLight.HasMap!=0))
248 myLight.HasMap = map_name.
isstring();
288 bool myTexDirty =
true;
290 int myEnvMapOpId = -999;
bool initBlocks(RV_Render *r) override
GR_AmbientLight(const UT_StringHolder &name)
Distant (infinite) light. Rays parallel.
bool initBlocks(RV_Render *r) override
bool initBlocks(RV_Render *r) override
GR_PointLight(const UT_StringHolder &name)
Opaque reference to a texture stored in the RV_TextureCache.
Distant (infinite) light. Rays parallel.
int projectMapOpId() const
bool privInitBlocks(RV_Render *r, void *light_block, int light_size, void *shadow_block, int shadow_size)
const UT_StringHolder & envMap() const
const UT_StringHolder & projectMap() const
Base class for all light types.
GR_DistantLight(const UT_StringHolder &name)
GLuint const GLchar * name
UT_NON_COPYABLE(GR_Light)
#define SHADOWPARM(TYPE, NAME)
void setEnvMap(const UT_StringHolder &map_name, int op_id)
void privBindTexture(RV_Render *r, const UT_StringHolder &map_name, int rel_op_id, RV_TextureRef &map_id, const UT_StringHolder &sampler_name, RV_TextureParms *tex_parms=nullptr, bool is_cube=false)
GR_EnvLight(const UT_StringHolder &name)
#define LIGHTPARM(TYPE, NAME)
bool initBlocks(RV_Render *r) override
virtual RV_ShaderProgram * getShader(bool shadows, bool per_sample)=0
Environment light. Infinitely far away incoming rays from all directions.
void setProjectMap(const UT_StringHolder &map_name, int op_id)
SYS_FORCE_INLINE bool isstring() const