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;
83 class SoUniformShaderParameterP;
91 virtual void updateParameter(SoGLShaderObject *shaderObject) = 0;
94 SoUniformShaderParameter();
95 virtual ~SoUniformShaderParameter();
97 SoGLShaderParameter * getGLShaderParameter(
const uint32_t cachecontext);
98 void ensureParameter(SoGLShaderObject * shader);
101 SoUniformShaderParameterP * pimpl;
108 class COIN_DLL_API SoShaderParameter1f :
public SoUniformShaderParameter {
109 typedef SoUniformShaderParameter inherited;
114 SoShaderParameter1f();
117 static void initClass();
118 virtual void updateParameter(SoGLShaderObject *shaderObject);
121 virtual ~SoShaderParameter1f();
128 class COIN_DLL_API SoShaderParameter1i :
public SoUniformShaderParameter {
129 typedef SoUniformShaderParameter inherited;
134 SoShaderParameter1i();
137 static void initClass();
138 virtual void updateParameter(SoGLShaderObject *shaderObject);
141 virtual ~SoShaderParameter1i();
148 class COIN_DLL_API SoShaderParameter2f :
public SoUniformShaderParameter {
149 typedef SoUniformShaderParameter inherited;
154 SoShaderParameter2f();
157 static void initClass();
158 virtual void updateParameter(SoGLShaderObject *shaderObject);
161 virtual ~SoShaderParameter2f();
168 class COIN_DLL_API SoShaderParameter2i :
public SoUniformShaderParameter {
169 typedef SoUniformShaderParameter inherited;
174 SoShaderParameter2i();
177 static void initClass();
178 virtual void updateParameter(SoGLShaderObject *shaderObject);
181 virtual ~SoShaderParameter2i();
188 class COIN_DLL_API SoShaderParameter3f :
public SoUniformShaderParameter {
189 typedef SoUniformShaderParameter inherited;
195 SoShaderParameter3f();
198 static void initClass();
199 virtual void updateParameter(SoGLShaderObject *shaderObject);
202 virtual ~SoShaderParameter3f();
209 class COIN_DLL_API SoShaderParameter3i :
public SoUniformShaderParameter {
210 typedef SoUniformShaderParameter inherited;
216 SoShaderParameter3i();
219 static void initClass();
220 virtual void updateParameter(SoGLShaderObject *shaderObject);
223 virtual ~SoShaderParameter3i();
230 class COIN_DLL_API SoShaderParameter4f :
public SoUniformShaderParameter {
231 typedef SoUniformShaderParameter inherited;
237 SoShaderParameter4f();
240 static void initClass();
241 virtual void updateParameter(SoGLShaderObject *shaderObject);
244 virtual ~SoShaderParameter4f();
251 class COIN_DLL_API SoShaderParameter4i :
public SoUniformShaderParameter {
252 typedef SoUniformShaderParameter inherited;
258 SoShaderParameter4i();
261 static void initClass();
262 virtual void updateParameter(SoGLShaderObject *shaderObject);
265 virtual ~SoShaderParameter4i();
272 class COIN_DLL_API SoShaderParameterArray1f :
public SoUniformShaderParameter {
273 typedef SoUniformShaderParameter inherited;
279 SoShaderParameterArray1f();
282 static void initClass();
283 virtual void updateParameter(SoGLShaderObject *shaderObject);
286 virtual ~SoShaderParameterArray1f();
293 class COIN_DLL_API SoShaderParameterArray1i :
public SoUniformShaderParameter {
294 typedef SoUniformShaderParameter inherited;
300 SoShaderParameterArray1i();
303 static void initClass();
304 virtual void updateParameter(SoGLShaderObject *shaderObject);
307 virtual ~SoShaderParameterArray1i();
314 class COIN_DLL_API SoShaderParameterArray2f :
public SoUniformShaderParameter {
315 typedef SoUniformShaderParameter inherited;
321 SoShaderParameterArray2f();
324 static void initClass();
325 virtual void updateParameter(SoGLShaderObject *shaderObject);
328 virtual ~SoShaderParameterArray2f();
334 class COIN_DLL_API SoShaderParameterArray2i :
public SoUniformShaderParameter {
335 typedef SoUniformShaderParameter inherited;
341 SoShaderParameterArray2i();
344 static void initClass();
345 virtual void updateParameter(SoGLShaderObject *shaderObject);
348 virtual ~SoShaderParameterArray2i();
355 class COIN_DLL_API SoShaderParameterArray3f :
public SoUniformShaderParameter {
356 typedef SoUniformShaderParameter inherited;
362 SoShaderParameterArray3f();
365 static void initClass();
366 virtual void updateParameter(SoGLShaderObject *shaderObject);
369 virtual ~SoShaderParameterArray3f();
376 class COIN_DLL_API SoShaderParameterArray3i :
public SoUniformShaderParameter {
377 typedef SoUniformShaderParameter inherited;
383 SoShaderParameterArray3i();
386 static void initClass();
387 virtual void updateParameter(SoGLShaderObject *shaderObject);
390 virtual ~SoShaderParameterArray3i();
397 class COIN_DLL_API SoShaderParameterArray4f :
public SoUniformShaderParameter {
398 typedef SoUniformShaderParameter inherited;
404 SoShaderParameterArray4f();
407 static void initClass();
408 virtual void updateParameter(SoGLShaderObject *shaderObject);
411 virtual ~SoShaderParameterArray4f();
419 class COIN_DLL_API SoShaderParameterArray4i :
public SoUniformShaderParameter {
420 typedef SoUniformShaderParameter inherited;
426 SoShaderParameterArray4i();
429 static void initClass();
430 virtual void updateParameter(SoGLShaderObject *shaderObject);
433 virtual ~SoShaderParameterArray4i();
440 class COIN_DLL_API SoShaderParameterMatrix :
public SoUniformShaderParameter {
441 typedef SoUniformShaderParameter inherited;
447 SoShaderParameterMatrix();
450 static void initClass();
451 virtual void updateParameter(SoGLShaderObject *shaderObject);
454 virtual ~SoShaderParameterMatrix();
461 class COIN_DLL_API SoShaderParameterMatrixArray :
public SoUniformShaderParameter {
462 typedef SoUniformShaderParameter inherited;
468 SoShaderParameterMatrixArray();
471 static void initClass();
472 virtual void updateParameter(SoGLShaderObject *shaderObject);
475 virtual ~SoShaderParameterMatrixArray();
482 class COIN_DLL_API SoShaderStateMatrixParameter :
public SoUniformShaderParameter {
483 typedef SoUniformShaderParameter inherited;
495 enum MatrixTransform{
505 SoShaderStateMatrixParameter();
506 virtual ~SoShaderStateMatrixParameter();
508 static void initClass(
void);
509 virtual void updateParameter(SoGLShaderObject *shaderObject);