1 #ifndef COIN_SOSHADERPARAMETER_H
2 #define COIN_SOSHADERPARAMETER_H
36 #include <Inventor/nodes/SoNode.h>
37 #include <Inventor/nodes/SoSubNode.h>
38 #include <Inventor/fields/SoSFString.h>
39 #include <Inventor/fields/SoSFFloat.h>
40 #include <Inventor/fields/SoSFInt32.h>
41 #include <Inventor/fields/SoSFVec2f.h>
42 #include <Inventor/fields/SoSFVec3f.h>
43 #include <Inventor/fields/SoSFVec4f.h>
44 #include <Inventor/fields/SoMFFloat.h>
45 #include <Inventor/fields/SoMFInt32.h>
46 #include <Inventor/fields/SoMFVec2f.h>
47 #include <Inventor/fields/SoMFVec3f.h>
48 #include <Inventor/fields/SoMFVec4f.h>
49 #include <Inventor/fields/SoSFMatrix.h>
50 #include <Inventor/fields/SoMFMatrix.h>
51 #include <Inventor/fields/SoSFNode.h>
52 #include <Inventor/fields/SoSFEnum.h>
53 #include <Inventor/fields/SoSFImage.h>
55 #include <Inventor/fields/SoSFVec2i32.h>
56 #include <Inventor/fields/SoSFVec3i32.h>
57 #include <Inventor/fields/SoSFVec4i32.h>
58 #include <Inventor/fields/SoMFVec2i32.h>
59 #include <Inventor/fields/SoMFVec3i32.h>
60 #include <Inventor/fields/SoMFVec4i32.h>
62 class SoGLShaderParameter;
63 class SoGLShaderObject;
92 class SoUniformShaderParameterP;
100 virtual void updateParameter(SoGLShaderObject *shaderObject) = 0;
103 SoUniformShaderParameter();
104 virtual ~SoUniformShaderParameter();
106 SoGLShaderParameter * getGLShaderParameter(
const uint32_t cachecontext);
107 void ensureParameter(SoGLShaderObject * shader);
110 SoUniformShaderParameterP * pimpl;
117 class COIN_DLL_API SoShaderParameter1f :
public SoUniformShaderParameter {
118 typedef SoUniformShaderParameter inherited;
123 SoShaderParameter1f();
126 static void initClass();
127 virtual void updateParameter(SoGLShaderObject *shaderObject);
130 virtual ~SoShaderParameter1f();
137 class COIN_DLL_API SoShaderParameter1i :
public SoUniformShaderParameter {
138 typedef SoUniformShaderParameter inherited;
143 SoShaderParameter1i();
146 static void initClass();
147 virtual void updateParameter(SoGLShaderObject *shaderObject);
150 virtual ~SoShaderParameter1i();
157 class COIN_DLL_API SoShaderParameter2f :
public SoUniformShaderParameter {
158 typedef SoUniformShaderParameter inherited;
163 SoShaderParameter2f();
166 static void initClass();
167 virtual void updateParameter(SoGLShaderObject *shaderObject);
170 virtual ~SoShaderParameter2f();
177 class COIN_DLL_API SoShaderParameter2i :
public SoUniformShaderParameter {
178 typedef SoUniformShaderParameter inherited;
183 SoShaderParameter2i();
186 static void initClass();
187 virtual void updateParameter(SoGLShaderObject *shaderObject);
190 virtual ~SoShaderParameter2i();
197 class COIN_DLL_API SoShaderParameter3f :
public SoUniformShaderParameter {
198 typedef SoUniformShaderParameter inherited;
204 SoShaderParameter3f();
207 static void initClass();
208 virtual void updateParameter(SoGLShaderObject *shaderObject);
211 virtual ~SoShaderParameter3f();
218 class COIN_DLL_API SoShaderParameter3i :
public SoUniformShaderParameter {
219 typedef SoUniformShaderParameter inherited;
225 SoShaderParameter3i();
228 static void initClass();
229 virtual void updateParameter(SoGLShaderObject *shaderObject);
232 virtual ~SoShaderParameter3i();
239 class COIN_DLL_API SoShaderParameter4f :
public SoUniformShaderParameter {
240 typedef SoUniformShaderParameter inherited;
246 SoShaderParameter4f();
249 static void initClass();
250 virtual void updateParameter(SoGLShaderObject *shaderObject);
253 virtual ~SoShaderParameter4f();
260 class COIN_DLL_API SoShaderParameter4i :
public SoUniformShaderParameter {
261 typedef SoUniformShaderParameter inherited;
267 SoShaderParameter4i();
270 static void initClass();
271 virtual void updateParameter(SoGLShaderObject *shaderObject);
274 virtual ~SoShaderParameter4i();
281 class COIN_DLL_API SoShaderParameterArray1f :
public SoUniformShaderParameter {
282 typedef SoUniformShaderParameter inherited;
288 SoShaderParameterArray1f();
291 static void initClass();
292 virtual void updateParameter(SoGLShaderObject *shaderObject);
295 virtual ~SoShaderParameterArray1f();
302 class COIN_DLL_API SoShaderParameterArray1i :
public SoUniformShaderParameter {
303 typedef SoUniformShaderParameter inherited;
309 SoShaderParameterArray1i();
312 static void initClass();
313 virtual void updateParameter(SoGLShaderObject *shaderObject);
316 virtual ~SoShaderParameterArray1i();
323 class COIN_DLL_API SoShaderParameterArray2f :
public SoUniformShaderParameter {
324 typedef SoUniformShaderParameter inherited;
330 SoShaderParameterArray2f();
333 static void initClass();
334 virtual void updateParameter(SoGLShaderObject *shaderObject);
337 virtual ~SoShaderParameterArray2f();
343 class COIN_DLL_API SoShaderParameterArray2i :
public SoUniformShaderParameter {
344 typedef SoUniformShaderParameter inherited;
350 SoShaderParameterArray2i();
353 static void initClass();
354 virtual void updateParameter(SoGLShaderObject *shaderObject);
357 virtual ~SoShaderParameterArray2i();
364 class COIN_DLL_API SoShaderParameterArray3f :
public SoUniformShaderParameter {
365 typedef SoUniformShaderParameter inherited;
371 SoShaderParameterArray3f();
374 static void initClass();
375 virtual void updateParameter(SoGLShaderObject *shaderObject);
378 virtual ~SoShaderParameterArray3f();
385 class COIN_DLL_API SoShaderParameterArray3i :
public SoUniformShaderParameter {
386 typedef SoUniformShaderParameter inherited;
392 SoShaderParameterArray3i();
395 static void initClass();
396 virtual void updateParameter(SoGLShaderObject *shaderObject);
399 virtual ~SoShaderParameterArray3i();
406 class COIN_DLL_API SoShaderParameterArray4f :
public SoUniformShaderParameter {
407 typedef SoUniformShaderParameter inherited;
413 SoShaderParameterArray4f();
416 static void initClass();
417 virtual void updateParameter(SoGLShaderObject *shaderObject);
420 virtual ~SoShaderParameterArray4f();
428 class COIN_DLL_API SoShaderParameterArray4i :
public SoUniformShaderParameter {
429 typedef SoUniformShaderParameter inherited;
435 SoShaderParameterArray4i();
438 static void initClass();
439 virtual void updateParameter(SoGLShaderObject *shaderObject);
442 virtual ~SoShaderParameterArray4i();
449 class COIN_DLL_API SoShaderParameterMatrix :
public SoUniformShaderParameter {
450 typedef SoUniformShaderParameter inherited;
456 SoShaderParameterMatrix();
459 static void initClass();
460 virtual void updateParameter(SoGLShaderObject *shaderObject);
463 virtual ~SoShaderParameterMatrix();
470 class COIN_DLL_API SoShaderParameterMatrixArray :
public SoUniformShaderParameter {
471 typedef SoUniformShaderParameter inherited;
477 SoShaderParameterMatrixArray();
480 static void initClass();
481 virtual void updateParameter(SoGLShaderObject *shaderObject);
484 virtual ~SoShaderParameterMatrixArray();
491 class COIN_DLL_API SoShaderStateMatrixParameter :
public SoUniformShaderParameter {
492 typedef SoUniformShaderParameter inherited;
504 enum MatrixTransform{
514 SoShaderStateMatrixParameter();
515 virtual ~SoShaderStateMatrixParameter();
517 static void initClass(
void);
518 virtual void updateParameter(SoGLShaderObject *shaderObject);