11 #ifndef __BRAY_Interface__
12 #define __BRAY_Interface__
43 class BRAY_ShaderGraph;
44 class BRAY_ShaderInstance;
45 class BRAY_VexMaterial;
88 bool isValid()
const {
return mySpace.get() !=
nullptr; }
93 explicit operator bool()
const {
return isValid(); }
99 int motionSegments()
const;
132 bool canErase(
int token)
const;
139 bool isValid()
const {
return myOptions.get() !=
nullptr; }
144 explicit operator bool()
const {
return isValid(); }
147 exint numProperties()
const;
163 template <
typename T>
164 const T *
import(
int token,
T *
val,
size_t n)
const;
173 template <
typename T>
177 template <
typename T>
180 return set(token, &value, 1);
184 template <
typename T>
185 bool isEqual(
int token,
const T *
value,
exint tuple_size)
const;
188 template <
typename T>
191 return isEqual(token, &value, 1);
195 bool isVariadic(
int token)
const;
211 const bool *bval(
int token)
const;
212 const int64 *ival(
int token)
const;
213 const fpreal64 *fval(
int token)
const;
240 static void setExitOnFailedLicense(
bool state=
true);
247 bool isKarmaCPU()
const;
248 bool isKarmaXPU()
const;
254 bool isValid()
const {
return myScene.get() !=
nullptr; }
257 bool threadSafe()
const;
260 bool nestedInstancing()
const;
285 void saveCheckpointASAP();
309 explicit operator bool()
const {
return isValid(); }
310 const BRAY_Scene *
scenePtr()
const {
return myScene.get(); }
315 void commitOptions();
320 const OptionSet constSceneOptions()
const;
326 const OptionSet constObjectProperties()
const;
332 const OptionSet constLightProperties()
const;
337 const OptionSet constCameraProperties()
const;
342 const OptionSet constPlaneProperties()
const;
352 template <
typename T>
354 T *
val,
size_t n)
const
356 return constSceneOptions().import(token, val, n);
360 template <
typename T>
365 return sceneOptions().set(token, value, tuple_size);
369 template <
typename T>
373 return setOption(token, &value, 1);
380 return constSceneOptions().size(token);
387 return constSceneOptions().storage(token);
394 return constSceneOptions().isVariadic(token);
397 {
return *constSceneOptions().bval(t); }
399 {
return *constSceneOptions().ival(t); }
401 {
return *constSceneOptions().fval(t); }
403 {
return *constSceneOptions().sval(t); }
409 template <
typename T>
411 T *
val,
size_t n)
const
413 return constObjectProperties().import(token, val, n);
417 template <
typename T>
422 return objectProperties().set(token, value, tuple_size);
439 {
return lockProperties(
"*", state); }
442 template <
typename T>
446 return setProperty(token, &value, 1);
453 return constObjectProperties().size(token);
460 return constObjectProperties().storage(token);
467 return constObjectProperties().isVariadic(token);
470 {
return *constObjectProperties().bval(t); }
472 {
return *constObjectProperties().ival(t); }
474 {
return *constObjectProperties().fval(t); }
476 {
return *constObjectProperties().sval(t); }
544 bool loadHDA(
const char *
path);
565 : myGeometry(primvar)
566 , myParmName(shader_parm)
569 , myIsArray(is_array)
587 : myPrimvars(primvars)
596 bool isValid()
const {
return myPrimvars !=
nullptr; }
597 explicit operator bool()
const {
return isValid(); }
615 bool isValid()
const {
return myMat !=
nullptr; }
616 explicit operator bool()
const {
return isValid(); }
622 void updateSurface(
const ScenePtr &scene,
626 bool updateDisplace(
ScenePtr &scene,
629 void updateLens(
const ScenePtr &scene,
634 void updateSurfaceCode(
const ScenePtr &scene,
641 bool updateDisplaceCode(
const ScenePtr &scene,
647 void updateLensCode(
const ScenePtr &scene,
653 void updateSurfaceGraph(
const ScenePtr &scene,
658 bool updateDisplaceGraph(
ScenePtr &scene,
662 void updateLensGraph(
const ScenePtr &scene,
667 void setInputs(
const ScenePtr &scene,
683 BRAY_VexMaterial *myMat;
690 : myFaceList(facelist)
691 , myMaterial(material)
733 UT_ASSERT(o &&
"isA<> called with nullptr - use isAValid<>");
734 return X::classof(o);
742 return o && X::classof(o);
751 return static_cast<const X *
>(o);
760 return static_cast<X *
>(o);
769 return isAValid<X>(o) ? static_cast<const X *>(o) :
nullptr;
774 return isA<X>(&o) ? static_cast<const X *>(&o) :
nullptr;
779 return isAValid<X>(o) ? static_cast<X *>(o) :
nullptr;
784 return isA<X>(&o) ? static_cast<X *>(&o) :
nullptr;
805 bool isValid()
const {
return myObject !=
nullptr; }
806 explicit operator bool()
const {
return isValid(); }
814 const BRAY_Object *
objectPtr()
const {
return myObject.get(); }
829 bool setCoordSysAliases(
const ScenePtr &scene,
833 void setInstancePrototype(
const ObjectPtr &proto);
836 void setInstanceTransforms(
ScenePtr &scene,
840 void setInstanceAttributes(
const ScenePtr &scene,
847 void setInstanceProperties(
const ScenePtr &scene,
858 bool validateInstance()
const;
876 bool setGeometry(
const ScenePtr &scene,
881 bool setGeometry(
const ScenePtr &scene,
899 void takeOwnership(BRAY_Object *obj);
924 bool isValid()
const {
return myLight !=
nullptr; }
925 explicit operator bool()
const {
return isValid(); }
930 const BRAY_Light *
lightPtr()
const {
return myLight.get(); }
944 void setTransform(
const SpacePtr &xforms);
953 void setObjectProperties(
const OptionSet &oprops);
959 void setLightProperties(
const OptionSet &lprops);
962 void commitOptions(
ScenePtr &scene);
965 void updateShaderGraph(
const ScenePtr &scene,
972 void updateFilters(
const ScenePtr &scene,
976 void eraseFilter(
const ScenePtr &scene,
984 bool enable_color_temperature,
985 float color_temperature);
1010 bool isValid()
const {
return myInstancer !=
nullptr; }
1013 explicit operator bool()
const {
return isValid(); }
1019 void setInstanceTransforms(
ScenePtr &scene,
1023 void setInstanceProperties(
ScenePtr &scene,
1063 bool isValid()
const {
return myCamera !=
nullptr; }
1064 explicit operator bool()
const {
return isValid(); }
1069 const BRAY_Camera *
cameraPtr()
const {
return myCamera.get(); }
1080 void setShaderMaterial(
const ScenePtr &scene,
1089 void resizeCameraProperties(
int nseg);
1095 void clearClippingPlanes();
1098 void addClippingPlane(
const UT_Vector4D *plane,
int nsegments);
1101 void commitOptions(
ScenePtr &scene);
1119 bool isValid()
const {
return mySpace !=
nullptr; }
1120 explicit operator bool()
const {
return isValid(); }
1125 const BRAY_Camera *
spacePtr()
const {
return mySpace.get(); }
1141 void resizeCameraProperties(
int nseg);
1165 {
return aov.myAOVBuffer == myAOVBuffer; }
1167 {
return !(*
this == aov); }
1172 int getXres()
const;
1173 int getYres()
const;
1176 float getDefaultValue()
const;
1180 bool isMapped()
const;
1183 int getNumExtra()
const;
1187 void *mapExtra(
int idx);
1188 void unmapExtra(
int idx);
1193 bool isConverged()
const;
1194 void setConverged();
1195 void clearConverged();
1198 bool isValid()
const;
1199 explicit operator bool()
const {
return isValid(); }
1227 template <
typename T>
1231 template <
typename T>
1233 {
return setOption(name, &value, 1); }
1251 , myFilename(filename)
1268 template <
typename T>
1272 template <
typename T>
1274 {
return setOption(name, &value, 1); }
1283 myAOVs.emplace_back(name);
1284 return myAOVs.last();
1290 bool result = doCommit();
1339 explicit operator bool()
const {
return myRenderer.get(); }
1343 void clearOutputPlanes();
1345 int getAOVCount()
const;
1355 bool prepareRender();
1358 void render(
bool (*stopreq)(
void *) =
nullptr,
void *
data =
nullptr);
1361 bool isRendering()
const;
1364 bool isError()
const;
1367 bool isPaused()
const;
1370 void prepareForStop();
1376 bool resumeRender();
1379 void setPriority(
int x,
int y);
1385 void clearPriority();
1390 bool enableImageFilters(
1392 bool is_render_settings_prim);
1395 void setUseRenderSettingsPrim(
bool use_render_settings_prim);
1401 BRAY_Renderer *renderer() {
return myRenderer.get(); }
1424 OptionSet nodeParams(BRAY_ShaderInstance *node);
1454 bool isInt()
const {
return myType == 1; }
1462 return myB.size() + myI.size() + myF.size() + myS.size();
1480 {
return myInputs; }
1482 {
return myOutputs; }
1484 {
return myMetadata; }
1489 { myInputs.append(parm); }
1491 { myOutputs.append(parm); }
1493 { myMetadata = metadata; }
1512 const OptionSet getObjectProperties()
const;
1516 void clearObjectProperties();
void cancel()
Cancel this output file for some reason.
BRAY_EventType
Types of events that can be sent as updates to the renderer.
AOV & appendAOV(const UT_StringHolder &name)
Add an AOV to this output file.
static SYS_FORCE_INLINE bool classof(const InstancablePtr *o)
Test if Instancable is of this type.
UT_StringHolder optionS(BRAY_SceneOption t) const
int64 propertyI(BRAY_SceneOption t) const
GT_API const UT_StringHolder filename
const BRAY_Camera * spacePtr() const
bool useAllPrimvars() const
Interface to scene materials.
const VPRM_SpacePtr & space() const
bool operator==(const AOVBufferPtr &aov) const
SYS_FORCE_INLINE const T * propertyImport(BRAY_ObjectProperty token, T *val, size_t n) const
const BRAY_Scene * scenePtr() const
bool commit()
Commit and add this output file to the render.
const BRAY_Camera * cameraPtr() const
void setName(const UT_StringHolder &n)
void addOutput(const Parameter &parm)
float BRAYtime
Consistent representation of time type within BRAY.
getFileOption("OpenEXR:storage") storage
bool operator!=(const AOVBufferPtr &aov) const
InstancablePtr(InstancableType type)
GLsizei const GLfloat * value
SYS_FORCE_INLINE bool isA(const InstancablePtr *o)
SYS_FORCE_INLINE bool setProperty(BRAY_ObjectProperty token, const T &value)
Simple interface to set a scalar property.
GLsizei const GLchar *const * path
AOV(const UT_StringHolder &name)
UT_SharedPtr< BRAY_Light > myLight
FacesetMaterial(const GT_DataArrayHandle &facelist=GT_DataArrayHandle(), const MaterialPtr &material=MaterialPtr())
const UT_Options & options() const
const UT_StringMap< UT_StringHolder > & metadata() const
CoordSysPtr(const UT_SharedPtr< BRAY_Camera > &sp=UT_SharedPtr< BRAY_Camera >())
const UT_Array< AOV > & aovs() const
const UT_StringHolder & name() const
SYS_FORCE_INLINE const T * optionImport(BRAY_SceneOption token, T *val, size_t n) const
const UT_StringHolder & filename() const
Access member data.
bool setOption(const UT_StringHolder &name, const T &value)
Class which writes ASCII or binary JSON streams.
int64 optionI(BRAY_SceneOption t) const
**But if you need a result
SYS_FORCE_INLINE bool set(int token, const T &value)
Simple interface to set a scalar property.
const BRAY_Object * objectPtr() const
FMT_CONSTEXPR auto find(Ptr first, Ptr last, T value, Ptr &out) -> bool
SYS_FORCE_INLINE exint propertySize(BRAY_ObjectProperty token) const
const UT_Array< Parameter > & inputs() const
const BRAY_Light * lightPtr() const
OutputFile(BRAY::ScenePtr &scene, const UT_StringHolder &filename, const UT_StringHolder &type)
CameraPtr(const UT_SharedPtr< BRAY_Camera > &cp=UT_SharedPtr< BRAY_Camera >())
static SYS_FORCE_INLINE bool classof(const InstancablePtr *o)
Test if Instancable is of this type.
IFDmantra you can see code vm_image_mplay_direction endcode When SOHO starts a render
const BRAY_VexMaterial * materialPtr() const
Access to the underling material.
GLintptr GLsizeiptr GLboolean commit
SYS_FORCE_INLINE bool isEqual(int token, const T &value) const
Simple interface for equality of a scalar value.
UT_StringHolder propertyS(BRAY_SceneOption t) const
std::unique_ptr< T, Deleter > UT_UniquePtr
A smart pointer for unique ownership of dynamically allocated objects.
SYS_FORCE_INLINE X * dyn_castValid(InstancablePtr &o)
bool propertyB(BRAY_SceneOption t) const
VPRM_OptionSetPtr & options()
const UT_StringHolder name() const
GLint GLint GLsizei GLint GLenum GLenum type
SYS_FORCE_INLINE const X * cast(const InstancablePtr *o)
SYS_FORCE_INLINE GT_Storage propertyStorage(BRAY_ObjectProperty token) const
Return the storage class of an option.
UT_SharedPtr< BRAY_Camera > myCamera
BRAY_RayVisibility
Ray visibility flags.
UT_SharedPtr< BRAY_Object > myObject
UT_Array< UT_StringHolder > myS
BRAY_Camera * cameraPtr()
std::shared_ptr< T > UT_SharedPtr
Wrapper around std::shared_ptr.
UT_IntrusivePtr< GT_DataArray > GT_DataArrayHandle
SYS_FORCE_INLINE exint optionSize(BRAY_SceneOption token) const
PXL_API const char * getName(const ColorSpace *space)
Return the name of the color space.
constexpr auto set(type rhs) -> int
void setMetadata(const UT_StringMap< UT_StringHolder > &metadata)
ShaderGraphPtr(UT_SharedPtr< BRAY_ShaderGraph > graph)
static SYS_FORCE_INLINE bool classof(const InstancablePtr *o)
Test if Instancable is of this type.
UT_StringHolder myVariable
NodeDecl(const UT_StringHolder &n)
PrimvarSet(const UT_Set< UT_StringHolder > *primvars)
SYS_FORCE_INLINE bool optionIsVariadic(BRAY_SceneOption token) const
Return whether an option has variadic arguments.
SYS_FORCE_INLINE bool setOption(BRAY_SceneOption token, const T *value, exint tuple_size)
Interface to set an option. This template class is specialized for:
SYS_FORCE_INLINE exint lockAllObjectProperties(bool state)
Lock or unlock all object properties.
const UT_Array< Parameter > & outputs() const
bool isValid() const
Test validity.
Class used to define image planes.
GLuint const GLchar * name
GA_API const UT_StringHolder transform
const UT_Options & options() const
GT_DataArrayHandle myFaceList
SYS_FORCE_INLINE bool isAValid(const InstancablePtr *o)
SYS_FORCE_INLINE bool setOption(BRAY_SceneOption token, const T &value)
Simple interface to set a scalar option.
PXL_DataFormat myDataFormat
A map of string to various well defined value types.
A render product represents an output file.
fpreal64 optionF(BRAY_SceneOption t) const
UT_SharedPtr< LightInstancer > myInstancer
MaterialPtr(BRAY_VexMaterial *mat=nullptr)
LeafData & operator=(const LeafData &)=delete
VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE Result createInstance(const VULKAN_HPP_NAMESPACE::InstanceCreateInfo *pCreateInfo, const VULKAN_HPP_NAMESPACE::AllocationCallbacks *pAllocator, VULKAN_HPP_NAMESPACE::Instance *pInstance, Dispatch const &d) VULKAN_HPP_NOEXCEPT
const UT_Set< UT_StringHolder > * primvars() const
SYS_FORCE_INLINE bool setProperty(BRAY_ObjectProperty token, const T *value, exint tuple_size)
Interface to set an property. This template class is specialized for:
AOVBufferPtr(const UT_SharedPtr< BRAY_AOVBuffer > &aov)
SYS_FORCE_INLINE bool propertyIsVariadic(BRAY_ObjectProperty token) const
Return whether an property has variadic arguments.
Class to store JSON objects as C++ objects.
**If you just want to fire and args
void addInput(const Parameter &parm)
GLubyte GLubyte GLubyte GLubyte w
bool setOption(const UT_StringHolder &name, const T &value)
std::shared_ptr< class ShaderMaterial > MaterialPtr
InstancableType instancableType() const
bool optionB(BRAY_SceneOption t) const
Interface to the renderer.
const UT_StringHolder & type() const
fpreal64 propertyF(BRAY_SceneOption t) const
LightInstancerPtr(UT_SharedPtr< LightInstancer > p=nullptr)
SYS_FORCE_INLINE const X * dyn_cast(const InstancablePtr *o)
const VPRM_OptionSetPtr & options() const
BRAY_Object * objectPtr()
LightPtr(const UT_SharedPtr< BRAY_Light > &lp=UT_SharedPtr< BRAY_Light >())
SYS_FORCE_INLINE GT_Storage optionStorage(BRAY_SceneOption token) const
Return the storage class of an option.