50 #define SET_GLOBAL(name, v) \
51 if (((const GR_Uniforms*)this)->globals().name != (v)) \
52 { globals().name = (v); } \
70 exint pushObjectUniforms();
71 void popObjectUniforms(
exint l=-1);
93 void assignRVBindings(
118 objects().myModel =
v;
123 objects().myInvModel = *inv;
127 objects().myInvModel = objects().myModel;
128 objects().myInvModel.invert();
134 objects().myModelView = objects().myModel * global_var.
myView;
136 objects().myModelF = objects().myModel;
137 objects().myInvModelF = objects().myInvModel;
138 objects().myModelViewF = objects().myModelView;
147 globals().myView =
v;
150 globals().myInvView = globals().myView;
151 globals().myInvView.invert();
153 globals().myNormalMat = globals().myView;
154 globals().myNormalMat.invert();
155 globals().myNormalMat.transpose();
157 globals().myViewF = globals().myView;
158 globals().myInvViewF = globals().myInvView;
159 globals().myNormalMatF = globals().myNormalMat;
160 globals().myNormalMatFr1 = globals().myNormalMat[0];
161 globals().myNormalMatFr2 = globals().myNormalMat[1];
162 globals().myNormalMatFr3 = globals().myNormalMat[2];
164 objects().myModelView = globals().myView * objects().myModel;
165 objects().myModelViewF = objects().myModelView;
176 globals().myProjection =
v;
179 globals().myInvProjection = globals().myProjection;
180 globals().myInvProjection.invert();
188 0.0
f, 1.0
f, 0.0
f, 0.0
f,
189 0.0
f, 0.0
f, 0.5
f, 0.0
f,
190 0.0
f, 0.0
f, 0.5
f, 1.0
f);
191 globals().myProjectionF =
195 globals().myProjectionF =
UT_Matrix4F(globals().myProjection);
196 globals().myInvProjectionF = globals().myProjectionF;
197 globals().myInvProjectionF.invert();
198 globals().myIsOrtho = is_ortho;
218 { renderInfo().myExcludeGsplatShadowCasters =
v; }
220 {
return renderInfo().myExcludeGsplatShadowCasters; }
247 objects().myConstColorMap =
v;
248 objects().myConstColorEnableVK = v.
isVulkan();
249 objects().myConstColorEnableGL = v.
isGL();
254 objects().myEmitColor =
c;
258 objects().myGhostColor =
v;
259 objects().myGhostFactor = gfact;
260 objects().myHasGhosting =
true;
267 objects().myBackfaceColor =
UT_Vector4(v, gfact);
268 objects().myHasBackfaceTint =
true;
298 { objects().myPickBaseID =
v; }
300 {
return objects().myPickBaseID; }
303 { objects().myPickComponentID =
v; }
305 {
return objects().myPickComponentID; }
308 { objects().myPickDepthPass =
v; }
310 {
return objects().myPickDepthPass; }
314 objects().myColorRamp =
v;
315 objects().myColorRampEnableVK = v.
isVulkan();
316 objects().myColorRampEnableGL = v.
isGL();
318 objects().myColorRange =
range;
323 objects().myColorIgnoreGeo =
v;
327 return objects().myColorIgnoreGeo;
334 objects().myColorIgnoreGeo = -1;
339 objects().myColorTransformMode =
mode;
340 objects().myColorTransformRef =
ref;
345 objects().myUseInstancePrimId =
v;
349 { objects().myMaxLocatedId =
v; }
352 {
return objects().myMaxLocatedId; }
355 { objects().myMinLocatedId =
v; }
358 {
return objects().myMinLocatedId; }
363 objects().myLocatedBufVK =
buf;
364 objects().myUseLocatedBufVK = buf ? 1 : 0;
370 objects().myLocatedBufGL =
buf;
371 objects().myUseLocatedBufGL = buf ? 1 : 0;
375 { objects().myLightingEnabled =
v; }
378 {
return objects().myLightingEnabled; }
381 { objects().myTexturesEnabled =
v; }
384 {
return objects().myTexturesEnabled; }
387 { objects().myAlphaCutoff =
cut; }
390 {
return objects().myAlphaCutoff; }
396 #define VK_BLOCK_START (offsetof(ObjectUniforms, myModelF))
408 int mySelectMode = 0;
409 int mySelectType = 0;
410 int mySelectInstance = 0;
411 int myFillSelection = 0;
413 int myPrimConstantID = 0;
414 int myPrimInstanceBase = 0;
444 #define VK_BLOCK_END (offsetof(ObjectUniforms, myAlphaCutoff )\
445 + sizeof(ObjectUniforms::myAlphaCutoff))
451 bool myHasPrimLightMask =
false;
454 bool myHasBackfaceTint =
false;
499 float getDiffuse()
const {
return globals().myDiffuseFactor; }
502 float getAmbient()
const {
return globals().myAmbientFactor; }
521 bool use_world_space)
566 RV_TextureRef &envlightMap() {
return globals().myEnvlightMapRef; }
567 RV_TextureRef &bgenvMap() {
return globals().myBGEnvMapRef; }
582 {
return RenderPass(globals().myRenderPass); }
608 SET_GLOBAL(myPickHasMapVK, (use && globals().myPickMap.isVulkan()));
609 SET_GLOBAL(myPickHasMapGL, (use && globals().myPickMap.isGL()));
616 if (use && globals().myDepthMap.isVulkan())
626 SET_GLOBAL(myHasDepthMapGL, (use && globals().myDepthMap.isGL()));
643 bool myIsGlobalUniformLocked =
false;
646 myIsGlobalUniformLocked =
true;
650 myIsGlobalUniformLocked =
false;
652 bool myGlobalUniformDirty =
true;
654 #define UT_Vector2F_UBO alignas(8) UT_Vector2F
655 #define UT_Vector3F_UBO alignas(16) UT_Vector3F
656 #define UT_Vector4F_UBO alignas(16) UT_Vector4F
657 #define UT_Vector2i_UBO alignas(8) UT_Vector2i
658 #define UT_Vector3i_UBO alignas(16) UT_Vector3i
659 #define UT_Vector4i_UBO alignas(16) UT_Vector4i
660 #define UT_Matrix4F_UBO alignas(16) UT_Matrix4F
664 #define VK_GLOBAL_BLOCK_START (offsetof(GlobalUniforms, myProjectionF))
693 int32 myRenderPass = RENDER_MATERIAL;
727 float myDecorOcclusionFade = 1.0;
752 #define VK_GLOBAL_BLOCK_END (offsetof(GlobalUniforms, myUseEnvlight ) \
753 + sizeof(GlobalUniforms::myUseEnvlight))
791 bool myExcludeGsplatShadowCasters =
false;
795 static void initStaticResources(
RV_Instance* inst);
796 static void cleanupStaticResources();
798 static void prepareThreadedUniforms(
exint num_threads);
799 static void returnThreadedUniforms();
802 static void returnForThread(
int*
level);
807 return myObjectUniforms.last();
811 return myObjectUniforms.last();
817 myGlobalUniformDirty =
true;
818 return myGlobalUniforms;
822 return myGlobalUniforms;
836 GlobalUniforms myGlobalUniforms;
837 RenderInfo myRenderInfo;
843 bool myIsREPushed =
false;
860 bool myUseVulkanProjection =
false;
873 bool* out_is_new_or_dirty);
875 gr_SetCache myGlobalSet;
A collection of Vulkan UBO, SSBO, and Image shader bindings (descriptor set)
GLenum GLuint GLenum GLsizei const GLchar * buf
GA_API const UT_StringHolder rot
Opaque reference to a texture stored in the RV_TextureCache.
A class that manages material assignments to different groups of primitives.
Temporary container for either a RV_Render and an RE_Render.
GR_API bool createOrReuseSet(RV_Render *r, UT_UniquePtr< RV_ShaderVariableSet > &set, int set_num, const RV_ShaderProgramBase *shader, bool *created=nullptr, const char *name=nullptr)
std::unique_ptr< T, Deleter > UT_UniquePtr
A smart pointer for unique ownership of dynamically allocated objects.
RE_TextureDimension getTextureType() const
UT_Vector4T< float > UT_Vector4
std::array< T, N > UT_FixedArray
constexpr auto set(type rhs) -> int
UT_Matrix4T< fpreal32 > UT_Matrix4F
Handle to the main interface of Vulkan.
UT_Vector3T< fpreal32 > UT_Vector3F
ImageBuf OIIO_API cut(const ImageBuf &src, ROI roi={}, int nthreads=0)
UT_Vector2T< fpreal32 > UT_Vector2F
UT_Vector4T< fpreal32 > UT_Vector4F
FMT_INLINE void print(format_string< T...> fmt, T &&...args)