12 #ifndef __VOP_Node_h__
13 #define __VOP_Node_h__
40 #define VOP_OPT_LOW_FLAG 'L'
41 #define VOP_OPT_MEDIUM_FLAG 'M'
42 #define VOP_OPT_HIGH_FLAG 'H'
43 #define VOP_DEBUG_FLAG 'D'
44 #define VOP_MATERIAL_FLAG 'E'
48 #define VOP_PARMORDER_NAME "parmorder"
49 #define VOP_BIND_NAME "bind"
50 #define VOP_GLOBAL_NODE_NAME "global"
51 #define VOP_ILLUM_NODE_NAME "illuminance"
52 #define VOP_PARM_NODE_NAME "parameter"
53 #define VOP_CONST_NODE_NAME "constant"
54 #define VOP_PARMRAMP_NODE_NAME "rampparm"
55 #define VOP_INLINE_CODE_NODE_NAME "inline"
56 #define VOP_SNIPPET_NODE_NAME "snippet"
57 #define VOP_MATERIAL_BUILDER_NODE_NAME "materialbuilder"
58 #define VOP_RSL_PREFIX "rsl_"
59 #define VOP_VARIABLE_INOUT_MAX 2048
62 #define VOP_SUBNET_VARIABLE_PREFIX "_"
70 class VCC_DiagnosticInfo;
81 class VOP_VariableTags;
148 return myInfos(0).myTypeInfo;
154 T default_val )
const;
157 const T & default_val )
const;
170 virtual int getNumInputsFromParent()
const = 0;
171 virtual void NAMEFROMPARM(
UT_String &str,
int idx)
const = 0;
172 virtual void LABELFROMPARM(
UT_String &str,
int idx)
const = 0;
173 virtual void setNAMEFROMPARM(
UT_String &str,
int idx) = 0;
174 virtual void setLABELFROMPARM(
UT_String &str,
int idx) = 0;
190 {
return myTypeInfo; }
193 void setName(
const char *
name );
198 void setVarName(
const char *var_name );
203 void setInitCodeStr(
const char *init_code );
205 {
return myInitCodeStr; }
208 void setInputIndex(
int input_index );
210 {
return myInputIdx; }
213 void setOutputIndex(
int output_index );
215 {
return myOutputIdx; }
218 void setExported(
bool exported );
220 {
return myIsExported; }
239 myGroupsAbove(groups_above),
247 : myGroupName(group_name),
249 myGroupsAbove(groups_above),
250 myIsExpanded(expanded),
299 virtual void getParameterBlock(
UT_String &parmstr,
300 const char *shader_contexts);
303 virtual void getParameterDeclaration(
UT_String &parmdecl,
309 virtual void getParameterComment(
UT_String &parm_comment,
315 virtual bool definesShaderExtraParameters()
const;
329 virtual void getPragmas(
UT_String &pragmastr,
338 virtual void getOuterCode(
UT_String &codestr,
346 virtual bool getParmConstantString(
const char *parmname,
353 static const char *getTypeNameFromType(
const VOP_TypeInfo &type_info,
357 bool getParmPrintableString(
const char *parmname,
360 bool expand_string)
const;
365 virtual bool getIsParmGenerator()
const;
369 #define VOP_IMPLEMENT_CASTS(NAME) \
370 static const VOP_##NAME *castTo##NAME(const OP_Node *node) { \
371 const VOP_Node *vop = CAST_VOPNODE(node); \
372 return vop ? vop->castTo##NAME() : nullptr; } \
373 static VOP_##NAME *castTo##NAME(OP_Node *node) { \
374 VOP_Node *vop = CAST_VOPNODE(node); \
375 return vop ? vop->castTo##NAME() : nullptr; } \
376 virtual const VOP_##NAME *castTo##NAME() const { return nullptr; } \
377 virtual VOP_##NAME *castTo##NAME() { return nullptr; }
384 #undef VOP_IMPLEMENT_CASTS
394 void createAutoCodeGenerator();
398 void createAutoShaderChildren();
412 virtual void initializeNode();
421 virtual void ensureParametersAreValid();
422 static void incrementVariableName(
UT_String &varname);
461 virtual UT_IntArray getShaderLayerExportsInputsToCopy(
int out_idx,
477 VOP_Type getInputType(
int idx)
const;
491 virtual void getAllowedInputTypeInfos(
unsigned idx,
493 virtual void getAllowedInputTypes(
unsigned idx,
502 void getAllAllowedInputTypeInfos(
unsigned idx,
513 virtual int getSignatureCount()
const;
520 virtual void setCurrentSignature(
const char *
name);
529 void setInputVariableOverride(
int input_index,
540 virtual void getFixedOutputVariable(
UT_String &var,
int idx);
544 virtual void getOutputVariableName(
UT_String &var,
int idx)
const;
557 virtual bool shouldCheckInputContextForMergeInputNodeList()
const;
575 static void deleteAutoConvertNodesIn(
VOP_NodeList& nodes);
591 virtual bool forceCodeGenerationOfInputs(
593 bool check_shader_context)
const;
597 bool forceCodeGenerationInContext(
602 bool isInputForShaderType(
int input_idx,
604 bool isOutputForShaderType(
int output_idx,
620 virtual void findAllShaders(
VOP_NodeList &shader_nodes,
627 virtual bool canDefineShader()
const;
637 virtual bool isShader()
const;
643 virtual bool isShader(
VOP_Type shader_type)
const;
647 virtual bool translatesDirectlyToUSD()
const;
651 virtual bool isUSDNodeGraph()
const;
657 virtual bool isCachedShader()
const;
662 bool isExternalShader()
const;
677 virtual bool isEncapsulatedShader()
const;
686 virtual VOP_Type getShaderType()
const;
687 const char * getRenderMask()
const;
694 fpreal &
v,
int i,
int thr)
override
704 const char* parm_name);
706 const char* parm_name);
712 virtual bool getCachedShaderCode(std::ostream &os,
736 virtual bool isVopMethod()
const;
737 virtual bool isVopMethodPublic()
const;
743 virtual void getVopFunctionName(
UT_String &function_name)
const;
745 virtual void getVopFunctionArgInfos(
750 void getShaderArgInfos(
755 bool isParmForShaderType(
const PRM_Parm &parm,
756 VOP_Type shader_type,
bool check_context_tag);
766 void getVopFunctionArgInfosFromInputsAndOutputs(
768 int first_input,
int last_input,
769 int first_output,
int last_output,
770 bool prefix_input_arg_and_var_names,
771 bool prefix_input_var_names =
false,
776 void getVopFunctionArgInfosFromNodeParameters(
779 void getVopFunctionArgInfosFromNodeParameters(
785 void getVopFunctionArgInfosFromInputsOutputsAndParms(
787 int first_input,
int last_input,
788 int first_output,
int last_output,
789 bool prefix_input_arg_and_var_names,
790 bool prefix_input_var_names =
false,
797 void getVopFunctionArgInfosFromGlobals(
802 virtual void getVopFunctionArgInfosFromExports(
808 virtual void registerExtraVarRequests(
816 void pruneVopFunctionArgInfos(
818 bool keep_all_export_args =
false );
823 bool isParmAtDefaultValue(
const char *parm,
843 bool use_defined_input_defaults);
847 void getVopFunctionCallCode(
UT_String &codestr,
858 virtual bool shouldOutputNodeVariableDeclarations()
const;
871 void setTablesFromVop(
VOP_Node *vop);
879 bool mustBeWritable);
885 void addParentSubnetVariable(
const char *varname,
887 void deleteParentSubnetVariable(
const char *varname);
890 virtual bool shouldPrefixInputVariablesInsideSubnet()
const;
894 virtual bool usesSubnetConnectorsAsShaderParms()
const;
898 virtual bool showsShaderParmsAsSubnetConnectors()
const;
902 virtual void shaderParmGrandChildAdded(
VOP_Node *grand_child);
903 virtual void shaderParmGrandChildChanged(
VOP_Node *grand_child);
904 virtual void shaderParmGrandChildDeleted(
VOP_Node *grand_child);
909 bool setInOutLOD(
int level,
bool inoff);
910 bool getInOutLOD(
int level)
const;
912 static void setLODPref(
int value);
917 unsigned outputIdx = 0)
override;
922 unsigned outputIdx = 0)
override;
931 const char *
label,
int,
939 bool forcesubnet =
false)
override;
946 virtual bool isConnected(
int inputidx,
bool recursive);
954 virtual void dirtyShaderList();
961 virtual VOP_Node *getSubnetOutputNode()
const;
964 bool isInNonShaderSubNetwork()
const;
1004 VOP_Node *insertParmGenerator(
int inputidx,
1005 InputParmGenType
type);
1006 VOP_Node *insertNode(
int inputidx,
const char* nodetype,
1007 bool connect_to_input,
1008 const char* undo_string = NULL);
1010 int inputParmTypeIndex(
int inputidx,
1012 const char *inputParmTypeString(
int inputidx,
1026 void insertParmGeneratorsForAllInputs(
1027 InputParmGenType
type,
1033 void insertBindExportsForAllOutputs(
bool subnet);
1034 VOP_Node *insertBindExport(
int outputidx,
bool subnet);
1038 void rewireOutputConnections(
1045 virtual void getParmNameFromInput(
UT_String &parmname,
1046 int inputidx)
const;
1047 virtual void getParmNameFromOutput(
UT_String &parmname,
1048 int outputidx)
const;
1051 const PRM_Parm *getParmFromInput(
int inputidx)
const;
1052 const PRM_Parm *getParmFromOutput(
int outputidx)
const;
1059 bool outputDefaultParmDefinition(std::ostream &os,
int idx);
1062 void saveNodeInputAndOutputDefinitions(std::ostream &os);
1067 bool saveParmValues(std::ostream &os);
1077 {
return myLanguage; }
1079 { myLanguage = language; }
1092 static void cacheAllParmNames(
OP_Node *root);
1094 static void recalculateAllParmDefiners(
OP_Node *root,
1095 bool dive_into_subnets =
true,
1107 VOP_TypeInfo getAutoConvertTargetTypeInfo(
int input_idx);
1108 VOP_Type getAutoConvertTargetType(
int input_idx);
1114 VOP_TypeInfo getAutoConvertTypeInfoFromType(
int input_idx,
1116 VOP_Type getAutoConvertTypeFromType(
int input_idx,
1122 void clearAutoConvertInfos();
1125 int getNumAutoConvertNodes();
1137 void appendOutputOverrideCode(
UT_String& str_code);
1143 bool needToExecute();
1150 const char *path_prefix =
"",
1154 const char *
path=0)
override;
1158 bool setDebug(
bool on_off)
override;
1161 bool getMaterialFlag()
const;
1162 bool setMaterialFlag(
bool on_off);
1163 virtual void initMaterialFlag();
1165 void getSubOutputAndSubInputs(
OP_Node *&outputnode,
1168 void hideInput(
int input_index,
bool hide);
1169 void setReferenceTargetDefaults(
int input_index,
bool do_set);
1170 bool getAllowEditingParmDefaults(
int input_index);
1184 bool isSingleContextType()
const;
1206 bool isCVEXPathParm(
const char *parm_name)
const;
1210 static void refreshShaderParmTemplatesIfNeeded(
OP_Node *
n);
1219 bool deleteIndependentInputNodes(
int input_index);
1222 bool doesDependOnlyOn(
const VOP_Node* other_node,
1223 int max_connections,
bool recurse);
1244 { input_indices.
clear(); }
1247 virtual void getInputDefaultValue(
UT_String &def,
int idx)
const;
1251 virtual int getNumNodeDefinedOutputs()
const;
1258 virtual int getNumSubnetInputsForChildren()
const;
1259 virtual int getSubnetInputIndexForChildren(
int child_input)
const;
1260 int getChildConnectorIndexFromParent(
int parent_input)
const;
1261 virtual void getSubnetOutputTerminalChild(
1262 VOP_Node * &output_vop,
int &input_idx,
1263 int subnet_output_idx )
const;
1273 static void setRunCreateScriptCB(
void (*)(
const char *node_path,
1274 const char*render_mask,
VOP_Type shader_type ));
1282 void updateInputFlagsFromOperator(
1293 virtual void getAllowedNamedInputTypeInfos(
1296 virtual void getAllowedNamedInputTypes(
1302 VOP_Type getNamedAutoConvertTargetType(
1307 VOP_Type getNamedAutoConvertTypeFromType(
1315 const char* nodetype,
1316 bool connect_to_input,
1317 const char* undo_string = NULL);
1320 {
return myVopDataMicroNode; }
1328 void setErrorsDirty();
1345 bool getInputTypeInfoFromInputNode(
1347 bool grow_inputs_to_idx =
false)
const;
1355 void getInputNameFromInputNode(
UT_String &
in,
int idx,
1356 bool check_output_names)
const;
1363 bool create_missing_multiparms,
1368 PRM_Parm *&parm,
int &vector_index,
1376 int getInputVisibleIndex(
int idx);
1378 int getOutputVisibleIndex(
int idx);
1385 void setAllInputGroupsExpanded(
bool expanded);
1403 static bool getShowPreviewPref();
1404 static void setShowPreviewPref(
bool show);
1419 int binary = 0)
override;
1433 bool getPropertyFromNode(
1437 bool getPropertyFromNode(
1441 bool getPropertyFromCodeGen(
1445 bool getPropertyFromCodeGen(
1449 bool getPropertyFromInputs(
1453 bool getPropertyFromInputs(
1478 virtual void getContextsForCodeGeneration(
1484 virtual void getOutputNameSubclass(
UT_String &out,
int idx)
const;
1485 virtual VOP_Type getOutputTypeSubclass(
int idx);
1486 virtual void getOutputTypeInfoSubclass(
VOP_TypeInfo &type_info,
1492 void dirtyCachedOutputData();
1497 virtual void getInputNameSubclass(
UT_String &
in,
int idx)
const;
1498 virtual int getInputFromNameSubclass(
const UT_String &
in)
const;
1499 int findInputFromInputName(
const UT_String &
in)
const;
1500 virtual void getInputTypeInfoSubclass(
VOP_TypeInfo &type_info,
1503 virtual VOP_Type getInputTypeSubclass(
int idx);
1504 virtual bool getIsInputVisibleDefaultSubclass(
int idx);
1513 virtual void getAllowedInputTypeInfosSubclass(
unsigned idx,
1515 virtual void getAllowedInputTypesSubclass(
unsigned idx,
1522 virtual bool getRequiresInputParameters()
const;
1525 bool disableConnectedParameters();
1528 bool updateParmsActiveState(
bool active);
1543 virtual void addDiagnosticInfo(
const VCC_DiagnosticInfo &diag);
1547 int srcidx,
int dstidx);
1562 const char *
path = 0)
override;
1566 const char *
path = 0)
override;
1573 void getInputsRecursiveHelper(
OP_NodeList& nodes_out,
1576 bool doesDependOnlyOnHelper(
const VOP_Node* other_node,
1577 int max_connections,
1585 bool is_child_call =
false)
override;
1593 virtual bool generateErrorsSubclass();
1597 virtual bool shouldCheckTimeDependence()
const;
1604 bool allowedToChangeParms();
1619 bool check_outputs )
const;
1623 virtual void getTentativeInputName(
UT_String &
in,
int idx)
const;
1627 virtual void getTentativeOutputName(
UT_String &out,
int idx)
const;
1631 void setVisibleConnectorsDirty();
1638 bool getIncludeIllumVars()
const;
1644 void propagateOpChangeToCodeGenerator(
1648 void reportRecursiveLoopError();
1651 const char *getParameterOpName(
int input_index);
1652 const char *getConstantOpName(
int input_index);
1653 bool isInputRampRBG(
int input_index);
1656 virtual int getParameterOpOutputIndex();
1663 void insertParmVOPsForAllInputs(
1672 void insertConstantVOPsForAllInputs(
1686 void updateVisibleConnectorInfo();
1694 exint myLatestOpChangedId;
1695 unsigned int myMakingInputList : 1,
1696 myIsSearchingForParmInputs : 1,
1699 static VOP_Node *theOriginalOpChanged;
1700 static exint theLatestOpChangedId;
1701 static int theLODPref;
1702 static bool theShowPreviewPref;
1704 using IntPair = std::pair<int, int>;
1710 mutable UT_Lock myCachedDataLock;
1711 mutable int myCachedOutputNodeId;
1721 bool myVisibleConnectorsDirty;
virtual int saveCookedData(std::ostream &os, OP_Context &, int binary=0)=0
Reprsents a language for which VOPs can generate source code.
virtual void buildVexScript(UT_String &script, fpreal t, OP_Node *owner, UT_Map< int, bool > *visitlist=0)
int getOutputIndex() const
virtual bool getParameterOrProperty(const UT_StringRef &name, fpreal now, OP_Node *&op, PRM_Parm *&parm, bool create_missing_multiparms, PRM_ParmList *obsolete=0)
void adoptFromString(UT_String &str)
std::vector< VOP_AutoConvertInfo > TAutoConvertInfos
virtual bool updateParmsFlags()
VOP_AutoConvert * myACNode
fpreal getH() const override
Node position/scale is used by the UI.
VOP_ContextType myContextType
std::pair< VOP_Node *, int > InputVariableOverride
fpreal getW() const override
Node position/scale is used by the UI.
virtual void getInputName(UT_String &in, int idx) const
virtual bool willAutoconvertNamedInputType(const OP_ConnectorId &input_name)
GLuint const GLchar * name
#define SYS_VISIBILITY_EXPORT
const UT_StringHolder & getName() const
#define VOP_IMPLEMENT_CASTS(NAME)
virtual void setFlag(char tag, int8 val)
GLenum GLenum GLenum GLenum mapping
GLuint const GLfloat * val
virtual OP_OpTypeId getOpTypeID() const =0
UT_API UT_ErrorSeverity UTaddFatal(const char *type, int code, const char *msg=0, const UT_SourceLocation *loc=0)
GLenum GLsizei GLenum GLenum const void * table
GLenum GLsizei GLsizei GLsizei GLsizei GLbitfield flags
GLint GLsizei const GLuint64 * values
const VOP_TypeInfo & getTypeInfo() const
virtual void moveInput(int srcidx, int dstidx, bool forcesubnet=false)
virtual bool preUpdateParmsFlags()
vop_Connector(int groups_above, const UT_StringHolder &group_name, int index, bool expanded)
virtual void finishedLoadingNetwork(bool is_child_call=false)
virtual bool isOutputVopNode() const
Parameters for OP_Node::getInfoText()/OP_Node::getNodeSpecificInfoText()
UT_SymbolMap< VOP_ParmGeneratorList * > VOP_LocalChannelMap
UT_SymbolMap< VOP_ParmGenerator * > VOP_ParmGeneratorMap
virtual void getNodeSpecificInfoText(OP_Context &context, OP_NodeInfoParms &parms)
UT_API UT_ErrorSeverity UTaddMessage(const char *type, int code, const char *msg=0, const UT_SourceLocation *loc=0)
virtual OP_ERROR cookMe(OP_Context &context)=0
void addFatal(VOP_ErrorCodes code, const char *msg=0, const UT_SourceLocation *loc=0)
static int & getLODPref()
std::unique_ptr< T, Deleter > UT_UniquePtr
A smart pointer for unique ownership of dynamically allocated objects.
GLsizei GLenum GLenum * types
virtual void clearInterrupted()
virtual int getLatestVopVersion() const
virtual void saveDialogScriptExtraInfo(std::ostream &os)
virtual const char * getOpType() const =0
const VOP_Language * myLanguage
void(*)(VOP_Node *, UT_String &, fpreal, OP_Node *, UT_Map< int, bool > *) VexBuildFn1
virtual void findSimpleInputCandidatesFromOutput(int output_index, UT_IntArray &input_indices)
virtual VOP_Node * getPreResolveVariableSrc() const
bool isInitialized() const
const VOP_TypeInfo & getAnyTypeInfo() const
std::shared_ptr< T > UT_SharedPtr
Wrapper around std::shared_ptr.
GLint GLenum GLsizei GLint GLsizei const void * data
virtual OP_ERROR setInput(unsigned idx, OP_Node *op, unsigned outputIdx=0)
Sets a given input to connect to an output of a particular node.
const GLuint GLenum const void * binary
virtual OP_ERROR setNamedInput(const OP_ConnectorId &input_name, OP_Node *op, const OP_ConnectorId *output_name=nullptr)
New input functions that use names instead of indices.
void opChanged(OP_EventType reason, void *data=0) override
virtual void preOpChanged(OP_EventType, void *)
virtual OP_ERROR saveIntrinsic(std::ostream &os, const OP_SaveFlags &flags)
virtual bool addOrMoveVisualizerToOutput(int outputidx)
GLuint const GLuint * names
const UT_StringHolder & getInitCodeStr() const
virtual int getOutputFromName(const UT_String &out) const
virtual void userDataChanged(const UT_StringHolder &key)
UT_StringHolder myDescription
UT_ValArray< VOP_ParmGenerator * > VOP_ParmGeneratorList
virtual bool isSubnetInput() const
Returns true if the node is considered a subnet's input node.
SYS_VISIBILITY_EXPORT void newVopOperator(OP_OperatorTable *table)
*Note that the tasks the is the thread number *for the or if it s being executed by a non pool thread(this *can happen in cases where the whole pool is occupied and the calling *thread contributes to running the work load).**Thread pool.Have fun
virtual bool getParameterOrPropertyByChannel(const UT_StringRef &chname, fpreal now, OP_Node *&op, PRM_Parm *&parm, int &vector_index, PRM_ParmList *obsolete=0)
int getInputIndex() const
bool evalVariableValue(fpreal &v, int i, int thr) override
For expanding compiler string used in auto code generator.
GLuint GLuint GLsizei GLenum type
virtual OP_DataType getCookedDataType() const =0
OSL_ContextType
RenderMan shader context types.
GLuint GLsizei GLsizei GLchar * label
virtual void ensureErrorsAreUpdatedSubclass()
UT_Array< vop_Connector > vop_ConnectorArray
virtual VOP_Node * findSimpleInputFromOutput(int output_index)
GLsizei const GLchar *const * path
virtual bool getIsInputVisibleDefault(int idx)
virtual bool isAutoConvertNode() const
Retruns true if the node is an internal auto-convert node.
virtual OP_ERROR setNamedInputReference(const OP_ConnectorId &input_name, const char *label, int, const OP_ConnectorId *output_name=nullptr)
virtual const char * getChildType() const
void addError(VOP_ErrorCodes code, const char *msg=0, const UT_SourceLocation *loc=0)
virtual VOP_OutputNameEditorSource * getOutputNameEditorSource()
Returns a pointer used by OPUI_OutputNameEditor to get and set data.
virtual const char * getFileExtension(int binary) const =0
virtual int findParametersOrProperties(fpreal now, OP_PropertyLookupList &list)
virtual void getExtraNodesForCopyOrDelete(OP_NodeList &extras) const
void addWarning(VOP_ErrorCodes code, const char *msg=0, const UT_SourceLocation *loc=0)
Parameters for OP_Node::fillInfoTree()/OP_Node::fillInfoTreeNodeSpecific()
virtual void fillInfoTreeNodeSpecific(UT_InfoTree &tree, const OP_NodeInfoTreeParms &parms)
UT_ValArray< VOP_GlobalVarData * > VOP_GlobalVarList
void getInputName(UT_StringHolder &in, int idx) const
virtual void referencedParmChanged(int pi)
void addMessage(VOP_ErrorCodes code, const char *msg=0, const UT_SourceLocation *loc=0)
vop_Connector(int groups_above, int index=-1)
UT_API UT_ErrorSeverity UTaddWarning(const char *type, int code, const char *msg=0, const UT_SourceLocation *loc=0)
virtual bool loadPacket(UT_IStream &is, short class_id, short sig, const char *path=0)
virtual int getInputFromName(const UT_String &in) const
UT_SharedPtr< const VOP_VariableTags > VOP_VariableTagsHandle
virtual OP_OpTypeId getChildTypeID() const =0
const OP_DataMicroNode & dataMicroNodeConst() const override
virtual bool runCreateScript()
virtual bool evalVariableValue(UT_String &val, int index, int thread)
constexpr T pi()
Pi constant taken from Boost to match old behaviour.
std::map< VOP_Node *, VOP_MergeNodeInfo > TMergeNodeInfos
bool load(UT_IStream &is, const char *ext="", const char *path=0) override
virtual OP_ERROR save(std::ostream &os, const OP_SaveFlags &flags, const char *path_prefix="", const UT_String &name_override=UT_String())
VOP_ShaderNameStyle
The allowed name formats when asking for shader name.
RSL_ContextType
RenderMan shader context types.
virtual void getOutputName(UT_String &out, int idx) const
virtual bool shouldPreResolveOutput(int output_index) const
UT_SymbolMap< VOP_GlobalVarData * > VOP_GlobalVarMap
UT_ValArray< VOP_Node * > VOP_NodeList
virtual bool getDebug() const
virtual bool willAutoconvertInputType(int input_idx)
virtual VOP_CodeGenerator * getVopCodeGenerator()
virtual void getAdditionalUndoNodes(const OP_NodeList &orig_list, OP_NodeList &nodes_for_input_undo)
void clear()
Resets list to an empty list.
virtual VOP_Node * getRealDefinition()
void getOutputName(UT_StringHolder &out, int idx) const
static const char * theChildTableName
virtual void onInputAllocated(OP_Input *new_input, int index)
Overriden in VOPs.
GLsizei const GLfloat * value
const UT_StringHolder & getName() const
virtual OP_ERROR bypassMe(OP_Context &context, int &copied_input)=0
const VOP_Language * getLanguage() const
virtual const PRM_Template * getShaderParmTemplates()
void stealGlobalErrorsForHelper()
UT_StringHolder myGroupName
virtual VOP_CodeGenerator * getVopAutoCodeGenerator()
UT_API UT_ErrorSeverity UTaddError(const char *type, int code, const char *msg=0, const UT_SourceLocation *loc=0)
ImageBuf OIIO_API channels(const ImageBuf &src, int nchannels, cspan< int > channelorder, cspan< float > channelvalues={}, cspan< std::string > newchannelnames={}, bool shuffle_channel_names=false, int nthreads=0)
virtual void onCreated()
Overriden in VOPs.
void setLanguage(const VOP_Language *language)
virtual bool setDebug(bool on_off)
void(*)(VOP_Node *, UT_String &, fpreal, DEP_MicroNode *, UT_Map< int, bool > *) VexBuildFn2
virtual void deleteCookedData()=0
virtual OP_ERROR setInputReference(unsigned idx, const char *label, int keeppos, unsigned outputIdx=0)
Connects an input to particular node by name in the network.
virtual void postOpChanged(OP_EventType, void *)