![]() |
http://www.sim.no http://www.coin3d.org |
00001 #ifndef COIN_SOSHADERPARAMETER_H 00002 #define COIN_SOSHADERPARAMETER_H 00003 00004 /**************************************************************************\ 00005 * 00006 * This file is part of the Coin 3D visualization library. 00007 * Copyright (C) 1998-2007 by Systems in Motion. All rights reserved. 00008 * 00009 * This library is free software; you can redistribute it and/or 00010 * modify it under the terms of the GNU General Public License 00011 * ("GPL") version 2 as published by the Free Software Foundation. 00012 * See the file LICENSE.GPL at the root directory of this source 00013 * distribution for additional information about the GNU GPL. 00014 * 00015 * For using Coin with software that can not be combined with the GNU 00016 * GPL, and for taking advantage of the additional benefits of our 00017 * support services, please contact Systems in Motion about acquiring 00018 * a Coin Professional Edition License. 00019 * 00020 * See http://www.coin3d.org/ for more information. 00021 * 00022 * Systems in Motion, Postboks 1283, Pirsenteret, 7462 Trondheim, NORWAY. 00023 * http://www.sim.no/ sales@sim.no coin-support@coin3d.org 00024 * 00025 \**************************************************************************/ 00026 00027 #include <Inventor/nodes/SoNode.h> 00028 #include <Inventor/nodes/SoSubNode.h> 00029 #include <Inventor/fields/SoSFString.h> 00030 #include <Inventor/fields/SoSFFloat.h> 00031 #include <Inventor/fields/SoSFInt32.h> 00032 #include <Inventor/fields/SoSFVec2f.h> 00033 #include <Inventor/fields/SoSFVec3f.h> 00034 #include <Inventor/fields/SoSFVec4f.h> 00035 #include <Inventor/fields/SoMFFloat.h> 00036 #include <Inventor/fields/SoMFInt32.h> 00037 #include <Inventor/fields/SoMFVec2f.h> 00038 #include <Inventor/fields/SoMFVec3f.h> 00039 #include <Inventor/fields/SoMFVec4f.h> 00040 #include <Inventor/fields/SoSFMatrix.h> 00041 #include <Inventor/fields/SoMFMatrix.h> 00042 #include <Inventor/fields/SoSFNode.h> 00043 #include <Inventor/fields/SoSFEnum.h> 00044 #include <Inventor/fields/SoSFImage.h> 00045 00046 #include <Inventor/fields/SoSFVec2i32.h> 00047 #include <Inventor/fields/SoSFVec3i32.h> 00048 #include <Inventor/fields/SoSFVec4i32.h> 00049 #include <Inventor/fields/SoMFVec2i32.h> 00050 #include <Inventor/fields/SoMFVec3i32.h> 00051 #include <Inventor/fields/SoMFVec4i32.h> 00052 00053 class SoGLShaderParameter; 00054 class SoGLShaderObject; 00055 00056 // ************************************************************************* 00057 00058 // FIXME: split to one header file for each class? 20050120 mortene. 00059 00060 /* ************************************************************************** 00061 * *** SoShaderParameter *** 00062 * **************************************************************************/ 00063 00064 class COIN_DLL_API SoShaderParameter : public SoNode { 00065 typedef SoNode inherited; 00066 SO_NODE_ABSTRACT_HEADER(SoShaderParameter); 00067 00068 public: 00069 SoSFString name; 00070 SoSFInt32 identifier; 00071 00072 SoINTERNAL public: 00073 static void initClass(); 00074 00075 protected: 00076 SoShaderParameter(); 00077 virtual ~SoShaderParameter(); 00078 }; 00079 00080 /* ************************************************************************** 00081 * *** SoUniformShaderParameter *** 00082 * **************************************************************************/ 00083 class SoUniformShaderParameterP; 00084 00085 class COIN_DLL_API SoUniformShaderParameter : public SoShaderParameter { 00086 typedef SoShaderParameter inherited; 00087 SO_NODE_ABSTRACT_HEADER(SoUniformShaderParameter); 00088 00089 SoINTERNAL public: 00090 static void initClass(void); 00091 virtual void updateParameter(SoGLShaderObject *shaderObject) = 0; 00092 SbBool isRegularBehavior() const { return isRegularBehaviorFlag; } 00093 00094 protected: 00095 SoUniformShaderParameter(); 00096 virtual ~SoUniformShaderParameter(); 00097 00098 SbBool isRegularBehaviorFlag; 00099 00100 SoGLShaderParameter * getGLShaderParameter(const uint32_t cachecontext); 00101 void ensureParameter(SoGLShaderObject * shader); 00102 00103 private: 00104 SoUniformShaderParameterP * pimpl; 00105 }; 00106 00107 /* ************************************************************************** 00108 * *** SoShaderParameter1f *** 00109 * **************************************************************************/ 00110 00111 class COIN_DLL_API SoShaderParameter1f : public SoUniformShaderParameter { 00112 typedef SoUniformShaderParameter inherited; 00113 SO_NODE_HEADER(SoShaderParameter1f); 00114 00115 public: 00116 SoSFFloat value; 00117 SoShaderParameter1f(); 00118 00119 SoINTERNAL public: 00120 static void initClass(); 00121 virtual void updateParameter(SoGLShaderObject *shaderObject); 00122 00123 protected: 00124 virtual ~SoShaderParameter1f(); 00125 }; 00126 00127 /* ************************************************************************** 00128 * *** SoShaderParameter1i *** 00129 * **************************************************************************/ 00130 00131 class COIN_DLL_API SoShaderParameter1i : public SoUniformShaderParameter { 00132 typedef SoUniformShaderParameter inherited; 00133 SO_NODE_HEADER(SoShaderParameter1i); 00134 00135 public: 00136 SoSFInt32 value; 00137 SoShaderParameter1i(); 00138 00139 SoINTERNAL public: 00140 static void initClass(); 00141 virtual void updateParameter(SoGLShaderObject *shaderObject); 00142 00143 protected: 00144 virtual ~SoShaderParameter1i(); 00145 }; 00146 00147 /* ************************************************************************** 00148 * *** SoShaderParameter2f *** 00149 * **************************************************************************/ 00150 00151 class COIN_DLL_API SoShaderParameter2f : public SoUniformShaderParameter { 00152 typedef SoUniformShaderParameter inherited; 00153 SO_NODE_HEADER(SoShaderParameter2f); 00154 00155 public: 00156 SoSFVec2f value; 00157 SoShaderParameter2f(); 00158 00159 SoINTERNAL public: 00160 static void initClass(); 00161 virtual void updateParameter(SoGLShaderObject *shaderObject); 00162 00163 protected: 00164 virtual ~SoShaderParameter2f(); 00165 }; 00166 00167 /* ************************************************************************** 00168 * *** SoShaderParameter2i *** 00169 * **************************************************************************/ 00170 00171 class COIN_DLL_API SoShaderParameter2i : public SoUniformShaderParameter { 00172 typedef SoUniformShaderParameter inherited; 00173 SO_NODE_HEADER(SoShaderParameter2i); 00174 00175 public: 00176 SoSFVec2i32 value; 00177 SoShaderParameter2i(); 00178 00179 SoINTERNAL public: 00180 static void initClass(); 00181 virtual void updateParameter(SoGLShaderObject *shaderObject); 00182 00183 protected: 00184 virtual ~SoShaderParameter2i(); 00185 }; 00186 00187 /* ************************************************************************** 00188 * *** SoShaderParameter3f *** 00189 * **************************************************************************/ 00190 00191 class COIN_DLL_API SoShaderParameter3f : public SoUniformShaderParameter { 00192 typedef SoUniformShaderParameter inherited; 00193 SO_NODE_HEADER(SoShaderParameter3f); 00194 00195 public: 00196 SoSFVec3f value; 00197 00198 SoShaderParameter3f(); 00199 00200 SoINTERNAL public: 00201 static void initClass(); 00202 virtual void updateParameter(SoGLShaderObject *shaderObject); 00203 00204 protected: 00205 virtual ~SoShaderParameter3f(); 00206 }; 00207 00208 /* ************************************************************************** 00209 * *** SoShaderParameter3i *** 00210 * **************************************************************************/ 00211 00212 class COIN_DLL_API SoShaderParameter3i : public SoUniformShaderParameter { 00213 typedef SoUniformShaderParameter inherited; 00214 SO_NODE_HEADER(SoShaderParameter3i); 00215 00216 public: 00217 SoSFVec3i32 value; 00218 00219 SoShaderParameter3i(); 00220 00221 SoINTERNAL public: 00222 static void initClass(); 00223 virtual void updateParameter(SoGLShaderObject *shaderObject); 00224 00225 protected: 00226 virtual ~SoShaderParameter3i(); 00227 }; 00228 00229 /* ************************************************************************** 00230 * *** SoShaderParameter4f *** 00231 * **************************************************************************/ 00232 00233 class COIN_DLL_API SoShaderParameter4f : public SoUniformShaderParameter { 00234 typedef SoUniformShaderParameter inherited; 00235 SO_NODE_HEADER(SoShaderParameter4f); 00236 00237 public: 00238 SoSFVec4f value; 00239 00240 SoShaderParameter4f(); 00241 00242 SoINTERNAL public: 00243 static void initClass(); 00244 virtual void updateParameter(SoGLShaderObject *shaderObject); 00245 00246 protected: 00247 virtual ~SoShaderParameter4f(); 00248 }; 00249 00250 /* ************************************************************************** 00251 * *** SoShaderParameter4i *** 00252 * **************************************************************************/ 00253 00254 class COIN_DLL_API SoShaderParameter4i : public SoUniformShaderParameter { 00255 typedef SoUniformShaderParameter inherited; 00256 SO_NODE_HEADER(SoShaderParameter4i); 00257 00258 public: 00259 SoSFVec4i32 value; 00260 00261 SoShaderParameter4i(); 00262 00263 SoINTERNAL public: 00264 static void initClass(); 00265 virtual void updateParameter(SoGLShaderObject *shaderObject); 00266 00267 protected: 00268 virtual ~SoShaderParameter4i(); 00269 }; 00270 00271 /* ************************************************************************** 00272 * *** SoShaderParameterArray1f *** 00273 * **************************************************************************/ 00274 00275 class COIN_DLL_API SoShaderParameterArray1f : public SoUniformShaderParameter { 00276 typedef SoUniformShaderParameter inherited; 00277 SO_NODE_HEADER(SoShaderParameterArray1f); 00278 00279 public: 00280 SoMFFloat value; 00281 00282 SoShaderParameterArray1f(); 00283 00284 SoINTERNAL public: 00285 static void initClass(); 00286 virtual void updateParameter(SoGLShaderObject *shaderObject); 00287 00288 protected: 00289 virtual ~SoShaderParameterArray1f(); 00290 }; 00291 00292 /* ************************************************************************** 00293 * *** SoShaderParameterArray1i *** 00294 * **************************************************************************/ 00295 00296 class COIN_DLL_API SoShaderParameterArray1i : public SoUniformShaderParameter { 00297 typedef SoUniformShaderParameter inherited; 00298 SO_NODE_HEADER(SoShaderParameterArray1i); 00299 00300 public: 00301 SoMFInt32 value; 00302 00303 SoShaderParameterArray1i(); 00304 00305 SoINTERNAL public: 00306 static void initClass(); 00307 virtual void updateParameter(SoGLShaderObject *shaderObject); 00308 00309 protected: 00310 virtual ~SoShaderParameterArray1i(); 00311 }; 00312 00313 /* ************************************************************************** 00314 * *** SoShaderParameterArray2f *** 00315 * **************************************************************************/ 00316 00317 class COIN_DLL_API SoShaderParameterArray2f : public SoUniformShaderParameter { 00318 typedef SoUniformShaderParameter inherited; 00319 SO_NODE_HEADER(SoShaderParameterArray2f); 00320 00321 public: 00322 SoMFVec2f value; 00323 00324 SoShaderParameterArray2f(); 00325 00326 SoINTERNAL public: 00327 static void initClass(); 00328 virtual void updateParameter(SoGLShaderObject *shaderObject); 00329 00330 protected: 00331 virtual ~SoShaderParameterArray2f(); 00332 }; 00333 00334 /* ************************************************************************** 00335 * *** SoShaderParameterArray2i *** 00336 * **************************************************************************/ 00337 class COIN_DLL_API SoShaderParameterArray2i : public SoUniformShaderParameter { 00338 typedef SoUniformShaderParameter inherited; 00339 SO_NODE_HEADER(SoShaderParameterArray2i); 00340 00341 public: 00342 SoMFVec2i32 value; 00343 00344 SoShaderParameterArray2i(); 00345 00346 SoINTERNAL public: 00347 static void initClass(); 00348 virtual void updateParameter(SoGLShaderObject *shaderObject); 00349 00350 protected: 00351 virtual ~SoShaderParameterArray2i(); 00352 }; 00353 00354 /* ************************************************************************** 00355 * *** SoShaderParameterArray3f *** 00356 * **************************************************************************/ 00357 00358 class COIN_DLL_API SoShaderParameterArray3f : public SoUniformShaderParameter { 00359 typedef SoUniformShaderParameter inherited; 00360 SO_NODE_HEADER(SoShaderParameterArray3f); 00361 00362 public: 00363 SoMFVec3f value; 00364 00365 SoShaderParameterArray3f(); 00366 00367 SoINTERNAL public: 00368 static void initClass(); 00369 virtual void updateParameter(SoGLShaderObject *shaderObject); 00370 00371 protected: 00372 virtual ~SoShaderParameterArray3f(); 00373 }; 00374 00375 /* ************************************************************************** 00376 * *** SoShaderParameterArray3i *** 00377 * **************************************************************************/ 00378 00379 class COIN_DLL_API SoShaderParameterArray3i : public SoUniformShaderParameter { 00380 typedef SoUniformShaderParameter inherited; 00381 SO_NODE_HEADER(SoShaderParameterArray3i); 00382 00383 public: 00384 SoMFVec3i32 value; 00385 00386 SoShaderParameterArray3i(); 00387 00388 SoINTERNAL public: 00389 static void initClass(); 00390 virtual void updateParameter(SoGLShaderObject *shaderObject); 00391 00392 protected: 00393 virtual ~SoShaderParameterArray3i(); 00394 }; 00395 00396 /* ************************************************************************** 00397 * *** SoShaderParameterArray4f *** 00398 * **************************************************************************/ 00399 00400 class COIN_DLL_API SoShaderParameterArray4f : public SoUniformShaderParameter { 00401 typedef SoUniformShaderParameter inherited; 00402 SO_NODE_HEADER(SoShaderParameterArray4f); 00403 00404 public: 00405 SoMFVec4f value; 00406 00407 SoShaderParameterArray4f(); 00408 00409 SoINTERNAL public: 00410 static void initClass(); 00411 virtual void updateParameter(SoGLShaderObject *shaderObject); 00412 00413 protected: 00414 virtual ~SoShaderParameterArray4f(); 00415 00416 }; 00417 00418 /* ************************************************************************** 00419 * *** SoShaderParameterArray4i *** 00420 * **************************************************************************/ 00421 00422 class COIN_DLL_API SoShaderParameterArray4i : public SoUniformShaderParameter { 00423 typedef SoUniformShaderParameter inherited; 00424 SO_NODE_HEADER(SoShaderParameterArray4i); 00425 00426 public: 00427 SoMFVec4i32 value; 00428 00429 SoShaderParameterArray4i(); 00430 00431 SoINTERNAL public: 00432 static void initClass(); 00433 virtual void updateParameter(SoGLShaderObject *shaderObject); 00434 00435 protected: 00436 virtual ~SoShaderParameterArray4i(); 00437 }; 00438 00439 /* ************************************************************************** 00440 * *** SoShaderParameterMatrix *** 00441 * **************************************************************************/ 00442 00443 class COIN_DLL_API SoShaderParameterMatrix : public SoUniformShaderParameter { 00444 typedef SoUniformShaderParameter inherited; 00445 SO_NODE_HEADER(SoShaderParameterMatrix); 00446 00447 public: 00448 SoSFMatrix value; 00449 00450 SoShaderParameterMatrix(); 00451 00452 SoINTERNAL public: 00453 static void initClass(); 00454 virtual void updateParameter(SoGLShaderObject *shaderObject); 00455 00456 protected: 00457 virtual ~SoShaderParameterMatrix(); 00458 }; 00459 00460 /* ************************************************************************** 00461 * *** SoShaderParameterMatrixArray *** 00462 * **************************************************************************/ 00463 00464 class COIN_DLL_API SoShaderParameterMatrixArray : public SoUniformShaderParameter { 00465 typedef SoUniformShaderParameter inherited; 00466 SO_NODE_HEADER(SoShaderParameterMatrixArray); 00467 00468 public: 00469 SoMFMatrix value; 00470 00471 SoShaderParameterMatrixArray(); 00472 00473 SoINTERNAL public: 00474 static void initClass(); 00475 virtual void updateParameter(SoGLShaderObject *shaderObject); 00476 00477 protected: 00478 virtual ~SoShaderParameterMatrixArray(); 00479 }; 00480 00481 /* ************************************************************************** 00482 * *** SoShaderStateMatrixParameter *** 00483 * **************************************************************************/ 00484 00485 class COIN_DLL_API SoShaderStateMatrixParameter : public SoUniformShaderParameter { 00486 typedef SoUniformShaderParameter inherited; 00487 SO_NODE_HEADER(SoShaderStateMatrixParameter); 00488 00489 public: 00490 00491 enum MatrixType { 00492 MODELVIEW, 00493 PROJECTION, 00494 TEXTURE, 00495 MODELVIEW_PROJECTION 00496 }; 00497 00498 enum MatrixTransform{ 00499 IDENTITY, 00500 TRANSPOSE, 00501 INVERSE, 00502 INVERSE_TRANSPOSE 00503 }; 00504 00505 SoSFEnum matrixType; 00506 SoSFEnum matrixTransform; 00507 00508 SoShaderStateMatrixParameter(); 00509 virtual ~SoShaderStateMatrixParameter(); 00510 00511 static void initClass(void); 00512 virtual void updateParameter(SoGLShaderObject *shaderObject); 00513 }; 00514 00515 #endif /* ! COIN_SOSHADERPARAMETER_H */
Copyright © 1998-2007 by Systems in Motion AS. All rights reserved.
Generated on Mon Feb 23 16:33:31 2009 for Coin by Doxygen. 1.5.8