77 myTime = timedep ?
t : 0.0;
86 exint cache_version = 0;
90 if(myTexCacheVersion != cache_version)
93 if(myDirtyFlag || myDepNode.isDirty())
104 myDepNode.update(myTime);
135 bool created =
false;
136 return (initMaterialSetForRender(r, shader, created) &&
137 initBlocks(r, opts) &&
138 bindSets(r, shader));
143 virtual bool initMaterialSetForRender(
RV_Render *
r,
158 void setOverrides(
const UT_Options *overrides);
167 void clearOpIDs() { myOpNodes.clear(); myOpDepsDirty =
true; }
172 if(!myOpNodes.contains(
id))
174 myOpNodes.emplace(
id);
175 myOpDepsDirty =
true;
199 exint myTexCacheVersion = 0;
200 unsigned myTimeDep : 1,
206 myTexturesLoaded : 1,
221 {
return myDefault; }
225 {
return myFactory; }
233 if(material_id == -1)
234 return myDefault ? myDefault : myFactory;
237 return entry->second;
245 if(material_id == -1 && dp.vk_default_mat_id != -1)
246 material_id = dp.vk_default_mat_id;
248 if(material_id == -1)
249 return myDefault ? myDefault : myFactory;
253 return entry->second;
259 { (*this)[ material->id() ] = material; }
264 { myDefault = material;
if(add_list && material)
add(material); }
269 { myFactory = material;
if(add_list && material)
add(material); }
274 return (entry !=
end());
296 int getParmI(
exint ptype,
int defval = 0)
const;
316 static void initCache();
317 static void destroyCache();
339 exint myCurrentID = 1;
void setFactoryMaterial(const GR_MaterialPtr &material, bool add_list=true)
void dirty(bool dirty=true)
virtual RV_ShaderProgram * getSurfaceShader() const
const GR_MaterialPtr & getFactoryMaterial() const
Base class for various things that can appear in a scene outside of geometry.
bool isTimeDependent() const
bool opDependenciesDirty() const
GT_API const UT_StringHolder time
const UT_Options * getOverrides() const
void setTimeDependent(bool timedep, fpreal t=0.0)
UT_NON_COPYABLE(GR_SceneItem)
std::unique_ptr< T, Deleter > UT_UniquePtr
A smart pointer for unique ownership of dynamically allocated objects.
bool texturesLoaded() const
fpreal getCurrentTime() const
void setTransparent(bool has_tex)
bool isTransparent() const
bool needsTangents() const
static const UT_Matrix4T< float > & getIdentityMatrix()
MaterialType type() const
#define UT_NON_COPYABLE(CLASS)
Define deleted copy constructor and assignment operator inside a class.
const UT_Set< int > opDependencies() const
void add(const GR_MaterialPtr &material)
void setNeedsTangents(bool tan)
static exint cacheRefresh()
bool isDirty(fpreal time)
GLuint const GLchar * name
bool bind(RV_Render *r, RV_ShaderProgram *shader, const GR_DisplayOption *opts)
void clearOpDependenciesDirty()
SYS_API double tan(double x)
A map of string to various well defined value types.
DEP_MicroNode & dependencies()
void setTextured(bool has_tex)
void setNeedsUVs(bool uvs)
void setHasUDIM(bool has_udim)
void setTexturesLoaded(bool loaded)
virtual RV_ShaderProgram * getCurveShader() const
void setDefaultMaterial(const GR_MaterialPtr &material, bool add_list=true)
bool hasMaterial(int material_id) const
ImageBuf OIIO_API add(Image_or_Const A, Image_or_Const B, ROI roi={}, int nthreads=0)
This is a fast, non-string access and cut-down version of UT_Options.
bool SYSisEqual(const UT_Vector2T< T > &a, const UT_Vector2T< T > &b, S tol=SYS_FTOLERANCE)
Componentwise equality.
const GR_MaterialPtr & getDefaultMaterial() const
Reader/Writer mutex class.
Base::const_iterator const_iterator
FMT_CONSTEXPR auto find(Ptr first, Ptr last, T value, Ptr &out) -> bool