MeVisLabToolboxReference
|
00001 // **InsertLicense** code 00002 00006 00007 00008 #ifndef _SO_UNIFORM_PARAMETER_BASE_ 00009 #define _SO_UNIFORM_PARAMETER_BASE_ 00010 00011 #include "SoShaderSystem.h" 00012 #include <Inventor/SbString.h> 00013 00014 #ifdef WIN32 00015 # pragma warning( push ) 00016 # pragma warning( disable : 4100 ) 00017 #endif 00018 00020 SoEXTENDER class INVENTOR_SHADER_API SoUniformParameterBase 00021 { 00022 protected: 00023 00025 SoUniformParameterBase(); 00026 00028 virtual ~SoUniformParameterBase(); 00029 00030 public: 00031 00033 virtual int addTextureSampler(const SbString &name) { return 0; } 00034 00035 // These functions are used to assign values to uniform parameter via OpenGL 00036 virtual void set1f(const SbString & /*name*/, const float /*value*/) {} 00037 virtual void set2f(const SbString & /*name*/, const float * /*value*/) {} 00038 virtual void set3f(const SbString & /*name*/, const float * /*value*/) {} 00039 virtual void set4f(const SbString & /*name*/, const float * /*value*/) {} 00040 virtual void set2f(const SbString & /*name*/, const float /*value0*/, const float /*value1*/) {} 00041 virtual void set3f(const SbString & /*name*/, const float /*value0*/, const float /*value1*/, const float /*value2*/) {} 00042 virtual void set4f(const SbString & /*name*/, const float /*value0*/, const float /*value1*/, const float /*value2*/, const float /*value3*/) {} 00043 00044 virtual void set1fv(const SbString & /*name*/, const int /*num*/, const float * /*value*/) {} 00045 virtual void set2fv(const SbString & /*name*/, const int /*num*/, const float * /*value*/) {} 00046 virtual void set3fv(const SbString & /*name*/, const int /*num*/, const float * /*value*/) {} 00047 virtual void set4fv(const SbString & /*name*/, const int /*num*/, const float * /*value*/) {} 00048 00049 virtual void set1i(const SbString & /*name*/, const int32_t /*value*/) {} 00050 virtual void set2i(const SbString & /*name*/, const int32_t * /*value*/) {} 00051 virtual void set2i(const SbString & /*name*/, const SbVec2s & /*value*/) {} 00052 virtual void set3i(const SbString & /*name*/, const int32_t * /*value*/) {} 00053 virtual void set3i(const SbString & /*name*/, const SbVec3s & /*value*/) {} 00054 virtual void set4i(const SbString & /*name*/, const int32_t * /*value*/) {} 00055 00056 virtual void setMatrix3f(const SbString & /*name*/, const float * /*value*/, SbBool /*transpose*/ = FALSE) {} 00057 virtual void setMatrix4f(const SbString & /*name*/, const float * /*value*/, SbBool /*transpose*/ = FALSE) {} 00058 00059 public: 00060 00061 enum SamplerType { 00062 SAMPLER_1D, 00063 SAMPLER_2D, 00064 SAMPLER_3D, 00065 SAMPLER_CUBEMAP 00066 }; 00067 00068 // Provide additional information about the purpose of a uniform parameter. Those information 00069 // may be collected and analyzed by derived classes. 00070 virtual void setSamplerInfo(const SbString & /*name*/, SamplerType /*type*/, uint32_t /*texId*/) {} 00071 }; 00072 00073 #ifdef WIN32 00074 # pragma warning( pop ) 00075 #endif 00076 00077 #endif // _SO_UNIFORM_PARAMETER_BASE_