Changeset 2837 for trunk/packages/vizservers/nanovis
- Timestamp:
- Mar 9, 2012 5:11:37 PM (12 years ago)
- Location:
- trunk/packages/vizservers/nanovis
- Files:
-
- 15 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/packages/vizservers/nanovis/Makefile.in
r2835 r2837 143 143 RpAVTranslate.o \ 144 144 ScreenSnapper.o \ 145 Sphere.o \146 145 Switch.o \ 147 146 Texture1D.o \ … … 163 162 OBJS += ParticleEmitter.o \ 164 163 ParticleSystem.o \ 165 ParticleSystemFactory.o 164 ParticleSystemFactory.o \ 165 Sphere.o 166 166 endif 167 167 -
trunk/packages/vizservers/nanovis/NvLIC.cpp
r2831 r2837 25 25 26 26 NvLIC::NvLIC(int _size, int _width, int _height, int _axis, 27 const Vector3& _offset, CGcontext _context) : 28 Renderable(Vector3(0.0f, 0.0f,0.0f)),27 const Vector3& _offset, CGcontext _context) : 28 Renderable(Vector3(0.0f, 0.0f, 0.0f)), 29 29 disListID(0), 30 30 width(_width), … … 39 39 dmax(SCALE/NPIX), 40 40 max(1.0f), 41 m_g_context(_context),41 _g_context(_context), 42 42 _vectorFieldId(0), 43 43 _activate(false) … … 110 110 glBindFramebufferEXT(GL_FRAMEBUFFER_EXT, 0); 111 111 112 m_render_vel_fprog = LoadCgSourceProgram(m_g_context, "render_vel.cg",112 _render_vel_fprog = LoadCgSourceProgram(_g_context, "render_vel.cg", 113 113 CG_PROFILE_FP30, "main"); 114 m_vel_tex_param_render_vel = cgGetNamedParameter(m_render_vel_fprog,114 _vel_tex_param_render_vel = cgGetNamedParameter(_render_vel_fprog, 115 115 "vel_tex"); 116 m_plane_normal_param_render_vel = cgGetNamedParameter(m_render_vel_fprog,116 _plane_normal_param_render_vel = cgGetNamedParameter(_render_vel_fprog, 117 117 "plane_normal"); 118 m_max_param = cgGetNamedParameter(m_render_vel_fprog, "vmax");118 _max_param = cgGetNamedParameter(_render_vel_fprog, "vmax"); 119 119 120 120 … … 140 140 /* 141 141 TBD.. 142 cgDestroyParameter( m_vel_tex_param_render_vel);143 cgDestroyParameter( m_plane_normal_param_render_vel);144 cgDestroyParameter( m_max_param);142 cgDestroyParameter(_vel_tex_param_render_vel); 143 cgDestroyParameter(_plane_normal_param_render_vel); 144 cgDestroyParameter(_max_param); 145 145 */ 146 cgDestroyProgram( m_render_vel_fprog);146 cgDestroyProgram(_render_vel_fprog); 147 147 148 148 delete [] slice_vector; … … 194 194 TRACE("finish make_patterns\n"); 195 195 } 196 197 196 198 197 void NvLIC::make_magnitudes() … … 248 247 glEnable(GL_TEXTURE_3D); 249 248 glBindTexture(GL_TEXTURE_3D, _vectorFieldId); 250 cgGLBindProgram( m_render_vel_fprog);251 252 cgGLSetTextureParameter( m_vel_tex_param_render_vel, _vectorFieldId);253 cgGLEnableTextureParameter( m_vel_tex_param_render_vel);254 cgGLSetParameter4f( m_plane_normal_param_render_vel, 1., 1., 0., 0);255 cgGLSetParameter1f( m_max_param, max);249 cgGLBindProgram(_render_vel_fprog); 250 251 cgGLSetTextureParameter(_vel_tex_param_render_vel, _vectorFieldId); 252 cgGLEnableTextureParameter(_vel_tex_param_render_vel); 253 cgGLSetParameter4f(_plane_normal_param_render_vel, 1., 1., 0., 0); 254 cgGLSetParameter1f(_max_param, max); 256 255 257 256 cgGLEnableProfile(CG_PROFILE_FP30); … … 286 285 cgGLDisableProfile(CG_PROFILE_FP30); 287 286 288 cgGLDisableTextureParameter( m_vel_tex_param_render_vel);287 cgGLDisableTextureParameter(_vel_tex_param_render_vel); 289 288 290 289 glBindTexture(GL_TEXTURE_3D, 0); … … 412 411 } 413 412 414 void NvLIC::render(){ display(); } 415 413 void NvLIC::render() 414 { 415 display(); 416 } 416 417 417 418 void -
trunk/packages/vizservers/nanovis/NvLIC.h
r2798 r2837 14 14 * ====================================================================== 15 15 */ 16 #ifndef NV_LIC_H 17 #define NV_LIC_H 16 18 17 18 #ifndef _NV_LIC_H_ 19 #define _NV_LIC_H_ 20 21 #include "GL/glew.h" 22 #include "Cg/cgGL.h" 19 #include <GL/glew.h> 20 #include <Cg/cgGL.h> 23 21 24 22 #include "define.h" … … 36 34 #define SCALE 3.0 //scale for background pattern. small value -> fine texture 37 35 38 class NvLIC : public Renderable { 36 class NvLIC : public Renderable 37 { 38 public: 39 NvLIC(int _size, int _width, int _height, int axis, 40 const Vector3& _offset, CGcontext _context); 41 ~NvLIC(); 42 43 /// project 3D vectors to a 2D slice for line integral convolution 44 void convolve(); 45 46 /// Display the convolution result 47 void display(); 48 49 void render(); 50 51 void make_patterns(); 52 53 void make_magnitudes(); 54 55 void get_velocity(float x, float y, float *px, float *py); 56 57 void get_slice(); 58 59 void set_offset(float v); 60 61 /** 62 * @brief Specify the perdicular axis 63 * 64 * 0 : x axis<br> 65 * 1 : y axis<br> 66 * 2 : z axis<br> 67 */ 68 void set_axis(int axis); 69 70 void setVectorField(unsigned int texID, const Vector3& ori, 71 float scaleX, float scaleY, float scaleZ, float max); 72 73 void reset(); 74 75 void visible(bool state) 76 { 77 _isHidden = !state; 78 } 79 80 bool visible() const 81 { 82 return (!_isHidden); 83 } 84 85 void active(bool state) 86 { 87 _activate = state; 88 } 89 90 bool active() const 91 { 92 return _activate; 93 } 39 94 40 95 private: 96 /** 97 * @brief the normal vector of the NvLIC plane, 98 * the inherited Vector3 location is its center 99 */ 100 Vector3 normal; 101 41 102 GLuint disListID; 42 103 … … 44 105 int size; // The lic is a square of size, it can 45 106 // be stretched 46 float *slice_vector; // Storage for the per slice vectors107 float *slice_vector; // Storage for the per slice vectors 47 108 // driving the follow. 48 109 Vector3 scale; // Scaling factor stretching the lic … … 61 122 float dmax; 62 123 float max; 63 124 64 125 //CG shader parameters 65 CGcontext m_g_context; 66 CGparameter m_vel_tex_param; 67 CGparameter m_vel_tex_param_render_vel, m_plane_normal_param_render_vel; 68 CGprogram m_render_vel_fprog; 69 CGparameter m_max_param; 70 126 CGcontext _g_context; 127 CGparameter _vel_tex_param; 128 CGparameter _vel_tex_param_render_vel; 129 CGparameter _plane_normal_param_render_vel; 130 CGprogram _render_vel_fprog; 131 CGparameter _max_param; 132 71 133 GLuint color_tex, pattern_tex, mag_tex; 72 134 GLuint fbo, vel_fbo, slice_vector_tex; // For projecting 3d vector to 2d … … 74 136 GLuint _vectorFieldId; 75 137 76 Volume *_vectorField;138 Volume *_vectorField; 77 139 /** 78 140 * flag for rendering … … 80 142 bool _activate; 81 143 bool _isHidden; // Indicates if LIC plane is displayed. 82 public:83 Vector3 normal; //the normal vector of the NvLIC plane,84 //the inherited Vector3 location is its center85 NvLIC(int _size, int _width, int _height, int axis,86 const Vector3& _offset, CGcontext _context);87 ~NvLIC();88 89 /**90 * @brief project 3D vectors to a 2D slice for line integral convolution91 */92 void convolve();93 94 void display(void); // Display the convolution result95 void render(void);96 void make_patterns();97 void make_magnitudes();98 void get_velocity(float x, float y, float* px, float* py);99 void get_slice();100 void set_offset(float v);101 /**102 * @brief Specify the perdicular axis103 * @brief 0 : x axis104 * @brief 1 : y axis105 * @brief 2 : z axis106 */107 void set_axis(int axis);108 109 void setVectorField(unsigned int texID, const Vector3& ori, float scaleX, float scaleY, float scaleZ, float max);110 111 void reset(void);112 void visible(bool state) {113 _isHidden = !state;114 }115 bool visible(void) {116 return (!_isHidden);117 }118 void active(bool state) {119 _activate = state;120 }121 bool active(void) {122 return _activate;123 }124 144 }; 125 145 126 127 146 #endif -
trunk/packages/vizservers/nanovis/NvParticleAdvectionShader.cpp
r2831 r2837 23 23 { 24 24 _cgFP = LoadCgSourceProgram(g_context, "update_pos.cg", CG_PROFILE_FP30, 25 25 "main"); 26 26 _posTimestepParam = cgGetNamedParameter(_cgFP, "timestep"); 27 27 _maxParam = cgGetNamedParameter(_cgFP, "max"); 28 28 _velTexParam = cgGetNamedParameter(_cgFP, "vel_tex"); 29 29 _posTexParam = cgGetNamedParameter(_cgFP, "pos_tex"); 30 //_tfTexParam = cgGetNamedParameter(_cgFP, "tf_tex");31 30 _initPosTexParam = cgGetNamedParameter(_cgFP, "init_pos_tex"); 32 31 _scaleParam = cgGetNamedParameter(_cgFP, "scale"); 33 32 _modeParam = cgGetNamedParameter(_cgFP, "mode"); 34 33 } 35 36 //void NvParticleAdvectionShader::bind(unsigned int texID, unsigned int tfTexID, unsigned int initPosTexID)37 34 38 35 void … … 47 44 cgGLEnableTextureParameter(_velTexParam); 48 45 49 //cgGLSetTextureParameter(_tfTexParam, tfTexID);50 //cgGLEnableTextureParameter(_tfTexParam);51 52 46 cgGLSetTextureParameter(_posTexParam, texID); 53 47 cgGLEnableTextureParameter(_posTexParam); … … 58 52 cgGLEnableProfile(CG_PROFILE_FP30); 59 53 } 54 55 void 56 NvParticleAdvectionShader::unbind() 57 { 58 cgGLDisableProfile(CG_PROFILE_FP30); 59 60 cgGLDisableTextureParameter(_velTexParam); 61 cgGLDisableTextureParameter(_posTexParam); 62 cgGLDisableTextureParameter(_initPosTexParam); 63 } -
trunk/packages/vizservers/nanovis/NvParticleAdvectionShader.h
r2798 r2837 1 1 /* -*- mode: c++; c-basic-offset: 4; indent-tabs-mode: nil -*- */ 2 #ifndef __NV_PARTICLE_ADV_SHADER_H__3 #define __NV_PARTICLE_ADV_SHADER_H__2 #ifndef NV_PARTICLE_ADV_SHADER_H 3 #define NV_PARTICLE_ADV_SHADER_H 4 4 5 5 #include "Vector3.h" 6 6 #include "NvShader.h" 7 7 8 class NvParticleAdvectionShader : public NvShader { 8 class NvParticleAdvectionShader : public NvShader 9 { 10 public : 11 NvParticleAdvectionShader(); 12 13 virtual ~NvParticleAdvectionShader(); 14 15 void bind(unsigned int texID, unsigned int initPosTexID); 16 17 void unbind(); 18 19 void setScale(const Vector3& scale) 20 { 21 _scale = scale; 22 } 23 24 void setVelocityVolume(unsigned int texID, float max) 25 { 26 _velocityVolumeID = texID; 27 _max = max; 28 } 29 30 void setTimeStep(float timeStep) 31 { 32 _timeStep = timeStep; 33 } 34 35 void setRenderMode(int mode) 36 { 37 _mode = mode; 38 } 39 40 private : 41 void init(); 9 42 10 43 CGparameter _posTimestepParam; 11 44 CGparameter _velTexParam; 12 //CGparameter _tfTexParam;13 45 CGparameter _posTexParam; 14 46 CGparameter _initPosTexParam; … … 20 52 float _max; 21 53 float _timeStep; 22 23 54 int _mode; 24 25 public :26 NvParticleAdvectionShader();27 ~NvParticleAdvectionShader();28 29 private :30 void init();31 public :32 //void bind(unsigned int texID, unsigned int tfTexID, unsigned int initPosTexID);33 void bind(unsigned int texID, unsigned int initPosTexID);34 void unbind();35 void setScale(const Vector3& scale);36 void setVelocityVolume(unsigned int texID, float max);37 void setTimeStep(float timeStep);38 void setRenderMode(int mode);39 55 }; 40 56 41 inline void NvParticleAdvectionShader::setTimeStep(float timeStep) 42 { 43 _timeStep = timeStep; 44 } 45 46 inline void NvParticleAdvectionShader::unbind() 47 { 48 cgGLDisableProfile(CG_PROFILE_FP30); 49 50 cgGLDisableTextureParameter(_velTexParam); 51 cgGLDisableTextureParameter(_posTexParam); 52 //cgGLDisableTextureParameter(_tfTexParam); 53 cgGLDisableTextureParameter(_initPosTexParam); 54 } 55 56 inline void NvParticleAdvectionShader::setScale(const Vector3& scale) 57 { 58 _scale = scale; 59 } 60 61 inline void NvParticleAdvectionShader::setVelocityVolume(unsigned int texID, float max) 62 { 63 _velocityVolumeID = texID; 64 _max = max; 65 } 66 67 inline void NvParticleAdvectionShader::setRenderMode(int mode) 68 { 69 _mode = mode; 70 } 71 72 #endif //__NV_PARTICLE_ADV_SHADER_H__ 57 #endif -
trunk/packages/vizservers/nanovis/NvParticleRenderer.cpp
r2835 r2837 28 28 #define NV_32 29 29 30 NvParticleAdvectionShader* NvParticleRenderer::_advectionShader = NULL; 31 32 class NvParticleAdvectionShaderInstance { 30 NvParticleAdvectionShader *NvParticleRenderer::_advectionShader = NULL; 31 32 class NvParticleAdvectionShaderInstance 33 { 33 34 public : 34 NvParticleAdvectionShaderInstance() { 35 } 36 ~NvParticleAdvectionShaderInstance() { 35 NvParticleAdvectionShaderInstance() 36 {} 37 38 ~NvParticleAdvectionShaderInstance() 39 { 37 40 if (NvParticleRenderer::_advectionShader) { 38 41 delete NvParticleRenderer::_advectionShader; … … 40 43 } 41 44 }; 45 42 46 NvParticleAdvectionShaderInstance shaderInstance; 43 47 … … 64 68 memset(data, 0, sizeof(Particle) * w * h); 65 69 66 m_vertex_array = new RenderVertexArray(psys_width*psys_height, 3, GL_FLOAT);70 _vertex_array = new RenderVertexArray(psys_width*psys_height, 3, GL_FLOAT); 67 71 68 72 assert(CheckGL(AT)); … … 119 123 CHECK_FRAMEBUFFER_STATUS(); 120 124 121 //load related shaders122 /*123 m_g_context = context;124 125 m_pos_fprog = LoadCgSourceProgram(m_g_context, "update_pos.cg",126 CG_PROFILE_FP30, NULL);127 m_pos_timestep_param = cgGetNamedParameter(m_pos_fprog, "timestep");128 m_vel_tex_param = cgGetNamedParameter(m_pos_fprog, "vel_tex");129 m_pos_tex_param = cgGetNamedParameter(m_pos_fprog, "pos_tex");130 m_scale_param = cgGetNamedParameter(m_pos_fprog, "scale");131 cgGLSetTextureParameter(m_vel_tex_param, volume);132 cgGLSetParameter3f(m_scale_param, scale_x, scale_y, scale_z);133 */134 125 if (_advectionShader == NULL) { 135 126 _advectionShader = new NvParticleAdvectionShader(); … … 149 140 glDeleteFramebuffersEXT(2, psys_fbo); 150 141 151 delete m_vertex_array;142 delete _vertex_array; 152 143 delete [] data; 153 144 } … … 280 271 _advectionShader->bind(psys_tex[0], initPosTex); 281 272 282 //cgGLBindProgram(m_pos_fprog);283 //cgGLSetParameter1f(m_pos_timestep_param, 0.05);284 //cgGLEnableTextureParameter(m_vel_tex_param);285 //cgGLSetTextureParameter(m_pos_tex_param, psys_tex[0]);286 //cgGLEnableTextureParameter(m_pos_tex_param);287 //cgGLEnableProfile(CG_PROFILE_FP30);288 289 273 draw_quad(psys_width, psys_height, psys_width, psys_height); 290 291 //cgGLDisableProfile(CG_PROFILE_FP30); 292 //cgGLDisableTextureParameter(m_vel_tex_param); 293 //cgGLDisableTextureParameter(m_pos_tex_param); 274 294 275 glDisable(GL_TEXTURE_RECTANGLE_NV); 295 276 } else { … … 310 291 _advectionShader->bind(psys_tex[1], initPosTex); 311 292 312 //cgGLBindProgram(m_pos_fprog);313 //cgGLSetParameter1f(m_pos_timestep_param, 0.05);314 //cgGLEnableTextureParameter(m_vel_tex_param);315 //cgGLSetTextureParameter(m_pos_tex_param, psys_tex[1]);316 //cgGLEnableTextureParameter(m_pos_tex_param);317 //cgGLEnableProfile(CG_PROFILE_FP30);318 319 293 draw_quad(psys_width, psys_height, psys_width, psys_height); 320 //draw_quad(psys_width, psys_height, 1.0f, 1.0f); 321 322 //cgGLDisableProfile(CG_PROFILE_FP30); 323 //cgGLDisableTextureParameter(m_vel_tex_param); 324 //cgGLDisableTextureParameter(m_pos_tex_param); 325 } 326 294 } 295 327 296 _advectionShader->unbind(); 328 329 //soft_read_verts(); 330 297 331 298 update_vertex_buffer(); 332 299 333 300 flip = (!flip); 334 301 335 302 psys_frame++; 336 if (psys_frame ==max_life) {303 if (psys_frame == max_life) { 337 304 psys_frame=0; 338 305 // reborn = true; … … 344 311 NvParticleRenderer::update_vertex_buffer() 345 312 { 346 m_vertex_array->Read(psys_width, psys_height);347 348 // m_vertex_array->LoadData(vert); //does not work??313 _vertex_array->Read(psys_width, psys_height); 314 315 //_vertex_array->LoadData(vert); //does not work?? 349 316 //assert(glGetError()==0); 350 317 } … … 448 415 glColor4f(_color.x, _color.y, _color.z, _color.w); 449 416 glEnableClientState(GL_VERTEX_ARRAY); 450 m_vertex_array->SetPointer(0);417 _vertex_array->SetPointer(0); 451 418 glDrawArrays(GL_POINTS, 0, psys_width*psys_height); 452 419 glDisableClientState(GL_VERTEX_ARRAY); -
trunk/packages/vizservers/nanovis/NvParticleRenderer.h
r2798 r2837 14 14 * ====================================================================== 15 15 */ 16 #ifndef NV_PARTICLE_SYSTEM_H 17 #define NV_PARTICLE_SYSTEM_H 16 18 19 #include <vector> 17 20 18 #ifndef _NV_PARTICLE_SYSTEM_H_ 19 #define _NV_PARTICLE_SYSTEM_H_ 20 21 #include "GL/glew.h" 22 #include "Cg/cgGL.h" 21 #include <GL/glew.h> 22 #include <Cg/cgGL.h> 23 23 24 24 #include "define.h" … … 29 29 #include "RenderVertexArray.h" 30 30 #include "Vector3.h" 31 32 #include <vector>33 34 31 #include "NvParticleAdvectionShader.h" 35 32 … … 40 37 float aux; 41 38 42 Particle(){}; 39 Particle() 40 {} 41 43 42 Particle(float _x, float _y, float _z, float _life) : 44 x(_x), y(_y), z(_z), aux(_life){} 43 x(_x), y(_y), z(_z), aux(_life) 44 {} 45 45 }; 46 46 47 class NvParticleRenderer : public Renderable { 48 public : 49 /** 50 * @brief frame buffer objects: two are defined, flip them as input output every step 51 */ 47 class NvParticleRenderer : public Renderable 48 { 49 public: 50 NvParticleRenderer(int w, int h, CGcontext context); 51 52 ~NvParticleRenderer(); 53 54 void setVectorField(unsigned int texID, const Vector3& ori, 55 float scaleX, float scaleY, float scaleZ, float max); 56 57 void initialize(); 58 59 void advect(); 60 61 void update_vertex_buffer(); 62 63 void display_vertices(); 64 65 void reset(); 66 67 void render(); 68 69 bool active() const 70 { 71 return _activate; 72 } 73 74 void active(bool state) 75 { 76 _activate = state; 77 } 78 79 void setColor(const Vector4& color) 80 { 81 _color = color; 82 } 83 84 void setAxis(int axis); 85 86 void setPos(float pos); 87 88 void draw_bounding_box(float x0, float y0, float z0, 89 float x1, float y1, float z1, 90 float r, float g, float b, float line_width); 91 92 void initializeDataArray(); 93 94 void particleSize(float size) 95 { 96 _particleSize = size; 97 } 98 99 float particleSize() const 100 { 101 return _particleSize; 102 } 103 104 static NvParticleAdvectionShader *_advectionShader; 105 106 private: 107 /// frame buffer objects: two are defined, flip them as input output every step 52 108 GLuint psys_fbo[2]; 53 109 54 /** 55 * @brief color textures attached to frame buffer objects 56 */ 110 /// color textures attached to frame buffer objects 57 111 GLuint psys_tex[2]; 58 112 GLuint initPosTex; 59 Particle* data; 60 61 /** 62 *@brief Count the frame number of particle system iteration 63 */ 113 Particle *data; 114 115 /// Count the frame number of particle system iteration 64 116 int psys_frame; 65 66 /** 67 * @brief Reinitiate particles 68 */ 117 118 /// Reinitiate particles 69 119 bool reborn; 70 120 71 /** 72 * @brief flip the source and destination render targets 73 */ 121 /// flip the source and destination render targets 74 122 bool flip; 75 123 76 124 float max_life; 77 125 78 float _particleSize; // Size of the particle: default is 1.2 126 /// Size of the particle: default is 1.2 127 float _particleSize; 79 128 80 /** 81 * @brief vertex array for display particles 82 */ 83 RenderVertexArray* m_vertex_array; 129 /// vertex array for display particles 130 RenderVertexArray *_vertex_array; 84 131 85 //Nvidia CG shaders and their parameters 86 /* 87 CGcontext m_g_context; 88 CGprogram m_pos_fprog; 89 CGparameter m_vel_tex_param, m_pos_tex_param, m_scale_param; 90 CGparameter m_pos_timestep_param, m_pos_spherePos_param; 91 */ 92 static NvParticleAdvectionShader* _advectionShader; 93 94 /** 95 * @brief scale of flow data 96 */ 132 /// scale of flow data 97 133 Vector3 scale; 98 134 … … 103 139 float _slice_pos; 104 140 int _slice_axis; 141 105 142 Vector4 _color; 106 143 107 public: 108 int psys_width; //the storage of particles is implemented as a 2D array.144 //the storage of particles is implemented as a 2D array. 145 int psys_width; 109 146 int psys_height; 110 111 NvParticleRenderer(int w, int h, CGcontext context);112 ~NvParticleRenderer();113 void setVectorField(unsigned int texID, const Vector3& ori, float scaleX, float scaleY, float scaleZ, float max);114 void initialize();115 void advect();116 void update_vertex_buffer();117 void display_vertices();118 void reset();119 void render();120 121 bool active(void) {122 return _activate;123 }124 void active(bool state) {125 _activate = state;126 }127 void setColor(const Vector4& color) {128 _color = color;129 }130 void setAxis(int axis);131 void setPos(float pos);132 void draw_bounding_box(float x0, float y0, float z0,133 float x1, float y1, float z1,134 float r, float g, float b, float line_width);135 void initializeDataArray();136 void particleSize(float size) {137 _particleSize = size;138 }139 float particleSize(void) {140 return _particleSize;141 }142 147 }; 143 148 -
trunk/packages/vizservers/nanovis/NvRegularVolumeShader.cpp
r2831 r2837 15 15 { 16 16 _cgFP = LoadCgSourceProgram(g_context, "one_volume.cg", CG_PROFILE_FP30, 17 18 m_mvi_one_volume_param = cgGetNamedParameter(_cgFP, "modelViewInv");19 m_mv_one_volume_param = cgGetNamedParameter(_cgFP, "modelView");17 "main"); 18 _mvi_one_volume_param = cgGetNamedParameter(_cgFP, "modelViewInv"); 19 _mv_one_volume_param = cgGetNamedParameter(_cgFP, "modelView"); 20 20 21 m_vol_one_volume_param = cgGetNamedParameter(_cgFP, "volume");22 m_tf_one_volume_param = cgGetNamedParameter(_cgFP, "tf");23 m_render_param_one_volume_param = cgGetNamedParameter(_cgFP, "renderParameters");24 m_option_one_volume_param = cgGetNamedParameter(_cgFP, "options");21 _vol_one_volume_param = cgGetNamedParameter(_cgFP, "volume"); 22 _tf_one_volume_param = cgGetNamedParameter(_cgFP, "tf"); 23 _render_param_one_volume_param = cgGetNamedParameter(_cgFP, "renderParameters"); 24 _option_one_volume_param = cgGetNamedParameter(_cgFP, "options"); 25 25 } 26 26 -
trunk/packages/vizservers/nanovis/NvRegularVolumeShader.h
r2798 r2837 6 6 #include "NvVolumeShader.h" 7 7 8 class NvRegularVolumeShader : public NvVolumeShader { 9 CGparameter m_vol_one_volume_param; 10 CGparameter m_tf_one_volume_param; 11 CGparameter m_mvi_one_volume_param; 12 CGparameter m_mv_one_volume_param; 13 CGparameter m_render_param_one_volume_param; 14 CGparameter m_option_one_volume_param; 15 16 public : 8 class NvRegularVolumeShader : public NvVolumeShader 9 { 10 public: 17 11 NvRegularVolumeShader(); 18 12 ~NvRegularVolumeShader(); 19 private :20 void init();21 13 22 public :23 14 void bind(unsigned int tfID, Volume* volume, int sliceMode); 24 15 void unbind(); 25 16 17 private: 18 void init(); 19 20 CGparameter _vol_one_volume_param; 21 CGparameter _tf_one_volume_param; 22 CGparameter _mvi_one_volume_param; 23 CGparameter _mv_one_volume_param; 24 CGparameter _render_param_one_volume_param; 25 CGparameter _option_one_volume_param; 26 26 }; 27 27 … … 30 30 { 31 31 //regular cubic volume 32 cgGLSetStateMatrixParameter( m_mvi_one_volume_param, CG_GL_MODELVIEW_MATRIX, CG_GL_MATRIX_INVERSE);33 cgGLSetStateMatrixParameter( m_mv_one_volume_param, CG_GL_MODELVIEW_MATRIX, CG_GL_MATRIX_IDENTITY);32 cgGLSetStateMatrixParameter(_mvi_one_volume_param, CG_GL_MODELVIEW_MATRIX, CG_GL_MATRIX_INVERSE); 33 cgGLSetStateMatrixParameter(_mv_one_volume_param, CG_GL_MODELVIEW_MATRIX, CG_GL_MATRIX_IDENTITY); 34 34 35 cgGLSetTextureParameter( m_vol_one_volume_param, volume->id);36 cgGLSetTextureParameter( m_tf_one_volume_param, tfID);37 cgGLEnableTextureParameter( m_vol_one_volume_param);38 cgGLEnableTextureParameter( m_tf_one_volume_param);35 cgGLSetTextureParameter(_vol_one_volume_param, volume->id); 36 cgGLSetTextureParameter(_tf_one_volume_param, tfID); 37 cgGLEnableTextureParameter(_vol_one_volume_param); 38 cgGLEnableTextureParameter(_tf_one_volume_param); 39 39 40 40 if(!sliceMode) 41 cgGLSetParameter4f( m_render_param_one_volume_param,41 cgGLSetParameter4f(_render_param_one_volume_param, 42 42 volume->n_slices(), 43 43 volume->opacity_scale(), … … 45 45 volume->specular()); 46 46 else 47 cgGLSetParameter4f( m_render_param_one_volume_param,47 cgGLSetParameter4f(_render_param_one_volume_param, 48 48 0., 49 49 volume->opacity_scale(), … … 51 51 volume->specular()); 52 52 53 cgGLSetParameter4f( m_option_one_volume_param,53 cgGLSetParameter4f(_option_one_volume_param, 54 54 0.0f, 55 55 volume->isosurface(), … … 63 63 inline void NvRegularVolumeShader::unbind() 64 64 { 65 cgGLDisableTextureParameter( m_vol_one_volume_param);66 cgGLDisableTextureParameter( m_tf_one_volume_param);65 cgGLDisableTextureParameter(_vol_one_volume_param); 66 cgGLDisableTextureParameter(_tf_one_volume_param); 67 67 68 68 cgGLDisableProfile(CG_PROFILE_FP30); 69 69 } 70 70 71 72 #endif // 71 #endif -
trunk/packages/vizservers/nanovis/NvShader.h
r2833 r2837 36 36 return cgGetNamedParameter(_cgFP, paramName); 37 37 } 38 39 38 return 0; 40 39 } … … 45 44 return cgGetNamedParameter(_cgVP, paramName); 46 45 } 47 48 46 return 0; 49 47 } -
trunk/packages/vizservers/nanovis/RenderVertexArray.cpp
r2800 r2837 35 35 * ====================================================================== 36 36 */ 37 #include <stdio.h> 38 39 #include <GL/glew.h> 40 #include <GL/gl.h> 41 37 42 #include "RenderVertexArray.h" 38 43 #include "Trace.h" 39 #include <GL/gl.h>40 #include <stdio.h>41 44 42 45 RenderVertexArray::RenderVertexArray(int nverts, GLint size, GLenum type) : 43 m_usage(GL_STREAM_COPY),44 m_nverts(nverts),45 m_size(size),46 m_type(type)46 _usage(GL_STREAM_COPY), 47 _nverts(nverts), 48 _size(size), 49 _type(type) 47 50 { 48 switch (m_type) {51 switch (_type) { 49 52 case GL_HALF_FLOAT_NV: 50 m_bytes_per_component = 2; break;53 _bytes_per_component = 2; break; 51 54 case GL_FLOAT: 52 m_bytes_per_component = sizeof(float); break;55 _bytes_per_component = sizeof(float); break; 53 56 default: 54 57 ERROR("unsupported RenderVertexArray type\n"); … … 57 60 58 61 // create the buffer object 59 glGenBuffersARB(1, & m_buffer);60 glBindBufferARB(GL_PIXEL_PACK_BUFFER_EXT, m_buffer);62 glGenBuffersARB(1, &_buffer); 63 glBindBufferARB(GL_PIXEL_PACK_BUFFER_EXT, _buffer); 61 64 glBufferDataARB(GL_PIXEL_PACK_BUFFER_EXT, 62 m_nverts*m_size*m_bytes_per_component, 0, m_usage); // undefined data65 _nverts*_size*_bytes_per_component, 0, _usage); // undefined data 63 66 glBindBufferARB(GL_PIXEL_PACK_BUFFER_EXT, 0); 64 67 65 68 // set equivalent image format 66 switch( m_size) {69 switch(_size) { 67 70 case 1: 68 m_format = GL_LUMINANCE; break;71 _format = GL_LUMINANCE; break; 69 72 case 3: 70 m_format = GL_RGB; break;73 _format = GL_RGB; break; 71 74 case 4: 72 m_format = GL_RGBA; break;75 _format = GL_RGBA; break; 73 76 default: 74 77 ERROR("unsupported RenderVertexArray size\n"); … … 79 82 RenderVertexArray::~RenderVertexArray() 80 83 { 81 glDeleteBuffersARB(1, & m_buffer);84 glDeleteBuffersARB(1, &_buffer); 82 85 } 83 86 … … 86 89 { 87 90 // load data to buffer object 88 glBindBufferARB(GL_PIXEL_PACK_BUFFER_EXT, m_buffer);91 glBindBufferARB(GL_PIXEL_PACK_BUFFER_EXT, _buffer); 89 92 glBufferDataARB(GL_PIXEL_PACK_BUFFER_EXT, 90 m_nverts*m_size*m_bytes_per_component, data, m_usage);93 _nverts*_size*_bytes_per_component, data, _usage); 91 94 glBindBufferARB(GL_PIXEL_PACK_BUFFER_EXT, 0); 92 95 } … … 96 99 { 97 100 // bind buffer object to pixel pack buffer 98 glBindBufferARB(GL_PIXEL_PACK_BUFFER_EXT, m_buffer);101 glBindBufferARB(GL_PIXEL_PACK_BUFFER_EXT, _buffer); 99 102 // read from frame buffer to buffer object 100 103 //glReadBuffer(buffer); //crash 101 glReadPixels(0, 0, w, h, m_format, m_type, 0);104 glReadPixels(0, 0, w, h, _format, _type, 0); 102 105 103 106 glBindBufferARB(GL_PIXEL_PACK_BUFFER_EXT, 0); … … 108 111 { 109 112 // bind buffer object to vertex array 110 glBindBufferARB(GL_ARRAY_BUFFER, m_buffer);111 //glVertexAttribPointerARB(index, m_size, m_type, GL_FALSE, 0, 0); //doesn't work112 glVertexPointer( m_size, m_type, 0, 0);113 glBindBufferARB(GL_ARRAY_BUFFER, _buffer); 114 //glVertexAttribPointerARB(index, _size, _type, GL_FALSE, 0, 0); //doesn't work 115 glVertexPointer(_size, _type, 0, 0); 113 116 114 117 glBindBufferARB(GL_ARRAY_BUFFER, 0); -
trunk/packages/vizservers/nanovis/RenderVertexArray.h
r2798 r2837 20 20 #include <GL/gl.h> 21 21 22 class RenderVertexArray { 23 GLenum m_usage; // vbo usage flag 24 GLuint m_buffer; 25 GLuint m_index; 26 GLuint m_nverts; 27 GLint m_size; // size of attribute 28 GLenum m_format; // readpixels image format 29 GLenum m_type; // FLOAT or HALF_FLOAT 30 int m_bytes_per_component; 31 22 class RenderVertexArray 23 { 32 24 public: 33 25 RenderVertexArray(int nverts, GLint size, GLenum type = GL_FLOAT); 26 34 27 ~RenderVertexArray(); 35 28 36 29 void LoadData(void *data); // load vertex data from memory 30 37 31 void Read(/*GLenum buffer,*/ int w, int h); // read vertex data from 38 32 // frame buffer 39 33 void SetPointer(GLuint index); 34 35 private: 36 GLenum _usage; // vbo usage flag 37 GLuint _buffer; 38 GLuint _index; 39 GLuint _nverts; 40 GLint _size; // size of attribute 41 GLenum _format; // readpixels image format 42 GLenum _type; // FLOAT or HALF_FLOAT 43 int _bytes_per_component; 40 44 }; 41 45 -
trunk/packages/vizservers/nanovis/Renderable.cpp
r2798 r2837 14 14 * ====================================================================== 15 15 */ 16 17 18 16 #include "Renderable.h" 19 17 20 Renderable::Renderable(){} 21 Renderable::Renderable(Vector3 loc): 18 Renderable::Renderable() 19 { 20 } 21 22 Renderable::Renderable(const Vector3& loc) : 22 23 location(loc), 23 24 enabled(true) … … 25 26 } 26 27 27 Renderable::~Renderable(){} 28 29 void Renderable::move(Vector3 new_loc) { location = new_loc; } 28 Renderable::~Renderable() 29 {} 30 30 31 void Renderable::enable() { enabled = true; } 32 void Renderable::disable() { enabled = false; } 33 bool Renderable::is_enabled() { return enabled; } 31 void Renderable::move(const Vector3& new_loc) 32 { 33 location = new_loc; 34 } 34 35 36 void Renderable::enable() 37 { 38 enabled = true; 39 } 40 41 void Renderable::disable() 42 { 43 enabled = false; 44 } 45 46 bool Renderable::is_enabled() const 47 { 48 return enabled; 49 } 50 -
trunk/packages/vizservers/nanovis/Renderable.h
r2798 r2837 14 14 * ====================================================================== 15 15 */ 16 17 18 #ifndef _RENDERABLE_H_ 19 #define _RENDERABLE_H_ 20 16 #ifndef RENDERABLE_H 17 #define RENDERABLE_H 21 18 22 19 #include "Vector3.h" 23 20 24 struct BoundBox {25 Vector3 low; //lower coordinates26 Vector3 high; //higher coordinates21 struct BoundBox { 22 Vector3 low; //lower coordinates 23 Vector3 high; //higher coordinates 27 24 28 BoundBox(){} 29 BoundBox(float low_x, float low_y, float low_z, 30 float high_x, float high_y, float high_z): 31 low(Vector3(low_x, low_y, low_z)), 32 high(Vector3(high_x, high_y, high_z)){} 25 BoundBox() 26 {} 27 28 BoundBox(float low_x, float low_y, float low_z, 29 float high_x, float high_y, float high_z) : 30 low(low_x, low_y, low_z), 31 high(high_x, high_y, high_z) 32 {} 33 33 }; 34 34 35 class Renderable{ 35 class Renderable 36 { 37 public: 38 Renderable(const Vector3& loc); 39 40 Renderable(); 41 42 virtual ~Renderable(); 43 44 void move(const Vector3& new_loc); 45 46 virtual void render() = 0; 47 48 void enable(); 49 50 void disable(); 51 52 bool is_enabled() const; 53 36 54 protected: 37 Vector3 location; //the location (x,y,z) of the object 38 bool enabled; //display is enabled 39 BoundBox boundary; //the bounding box 40 41 public: 42 explicit Renderable(Vector3 loc); 43 Renderable(); 44 virtual ~Renderable(); 45 46 void move(Vector3 new_loc); 47 virtual void render() = 0; 48 void enable(); 49 void disable(); 50 bool is_enabled(); 55 Vector3 location; //the location (x,y,z) of the object 56 bool enabled; //display is enabled 57 BoundBox boundary; //the bounding box 51 58 }; 52 59 53 54 60 #endif -
trunk/packages/vizservers/nanovis/Sphere.h
r2822 r2837 29 29 { 30 30 public: 31 float radius;32 Color color;33 int stack;34 int slice;35 36 31 Sphere(float x, float y, float z, float r, float g, float b, float _radius, 37 32 int _stack, int _slice); … … 45 40 void draw(GLUquadric* q); 46 41 void render(); 42 43 float radius; 44 Color color; 45 int stack; 46 int slice; 47 47 }; 48 48
Note: See TracChangeset
for help on using the changeset viewer.