1 #ifndef COIN_SOSHADERPARAMETER_H
2 #define COIN_SOSHADERPARAMETER_H
27 #include <Inventor/nodes/SoNode.h>
28 #include <Inventor/nodes/SoSubNode.h>
29 #include <Inventor/fields/SoSFString.h>
30 #include <Inventor/fields/SoSFFloat.h>
31 #include <Inventor/fields/SoSFInt32.h>
32 #include <Inventor/fields/SoSFVec2f.h>
33 #include <Inventor/fields/SoSFVec3f.h>
34 #include <Inventor/fields/SoSFVec4f.h>
35 #include <Inventor/fields/SoMFFloat.h>
36 #include <Inventor/fields/SoMFInt32.h>
37 #include <Inventor/fields/SoMFVec2f.h>
38 #include <Inventor/fields/SoMFVec3f.h>
39 #include <Inventor/fields/SoMFVec4f.h>
40 #include <Inventor/fields/SoSFMatrix.h>
41 #include <Inventor/fields/SoMFMatrix.h>
42 #include <Inventor/fields/SoSFNode.h>
43 #include <Inventor/fields/SoSFEnum.h>
44 #include <Inventor/fields/SoSFImage.h>
46 #include <Inventor/fields/SoSFVec2i32.h>
47 #include <Inventor/fields/SoSFVec3i32.h>
48 #include <Inventor/fields/SoSFVec4i32.h>
49 #include <Inventor/fields/SoMFVec2i32.h>
50 #include <Inventor/fields/SoMFVec3i32.h>
51 #include <Inventor/fields/SoMFVec4i32.h>
53 class SoGLShaderParameter;
54 class SoGLShaderObject;
64 class COIN_DLL_API SoShaderParameter :
public SoNode {
66 SO_NODE_ABSTRACT_HEADER(SoShaderParameter);
77 virtual ~SoShaderParameter();
83 class SoUniformShaderParameterP;
85 class COIN_DLL_API SoUniformShaderParameter :
public SoShaderParameter {
86 typedef SoShaderParameter inherited;
87 SO_NODE_ABSTRACT_HEADER(SoUniformShaderParameter);
90 static void initClass(
void);
91 virtual void updateParameter(SoGLShaderObject *shaderObject) = 0;
92 SbBool isRegularBehavior()
const {
return isRegularBehaviorFlag; }
95 SoUniformShaderParameter();
96 virtual ~SoUniformShaderParameter();
98 SbBool isRegularBehaviorFlag;
100 SoGLShaderParameter * getGLShaderParameter(
const uint32_t cachecontext);
101 void ensureParameter(SoGLShaderObject * shader);
104 SoUniformShaderParameterP * pimpl;
111 class COIN_DLL_API SoShaderParameter1f :
public SoUniformShaderParameter {
112 typedef SoUniformShaderParameter inherited;
113 SO_NODE_HEADER(SoShaderParameter1f);
117 SoShaderParameter1f();
120 static void initClass();
121 virtual void updateParameter(SoGLShaderObject *shaderObject);
124 virtual ~SoShaderParameter1f();
131 class COIN_DLL_API SoShaderParameter1i :
public SoUniformShaderParameter {
132 typedef SoUniformShaderParameter inherited;
133 SO_NODE_HEADER(SoShaderParameter1i);
137 SoShaderParameter1i();
140 static void initClass();
141 virtual void updateParameter(SoGLShaderObject *shaderObject);
144 virtual ~SoShaderParameter1i();
151 class COIN_DLL_API SoShaderParameter2f :
public SoUniformShaderParameter {
152 typedef SoUniformShaderParameter inherited;
153 SO_NODE_HEADER(SoShaderParameter2f);
157 SoShaderParameter2f();
160 static void initClass();
161 virtual void updateParameter(SoGLShaderObject *shaderObject);
164 virtual ~SoShaderParameter2f();
171 class COIN_DLL_API SoShaderParameter2i :
public SoUniformShaderParameter {
172 typedef SoUniformShaderParameter inherited;
173 SO_NODE_HEADER(SoShaderParameter2i);
177 SoShaderParameter2i();
180 static void initClass();
181 virtual void updateParameter(SoGLShaderObject *shaderObject);
184 virtual ~SoShaderParameter2i();
191 class COIN_DLL_API SoShaderParameter3f :
public SoUniformShaderParameter {
192 typedef SoUniformShaderParameter inherited;
193 SO_NODE_HEADER(SoShaderParameter3f);
198 SoShaderParameter3f();
201 static void initClass();
202 virtual void updateParameter(SoGLShaderObject *shaderObject);
205 virtual ~SoShaderParameter3f();
212 class COIN_DLL_API SoShaderParameter3i :
public SoUniformShaderParameter {
213 typedef SoUniformShaderParameter inherited;
214 SO_NODE_HEADER(SoShaderParameter3i);
219 SoShaderParameter3i();
222 static void initClass();
223 virtual void updateParameter(SoGLShaderObject *shaderObject);
226 virtual ~SoShaderParameter3i();
233 class COIN_DLL_API SoShaderParameter4f :
public SoUniformShaderParameter {
234 typedef SoUniformShaderParameter inherited;
235 SO_NODE_HEADER(SoShaderParameter4f);
240 SoShaderParameter4f();
243 static void initClass();
244 virtual void updateParameter(SoGLShaderObject *shaderObject);
247 virtual ~SoShaderParameter4f();
254 class COIN_DLL_API SoShaderParameter4i :
public SoUniformShaderParameter {
255 typedef SoUniformShaderParameter inherited;
256 SO_NODE_HEADER(SoShaderParameter4i);
261 SoShaderParameter4i();
264 static void initClass();
265 virtual void updateParameter(SoGLShaderObject *shaderObject);
268 virtual ~SoShaderParameter4i();
275 class COIN_DLL_API SoShaderParameterArray1f :
public SoUniformShaderParameter {
276 typedef SoUniformShaderParameter inherited;
277 SO_NODE_HEADER(SoShaderParameterArray1f);
282 SoShaderParameterArray1f();
285 static void initClass();
286 virtual void updateParameter(SoGLShaderObject *shaderObject);
289 virtual ~SoShaderParameterArray1f();
296 class COIN_DLL_API SoShaderParameterArray1i :
public SoUniformShaderParameter {
297 typedef SoUniformShaderParameter inherited;
298 SO_NODE_HEADER(SoShaderParameterArray1i);
303 SoShaderParameterArray1i();
306 static void initClass();
307 virtual void updateParameter(SoGLShaderObject *shaderObject);
310 virtual ~SoShaderParameterArray1i();
317 class COIN_DLL_API SoShaderParameterArray2f :
public SoUniformShaderParameter {
318 typedef SoUniformShaderParameter inherited;
319 SO_NODE_HEADER(SoShaderParameterArray2f);
324 SoShaderParameterArray2f();
327 static void initClass();
328 virtual void updateParameter(SoGLShaderObject *shaderObject);
331 virtual ~SoShaderParameterArray2f();
337 class COIN_DLL_API SoShaderParameterArray2i :
public SoUniformShaderParameter {
338 typedef SoUniformShaderParameter inherited;
339 SO_NODE_HEADER(SoShaderParameterArray2i);
344 SoShaderParameterArray2i();
347 static void initClass();
348 virtual void updateParameter(SoGLShaderObject *shaderObject);
351 virtual ~SoShaderParameterArray2i();
358 class COIN_DLL_API SoShaderParameterArray3f :
public SoUniformShaderParameter {
359 typedef SoUniformShaderParameter inherited;
360 SO_NODE_HEADER(SoShaderParameterArray3f);
365 SoShaderParameterArray3f();
368 static void initClass();
369 virtual void updateParameter(SoGLShaderObject *shaderObject);
372 virtual ~SoShaderParameterArray3f();
379 class COIN_DLL_API SoShaderParameterArray3i :
public SoUniformShaderParameter {
380 typedef SoUniformShaderParameter inherited;
381 SO_NODE_HEADER(SoShaderParameterArray3i);
386 SoShaderParameterArray3i();
389 static void initClass();
390 virtual void updateParameter(SoGLShaderObject *shaderObject);
393 virtual ~SoShaderParameterArray3i();
400 class COIN_DLL_API SoShaderParameterArray4f :
public SoUniformShaderParameter {
401 typedef SoUniformShaderParameter inherited;
402 SO_NODE_HEADER(SoShaderParameterArray4f);
407 SoShaderParameterArray4f();
410 static void initClass();
411 virtual void updateParameter(SoGLShaderObject *shaderObject);
414 virtual ~SoShaderParameterArray4f();
422 class COIN_DLL_API SoShaderParameterArray4i :
public SoUniformShaderParameter {
423 typedef SoUniformShaderParameter inherited;
424 SO_NODE_HEADER(SoShaderParameterArray4i);
429 SoShaderParameterArray4i();
432 static void initClass();
433 virtual void updateParameter(SoGLShaderObject *shaderObject);
436 virtual ~SoShaderParameterArray4i();
443 class COIN_DLL_API SoShaderParameterMatrix :
public SoUniformShaderParameter {
444 typedef SoUniformShaderParameter inherited;
445 SO_NODE_HEADER(SoShaderParameterMatrix);
450 SoShaderParameterMatrix();
453 static void initClass();
454 virtual void updateParameter(SoGLShaderObject *shaderObject);
457 virtual ~SoShaderParameterMatrix();
464 class COIN_DLL_API SoShaderParameterMatrixArray :
public SoUniformShaderParameter {
465 typedef SoUniformShaderParameter inherited;
466 SO_NODE_HEADER(SoShaderParameterMatrixArray);
471 SoShaderParameterMatrixArray();
474 static void initClass();
475 virtual void updateParameter(SoGLShaderObject *shaderObject);
478 virtual ~SoShaderParameterMatrixArray();
485 class COIN_DLL_API SoShaderStateMatrixParameter :
public SoUniformShaderParameter {
486 typedef SoUniformShaderParameter inherited;
487 SO_NODE_HEADER(SoShaderStateMatrixParameter);
498 enum MatrixTransform{
508 SoShaderStateMatrixParameter();
509 virtual ~SoShaderStateMatrixParameter();
511 static void initClass(
void);
512 virtual void updateParameter(SoGLShaderObject *shaderObject);