ai_shader_parameval.h
1 /*
2  * Arnold API header file
3  * Copyright (c) 1998-2009 Marcos Fajardo, (c) 2009-2013 Solid Angle SL
4  */
5 
11 #pragma once
12 #include "ai_array.h"
13 #include "ai_color.h"
14 #include "ai_matrix.h"
15 #include "ai_vector.h"
16 #include "ai_types.h"
17 
18 // forward declarations
19 struct AtShaderGlobals;
20 struct AtNode;
21 
79 #define AiShaderEvalParamByte(pid) AiShaderEvalParamFuncByte (sg,node,pid)
80 #define AiShaderEvalParamInt(pid) AiShaderEvalParamFuncInt (sg,node,pid)
81 #define AiShaderEvalParamUInt(pid) AiShaderEvalParamFuncUInt (sg,node,pid)
82 #define AiShaderEvalParamBool(pid) AiShaderEvalParamFuncBool (sg,node,pid)
83 #define AiShaderEvalParamFlt(pid) AiShaderEvalParamFuncFlt (sg,node,pid)
84 #define AiShaderEvalParamRGB(pid) AiShaderEvalParamFuncRGB (sg,node,pid)
85 #define AiShaderEvalParamRGBA(pid) AiShaderEvalParamFuncRGBA (sg,node,pid)
86 #define AiShaderEvalParamVec(pid) AiShaderEvalParamFuncVec (sg,node,pid)
87 #define AiShaderEvalParamPnt(pid) AiShaderEvalParamFuncPnt (sg,node,pid)
88 #define AiShaderEvalParamPnt2(pid) AiShaderEvalParamFuncPnt2 (sg,node,pid)
89 #define AiShaderEvalParamStr(pid) AiShaderEvalParamFuncStr (sg,node,pid)
90 #define AiShaderEvalParamPtr(pid) AiShaderEvalParamFuncPtr (sg,node,pid)
91 #define AiShaderEvalParamArray(pid) AiShaderEvalParamFuncArray(sg,node,pid)
92 #define AiShaderEvalParamMtx(pid) AiShaderEvalParamFuncMtx (sg,node,pid)
93 #define AiShaderEvalParamEnum(pid) AiShaderEvalParamFuncEnum (sg,node,pid)
94 /*\}*/
95 
96 /*\}*/
97 
98 /*
99  * Function form, only if you want to explicitly change shader globals and/or
100  * node yourself. Otherwise it is recommended that you use the macros provided
101  * above.
102  *
103  * \param sg A shader globals context
104  * \param node The shader node whose parameter we want to evaluate
105  * \param pid Index in the shader's parameter enum list
106  * \return Parameter value of the corresponding type
107  */
108 AI_API AtByte AiShaderEvalParamFuncByte (AtShaderGlobals* sg, const AtNode* node, int pid);
109 AI_API int AiShaderEvalParamFuncInt (AtShaderGlobals* sg, const AtNode* node, int pid);
110 AI_API unsigned int AiShaderEvalParamFuncUInt (AtShaderGlobals* sg, const AtNode* node, int pid);
111 AI_API bool AiShaderEvalParamFuncBool (AtShaderGlobals* sg, const AtNode* node, int pid);
112 AI_API float AiShaderEvalParamFuncFlt (AtShaderGlobals* sg, const AtNode* node, int pid);
113 AI_API AtColor AiShaderEvalParamFuncRGB (AtShaderGlobals* sg, const AtNode* node, int pid);
114 AI_API AtRGBA AiShaderEvalParamFuncRGBA (AtShaderGlobals* sg, const AtNode* node, int pid);
115 AI_API AtVector AiShaderEvalParamFuncVec (AtShaderGlobals* sg, const AtNode* node, int pid);
116 AI_API AtPoint AiShaderEvalParamFuncPnt (AtShaderGlobals* sg, const AtNode* node, int pid);
117 AI_API AtPoint2 AiShaderEvalParamFuncPnt2 (AtShaderGlobals* sg, const AtNode* node, int pid);
118 AI_API const char* AiShaderEvalParamFuncStr (AtShaderGlobals* sg, const AtNode* node, int pid);
119 AI_API void* AiShaderEvalParamFuncPtr (AtShaderGlobals* sg, const AtNode* node, int pid);
120 AI_API AtArray* AiShaderEvalParamFuncArray(AtShaderGlobals* sg, const AtNode* node, int pid);
121 AI_API AtMatrix* AiShaderEvalParamFuncMtx (AtShaderGlobals* sg, const AtNode* node, int pid);
122 AI_API int AiShaderEvalParamFuncEnum (AtShaderGlobals* sg, const AtNode* node, int pid);

© 2009-2013 Solid Angle SL · all rights reserved · www.solidangle.com