61 bool initSceneSetForRender(
74 static void cleanupShaders();
83 void *light_block,
int light_size,
84 void *shadow_block,
int shadow_size);
89 bool is_cube =
false);
117 static inline void intrusive_ptr_add_ref(
GR_Light *gl) { gl->
incref(); }
118 static inline void intrusive_ptr_release(
GR_Light *gl) { gl->
decref(); }
134 auto entry = myLightMap.find(
id);
135 return (entry != myLightMap.end());
141 auto entry = myLightMap.find(
id);
142 if(entry != myLightMap.end())
143 return myList(entry->second);
152 myLightMap.emplace(
id,
int(myList.entries()));
153 myList.append(new_light);
157 auto entry = myLightMap.find(
id);
158 if(entry != myLightMap.end())
160 int index = entry->second;
162 myList.removeIndex(index);
163 for(
int i=0; i<myList.entries(); i++)
164 myLightMap[myList(i)->id()] = i;
169 void removeAllBut(
const UT_Set<int> &active_lights);
A collection of Vulkan UBO, SSBO, and Image shader bindings (descriptor set)
void setLightID(exint id)
void setTransform(const UT_Matrix4D &t)
Base class for various things that can appear in a scene outside of geometry.
Opaque reference to a texture stored in the RV_TextureCache.
GR_LightPtr getLightByIndex(int index) const
bool hasLight(int id) const
UT_IntrusivePtr< GR_Light > GR_LightPtr
UT_NON_COPYABLE(GR_SceneItem)
std::unique_ptr< T, Deleter > UT_UniquePtr
A smart pointer for unique ownership of dynamically allocated objects.
void add(int id, GR_Light *new_light)
GR_LightPtr getLight(int id) const
Base class for all light types.
Wrapper around hboost::intrusive_ptr.
GLuint const GLchar * name
Handle to the main interface of Vulkan.
void setGLLights(RE_LightList *list)
void setHeadlight(bool e)
RE_LightList * glLights()
const UT_Matrix4D & transform() const
const RE_LightList * glLights() const