50 #define SET_GLOBAL(name, v) \
51 if (((const GR_Uniforms*)this)->globals().name != (v)) \
52 { globals().name = (v); } \
69 exint pushObjectUniforms();
70 void popObjectUniforms(
exint l=-1);
92 void assignRVBindings(
117 objects().myModel =
v;
122 objects().myInvModel = *inv;
126 objects().myInvModel = objects().myModel;
127 objects().myInvModel.invert();
133 objects().myModelView = objects().myModel * global_var.
myView;
135 objects().myModelF = objects().myModel;
136 objects().myInvModelF = objects().myInvModel;
137 objects().myModelViewF = objects().myModelView;
146 globals().myView =
v;
149 globals().myInvView = globals().myView;
150 globals().myInvView.invert();
152 globals().myNormalMat = globals().myView;
153 globals().myNormalMat.invert();
154 globals().myNormalMat.transpose();
156 globals().myViewF = globals().myView;
157 globals().myInvViewF = globals().myInvView;
158 globals().myNormalMatF = globals().myNormalMat;
159 globals().myNormalMatFr1 = globals().myNormalMat[0];
160 globals().myNormalMatFr2 = globals().myNormalMat[1];
161 globals().myNormalMatFr3 = globals().myNormalMat[2];
163 objects().myModelView = globals().myView * objects().myModel;
164 objects().myModelViewF = objects().myModelView;
175 globals().myProjection =
v;
178 globals().myInvProjection = globals().myProjection;
179 globals().myInvProjection.invert();
187 0.0
f, 1.0
f, 0.0
f, 0.0
f,
188 0.0
f, 0.0
f, 0.5
f, 0.0
f,
189 0.0
f, 0.0
f, 0.5
f, 1.0
f);
190 globals().myProjectionF =
194 globals().myProjectionF =
UT_Matrix4F(globals().myProjection);
195 globals().myInvProjectionF = globals().myProjectionF;
196 globals().myInvProjectionF.invert();
197 globals().myIsOrtho = is_ortho;
241 objects().myConstColorMap =
v;
242 objects().myConstColorEnableVK = v.
isVulkan();
243 objects().myConstColorEnableGL = v.
isGL();
248 objects().myEmitColor =
c;
252 objects().myGhostColor =
v;
253 objects().myGhostFactor = gfact;
254 objects().myHasGhosting =
true;
261 objects().myBackfaceColor =
UT_Vector4(v, gfact);
262 objects().myHasBackfaceTint =
true;
292 { objects().myPickBaseID =
v; }
294 {
return objects().myPickBaseID; }
297 { objects().myPickComponentID =
v; }
299 {
return objects().myPickComponentID; }
302 { objects().myPickDepthPass =
v; }
304 {
return objects().myPickDepthPass; }
308 objects().myColorRamp =
v;
309 objects().myColorRampEnableVK = v.
isVulkan();
310 objects().myColorRampEnableGL = v.
isGL();
312 objects().myColorRange =
range;
317 objects().myColorIgnoreGeo =
v;
321 return objects().myColorIgnoreGeo;
328 objects().myColorIgnoreGeo = -1;
333 objects().myColorTransformMode =
mode;
334 objects().myColorTransformRef =
ref;
339 objects().myUseInstancePrimId =
v;
343 { objects().myMaxLocatedId =
v; }
346 {
return objects().myMaxLocatedId; }
349 { objects().myMinLocatedId =
v; }
352 {
return objects().myMinLocatedId; }
357 objects().myLocatedBufVK =
buf;
358 objects().myUseLocatedBufVK = buf ? 1 : 0;
364 objects().myLocatedBufGL =
buf;
365 objects().myUseLocatedBufGL = buf ? 1 : 0;
369 { objects().myLightingEnabled =
v; }
372 {
return objects().myLightingEnabled; }
375 { objects().myTexturesEnabled =
v; }
378 {
return objects().myTexturesEnabled; }
381 { objects().myAlphaCutoff =
cut; }
384 {
return objects().myAlphaCutoff; }
390 #define VK_BLOCK_START (offsetof(ObjectUniforms, myModelF))
402 int mySelectMode = 0;
403 int mySelectType = 0;
404 int mySelectInstance = 0;
405 int myFillSelection = 0;
407 int myPrimConstantID = 0;
408 int myPrimInstanceBase = 0;
438 #define VK_BLOCK_END (offsetof(ObjectUniforms, myAlphaCutoff )\
439 + sizeof(ObjectUniforms::myAlphaCutoff))
445 bool myHasPrimLightMask =
false;
448 bool myHasBackfaceTint =
false;
493 float getDiffuse()
const {
return globals().myDiffuseFactor; }
496 float getAmbient()
const {
return globals().myAmbientFactor; }
515 bool use_world_space)
560 RV_TextureRef &envlightMap() {
return globals().myEnvlightMapRef; }
561 RV_TextureRef &bgenvMap() {
return globals().myBGEnvMapRef; }
576 {
return RenderPass(globals().myRenderPass); }
602 SET_GLOBAL(myPickHasMapVK, (use && globals().myPickMap.isVulkan()));
603 SET_GLOBAL(myPickHasMapGL, (use && globals().myPickMap.isGL()));
610 if (use && globals().myDepthMap.isVulkan())
620 SET_GLOBAL(myHasDepthMapGL, (use && globals().myDepthMap.isGL()));
637 bool myIsGlobalUniformLocked =
false;
640 myIsGlobalUniformLocked =
true;
644 myIsGlobalUniformLocked =
false;
646 bool myGlobalUniformDirty =
true;
648 #define UT_Vector2F_UBO alignas(8) UT_Vector2F
649 #define UT_Vector3F_UBO alignas(16) UT_Vector3F
650 #define UT_Vector4F_UBO alignas(16) UT_Vector4F
651 #define UT_Vector2i_UBO alignas(8) UT_Vector2i
652 #define UT_Vector3i_UBO alignas(16) UT_Vector3i
653 #define UT_Vector4i_UBO alignas(16) UT_Vector4i
654 #define UT_Matrix4F_UBO alignas(16) UT_Matrix4F
658 #define VK_GLOBAL_BLOCK_START (offsetof(GlobalUniforms, myProjectionF))
687 int32 myRenderPass = RENDER_MATERIAL;
721 float myDecorOcclusionFade = 1.0;
746 #define VK_GLOBAL_BLOCK_END (offsetof(GlobalUniforms, myUseEnvlight ) \
747 + sizeof(GlobalUniforms::myUseEnvlight))
777 static void initStaticResources(
RV_Instance* inst);
778 static void cleanupStaticResources();
780 static void prepareThreadedUniforms(
exint num_threads);
781 static void returnThreadedUniforms();
784 static void returnForThread(
int*
level);
789 return myObjectUniforms.last();
793 return myObjectUniforms.last();
799 myGlobalUniformDirty =
true;
800 return myGlobalUniforms;
804 return myGlobalUniforms;
809 GlobalUniforms myGlobalUniforms;
815 bool myIsREPushed =
false;
832 bool myUseVulkanProjection =
false;
845 bool* out_is_new_or_dirty);
847 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)