Changeset 850 for trunk/vizservers
- Timestamp:
- Jan 8, 2008, 10:52:26 PM (17 years ago)
- Location:
- trunk/vizservers/nanovis
- Files:
-
- 2 deleted
- 11 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/vizservers/nanovis/Command.cpp
r848 r850 24 24 25 25 #include "Command.h" 26 #include "Trace.h" 26 27 27 28 #include "nanovis.h" … … 806 807 } 807 808 #ifdef __TEST_CODE__ 809 /* 808 810 } else if (strcmp(header, "<FET>") == 0) { 809 811 printf("FET loading...\n"); … … 817 819 return TCL_ERROR; 818 820 } 821 */ 819 822 #endif 820 823 } else { … … 1863 1866 // Generate the latest frame and send it back to the client 1864 1867 // 1865 // INSOO 1868 if (NanoVis::particleRenderer && NanoVis::particleRenderer->isActivated()) 1869 { 1870 NanoVis::particleRenderer->advect(); 1871 } 1872 1866 1873 NanoVis::offscreen_buffer_capture(); //enable offscreen render 1867 1874 1868 1875 NanoVis::display(); 1876 1877 /* 1878 // TEST 1879 glClearColor(1.0f, 0.0f, 1.0f, 1.0f); 1880 glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); //clear screen 1881 NanoVis::cam->activate(); 1882 1883 //glEnable(GL_COLOR_MATERIAL); 1884 glEnable(GL_TEXTURE_RECTANGLE_NV); 1885 //glEnable(GL_BLEND); 1886 if (NanoVis::particleRenderer->flip) 1887 { 1888 glBindTexture(GL_TEXTURE_RECTANGLE_NV, NanoVis::particleRenderer->psys_tex[0]); 1889 } 1890 else 1891 { 1892 glBindTexture(GL_TEXTURE_RECTANGLE_NV, NanoVis::particleRenderer->psys_tex[1]); 1893 } 1894 1895 glColor3f(1.0f, 0.0f, 0.0f); 1896 draw_quad(1, 1, 512, 512); 1897 1898 glBindTexture(GL_TEXTURE_RECTANGLE_NV, 0); 1899 glDisable(GL_TEXTURE_RECTANGLE_NV); 1900 */ 1901 1869 1902 1870 1903 // INSOO -
trunk/vizservers/nanovis/Makefile.in
r848 r850 76 76 NvZincBlendeVolumeShader.o \ 77 77 PCASplit.o \ 78 ParticleSystem.o \79 78 PerfQuery.o \ 80 79 Plane.o \ … … 223 222 Texture2D.o: Texture2D.cpp Texture2D.h $(AUXSRC) 224 223 Texture3D.o: Texture3D.cpp Texture3D.h $(AUXSRC) 225 ParticleSystem.o: ParticleSystem.cpp $(AUXSRC)226 224 Renderable.o: Renderable.cpp Renderable.h 227 225 Camera.o: Camera.cpp Camera.h -
trunk/vizservers/nanovis/NvParticleAdvectionShader.cpp
r755 r850 1 1 #include <R2/R2FilePath.h> 2 #include <Trace.h> 2 3 #include "NvParticleAdvectionShader.h" 3 4 4 NvParticleAdvectionShader::NvParticleAdvectionShader(const Vector3& scale) 5 NvParticleAdvectionShader::NvParticleAdvectionShader() 6 : _scale(1.0f, 1.0f, 1.0f), _velocityVolumeID(0), _max(1.0f), _timeStep(0.005f) 5 7 { 6 init( scale);8 init(); 7 9 } 8 10 … … 11 13 } 12 14 13 void NvParticleAdvectionShader::init( const Vector3& scale)15 void NvParticleAdvectionShader::init() 14 16 { 15 17 R2string path = R2FilePath::getInstance()->getPath("update_pos.cg"); 18 19 if (path.getLength() == 0) 20 { 21 Trace("%s is not found\n", (const char*) path); 22 } 23 16 24 _cgFP= cgCreateProgramFromFile(g_context, CG_SOURCE, path, 17 25 CG_PROFILE_FP30, "main", NULL); 26 18 27 19 28 cgGLLoadProgram(_cgFP); 20 29 21 30 _posTimestepParam = cgGetNamedParameter(_cgFP, "timestep"); 31 _maxParam = cgGetNamedParameter(_cgFP, "max"); 22 32 _velTexParam = cgGetNamedParameter(_cgFP, "vel_tex"); 23 33 _posTexParam = cgGetNamedParameter(_cgFP, "pos_tex"); 24 34 _scaleParam = cgGetNamedParameter(_cgFP, "scale"); 25 // TBD.. 35 36 // TBD. 26 37 //cgGLSetTextureParameter(_velTexParam, volume); 27 cgGLSetParameter3f(_scaleParam, scale.x, scale.y, scale.z); 38 //cgGLSetParameter3f(_scaleParam, scale.x, scale.y, scale.z); 39 Trace("update_pos.cg loaded\n"); 28 40 } 29 41 -
trunk/vizservers/nanovis/NvParticleAdvectionShader.h
r587 r850 10 10 CGparameter _posTexParam; 11 11 CGparameter _scaleParam; 12 CGparameter _maxParam; 13 unsigned int _velocityVolumeID; 14 Vector3 _scale; 15 float _max; 16 float _timeStep; 12 17 13 18 public : 14 NvParticleAdvectionShader( const Vector3& scale);19 NvParticleAdvectionShader(); 15 20 ~NvParticleAdvectionShader(); 16 21 17 22 private : 18 void init(const Vector3& scale); 19 23 void init(); 20 24 public : 21 25 void bind(unsigned int texID); 22 26 void unbind(); 27 void setScale(const Vector3& scale); 28 void setVelocityVolume(unsigned int texID, float max); 29 void setTimeStep(float timeStep); 23 30 }; 31 32 inline void NvParticleAdvectionShader::setTimeStep(float timeStep) 33 { 34 _timeStep = timeStep; 35 } 24 36 25 37 inline void NvParticleAdvectionShader::bind(unsigned int texID) 26 38 { 27 39 cgGLBindProgram(_cgFP); 28 cgGLSetParameter1f(_posTimestepParam, 0.05); 40 41 cgGLSetParameter1f(_posTimestepParam, _timeStep); 42 cgGLSetParameter1f(_maxParam, _max); 43 cgGLSetParameter3f(_scaleParam, _scale.x, _scale.y, _scale.z); 44 cgGLSetTextureParameter(_velTexParam, _velocityVolumeID); 29 45 cgGLEnableTextureParameter(_velTexParam); 30 46 cgGLSetTextureParameter(_posTexParam, texID); … … 42 58 } 43 59 60 inline void NvParticleAdvectionShader::setScale(const Vector3& scale) 61 { 62 _scale = scale; 63 } 64 65 inline void NvParticleAdvectionShader::setVelocityVolume(unsigned int texID, float max) 66 { 67 _velocityVolumeID = texID; 68 _max = max; 69 } 70 44 71 #endif //__NV_PARTICLE_ADV_SHADER_H__ -
trunk/vizservers/nanovis/NvParticleRenderer.cpp
r755 r850 21 21 #include <R2/R2FilePath.h> 22 22 #include "NvParticleRenderer.h" 23 24 25 NvParticleRenderer::NvParticleRenderer(int w, int h, CGcontext context, NVISid volume, float scale_x, 26 float scale_y, float scale_z) 27 { 28 29 fprintf(stderr, "%f, %f, %f\n", scale_x, scale_y, scale_z); 30 scale = Vector3(scale_x, scale_y, scale_z); 31 23 #include <Trace.h> 24 25 26 #define NV_32 27 28 NvParticleRenderer::NvParticleRenderer(int w, int h, CGcontext context) 29 : scale(1, 1, 1), _activate(false) 30 { 32 31 psys_width = w; 33 32 psys_height = h; … … 41 40 42 41 m_vertex_array = new RenderVertexArray(psys_width*psys_height, 3, GL_FLOAT); 42 43 43 assert(glGetError()==0); 44 44 … … 51 51 glTexParameterf(GL_TEXTURE_RECTANGLE_NV, GL_TEXTURE_MIN_FILTER, GL_NEAREST); 52 52 glTexParameterf(GL_TEXTURE_RECTANGLE_NV, GL_TEXTURE_MAG_FILTER, GL_NEAREST); 53 54 #ifdef NV_32 53 55 glTexImage2D(GL_TEXTURE_RECTANGLE_NV, 0, GL_FLOAT_RGBA32_NV, psys_width, psys_height, 0, GL_RGBA, GL_FLOAT, NULL); 56 #else 57 glTexImage2D(GL_TEXTURE_RECTANGLE_NV, 0, GL_RGBA, psys_width, psys_height, 0, GL_RGBA, GL_FLOAT, NULL); 58 #endif 54 59 glFramebufferTexture2DEXT(GL_FRAMEBUFFER_EXT, GL_COLOR_ATTACHMENT0_EXT, GL_TEXTURE_RECTANGLE_NV, psys_tex[0], 0); 55 60 … … 59 64 glTexParameterf(GL_TEXTURE_RECTANGLE_NV, GL_TEXTURE_MIN_FILTER, GL_NEAREST); 60 65 glTexParameterf(GL_TEXTURE_RECTANGLE_NV, GL_TEXTURE_MAG_FILTER, GL_NEAREST); 66 #ifdef NV_32 61 67 glTexImage2D(GL_TEXTURE_RECTANGLE_NV, 0, GL_FLOAT_RGBA32_NV, psys_width, psys_height, 0, GL_RGBA, GL_FLOAT, NULL); 68 #else 69 glTexImage2D(GL_TEXTURE_RECTANGLE_NV, 0, GL_RGBA, psys_width, psys_height, 0, GL_RGBA, GL_FLOAT, NULL); 70 #endif 62 71 glFramebufferTexture2DEXT(GL_FRAMEBUFFER_EXT, GL_COLOR_ATTACHMENT0_EXT, GL_TEXTURE_RECTANGLE_NV, psys_tex[1], 0); 63 72 73 glBindFramebufferEXT(GL_FRAMEBUFFER_EXT, 0); 74 64 75 CHECK_FRAMEBUFFER_STATUS(); 65 assert(glGetError()==0);66 76 67 77 //load related shaders … … 78 88 cgGLSetParameter3f(m_scale_param, scale_x, scale_y, scale_z); 79 89 */ 80 _advectionShader = new NvParticleAdvectionShader(scale); 81 82 fprintf(stderr, "init_psys\n"); 90 91 _advectionShader = new NvParticleAdvectionShader(); 92 83 93 } 84 94 … … 102 112 103 113 glBindTexture(GL_TEXTURE_RECTANGLE_NV, psys_tex[0]); 114 // I need to find out why GL_FLOAT_RGBA32_NV doesn't work 115 #ifdef NV_32 104 116 glTexImage2D(GL_TEXTURE_RECTANGLE_NV, 0, GL_FLOAT_RGBA32_NV, psys_width, psys_height, 0, GL_RGBA, GL_FLOAT, (float*)p); 105 106 assert(glGetError()==0); 107 117 #else 118 glTexImage2D(GL_TEXTURE_RECTANGLE_NV, 0, GL_RGBA, psys_width, psys_height, 0, GL_RGBA, GL_FLOAT, (float*)p); 119 #endif 120 glBindTexture(GL_TEXTURE_RECTANGLE_NV, 0); 121 108 122 flip = true; 109 123 reborn = false; … … 115 129 { 116 130 glBindTexture(GL_TEXTURE_RECTANGLE_NV, psys_tex[0]); 131 132 #ifdef NV_32 117 133 glTexImage2D(GL_TEXTURE_RECTANGLE_NV, 0, GL_FLOAT_RGBA32_NV, psys_width, psys_height, 0, GL_RGBA, GL_FLOAT, (float*)data); 118 119 assert(glGetError()==0); 120 134 #else 135 glTexImage2D(GL_TEXTURE_RECTANGLE_NV, 0, GL_RGBA, psys_width, psys_height, 0, GL_RGBA, GL_FLOAT, (float*)data);# 136 #endif 137 glBindTexture(GL_TEXTURE_RECTANGLE_NV, 0); 138 121 139 flip = true; 122 140 reborn = false; … … 124 142 } 125 143 126 127 144 void NvParticleRenderer::advect() 128 145 { … … 131 148 132 149 glDisable(GL_BLEND); 150 glDisable(GL_DEPTH_TEST); 133 151 134 if(flip){ 152 if (flip) 153 { 135 154 glBindFramebufferEXT(GL_FRAMEBUFFER_EXT, psys_fbo[1]); 155 glEnable(GL_TEXTURE_RECTANGLE_NV); 136 156 glBindTexture(GL_TEXTURE_RECTANGLE_NV, psys_tex[0]); 137 157 138 glClear(GL_COLOR_BUFFER_BIT); 158 glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); 159 //glClear(GL_COLOR_BUFFER_BIT); 139 160 140 161 glViewport(0, 0, psys_width, psys_height); 141 162 glMatrixMode(GL_PROJECTION); 142 163 glLoadIdentity(); 143 gluOrtho2D(0, psys_width, 0, psys_height); 164 //gluOrtho2D(0, psys_width, 0, psys_height); 165 glOrtho(0, psys_width, 0, psys_height, -10.0f, 10.0f); 144 166 glMatrixMode(GL_MODELVIEW); 145 167 glLoadIdentity(); … … 147 169 _advectionShader->bind(psys_tex[0]); 148 170 149 /* 150 cgGLBindProgram(m_pos_fprog); 151 cgGLSetParameter1f(m_pos_timestep_param, 0.05); 152 cgGLEnableTextureParameter(m_vel_tex_param); 153 cgGLSetTextureParameter(m_pos_tex_param, psys_tex[0]); 154 cgGLEnableTextureParameter(m_pos_tex_param); 155 156 cgGLEnableProfile(CG_PROFILE_FP30); 157 */ 158 draw_quad(psys_width, psys_height, psys_width, psys_height); 159 /* 160 cgGLDisableProfile(CG_PROFILE_FP30); 161 cgGLDisableTextureParameter(m_vel_tex_param); 162 cgGLDisableTextureParameter(m_pos_tex_param); 163 */ 171 //cgGLBindProgram(m_pos_fprog); 172 //cgGLSetParameter1f(m_pos_timestep_param, 0.05); 173 //cgGLEnableTextureParameter(m_vel_tex_param); 174 //cgGLSetTextureParameter(m_pos_tex_param, psys_tex[0]); 175 //cgGLEnableTextureParameter(m_pos_tex_param); 176 //cgGLEnableProfile(CG_PROFILE_FP30); 177 178 draw_quad(psys_width, psys_height, psys_width, psys_height); 179 180 //cgGLDisableProfile(CG_PROFILE_FP30); 181 //cgGLDisableTextureParameter(m_vel_tex_param); 182 //cgGLDisableTextureParameter(m_pos_tex_param); 183 glDisable(GL_TEXTURE_RECTANGLE_NV); 164 184 } 165 185 else … … 168 188 glBindTexture(GL_TEXTURE_RECTANGLE_NV, psys_tex[1]); 169 189 170 glClear(GL_COLOR_BUFFER_BIT); 190 glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); 191 //glClear(GL_COLOR_BUFFER_BIT); 171 192 172 193 glViewport(0, 0, psys_width, psys_height); 173 194 glMatrixMode(GL_PROJECTION); 174 195 glLoadIdentity(); 175 gluOrtho2D(0, psys_width, 0, psys_height); 196 //gluOrtho2D(0, psys_width, 0, psys_height); 197 glOrtho(0, psys_width, 0, psys_height, -10.0f, 10.0f); 176 198 glMatrixMode(GL_MODELVIEW); 177 199 glLoadIdentity(); … … 179 201 _advectionShader->bind(psys_tex[1]); 180 202 181 /* 182 cgGLBindProgram(m_pos_fprog); 183 cgGLSetParameter1f(m_pos_timestep_param, 0.05); 184 cgGLEnableTextureParameter(m_vel_tex_param); 185 cgGLSetTextureParameter(m_pos_tex_param, psys_tex[1]); 186 cgGLEnableTextureParameter(m_pos_tex_param); 187 cgGLEnableProfile(CG_PROFILE_FP30); 188 */ 203 //cgGLBindProgram(m_pos_fprog); 204 //cgGLSetParameter1f(m_pos_timestep_param, 0.05); 205 //cgGLEnableTextureParameter(m_vel_tex_param); 206 //cgGLSetTextureParameter(m_pos_tex_param, psys_tex[1]); 207 //cgGLEnableTextureParameter(m_pos_tex_param); 208 //cgGLEnableProfile(CG_PROFILE_FP30); 189 209 190 210 draw_quad(psys_width, psys_height, psys_width, psys_height); 191 192 /* 193 cgGLDisableProfile(CG_PROFILE_FP30); 194 cgGLDisableTextureParameter(m_vel_tex_param); 195 cgGLDisableTextureParameter(m_pos_tex_param); 196 */ 197 211 //draw_quad(psys_width, psys_height, 1.0f, 1.0f); 212 213 //cgGLDisableProfile(CG_PROFILE_FP30); 214 //cgGLDisableTextureParameter(m_vel_tex_param); 215 //cgGLDisableTextureParameter(m_pos_tex_param); 198 216 } 199 217 200 218 _advectionShader->unbind(); 201 219 202 assert(glGetError()==0);203 204 220 //soft_read_verts(); 221 205 222 update_vertex_buffer(); 206 223 … … 214 231 } 215 232 216 //fprintf(stderr, "advect: %d ", psys_frame);233 glBindFramebufferEXT(GL_FRAMEBUFFER_EXT, 0); 217 234 } 218 235 … … 220 237 { 221 238 m_vertex_array->Read(psys_width, psys_height); 222 //m_vertex_array->LoadData(vert); //does not work?? 223 assert(glGetError()==0); 239 240 //m_vertex_array->LoadData(vert); //does not work?? 241 //assert(glGetError()==0); 224 242 } 225 243 … … 235 253 glEnable(GL_DEPTH_TEST); 236 254 255 glEnable(GL_COLOR_MATERIAL); 256 237 257 glPointSize(1.2); 238 258 glColor4f(.2,.2,.8,1.); 239 259 240 260 glPushMatrix(); 261 241 262 glScaled(1./scale.x, 1./scale.y, 1./scale.z); 242 263 264 glEnableClientState(GL_VERTEX_ARRAY); 243 265 m_vertex_array->SetPointer(0); 244 glEnableClientState(GL_VERTEX_ARRAY);245 266 glDrawArrays(GL_POINTS, 0, psys_width*psys_height); 246 267 glDisableClientState(GL_VERTEX_ARRAY); … … 249 270 250 271 glDisable(GL_DEPTH_TEST); 251 assert(glGetError()==0); 252 } 253 254 272 273 //assert(glGetError()==0); 274 } 275 276 void NvParticleRenderer::setVectorField(unsigned int texID, float scaleX, float scaleY, float scaleZ, float max) 277 { 278 _advectionShader->setScale(Vector3(scaleX, scaleY, scaleZ)); 279 _advectionShader->setVelocityVolume(texID, max); 280 } -
trunk/vizservers/nanovis/NvParticleRenderer.h
r587 r850 15 15 16 16 17 #ifndef _ PARTICLE_SYSTEM_H_18 #define _ PARTICLE_SYSTEM_H_17 #ifndef _NV_PARTICLE_SYSTEM_H_ 18 #define _NV_PARTICLE_SYSTEM_H_ 19 19 20 20 #include "GL/glew.h" … … 44 44 45 45 class NvParticleRenderer : public Renderable { 46 public : 46 47 /** 47 48 * @brief frame buffer objects: two are defined, flip them as input output every step … … 92 93 Vector3 scale; 93 94 95 bool _activate; 94 96 public: 95 97 int psys_width; //the storage of particles is implemented as a 2D array. 96 98 int psys_height; 97 99 98 NvParticleRenderer(int w, int h, CGcontext context, NVISid vector_field, 99 float scalex, float scaley, float scalez); 100 NvParticleRenderer(int w, int h, CGcontext context); 100 101 ~NvParticleRenderer(); 102 void setVectorField(unsigned int texID, float scaleX, float scaleY, float scaleZ, float max); 101 103 void initialize(Particle* data); 102 104 void advect(); … … 105 107 void reset(); 106 108 void render(); 109 110 void activate(); 111 void deactivate(); 112 bool isActivated() const; 107 113 }; 108 114 115 inline void NvParticleRenderer::activate() 116 { 117 _activate = true; 118 } 119 120 inline void NvParticleRenderer::deactivate() 121 { 122 _activate = false; 123 } 124 125 inline bool NvParticleRenderer::isActivated() const 126 { 127 return _activate; 128 } 109 129 110 130 #endif -
trunk/vizservers/nanovis/RenderVertexArray.cpp
r226 r850 84 84 glBindBufferARB(GL_PIXEL_PACK_BUFFER_EXT, m_buffer); 85 85 glBufferDataARB(GL_PIXEL_PACK_BUFFER_EXT, m_nverts*m_size*m_bytes_per_component, data, m_usage); 86 glBindBufferARB(GL_PIXEL_PACK_BUFFER_EXT, 0); 86 87 } 87 88 … … 104 105 glBindBufferARB(GL_ARRAY_BUFFER, m_buffer); 105 106 //glVertexAttribPointerARB(index, m_size, m_type, GL_FALSE, 0, 0); //doesn't work 106 glVertexPointer(m_size, m_type, GL_FALSE, 0);107 glVertexPointer(m_size, m_type, 0, 0); 107 108 108 109 glBindBufferARB(GL_ARRAY_BUFFER, 0); -
trunk/vizservers/nanovis/dxReader.cpp
r848 r850 45 45 */ 46 46 void 47 load_vector_stream(int index, std::i ostream& fin)47 load_vector_stream(int index, std::istream& fin) 48 48 { 49 49 int dummy, nx, ny, nz, nxy, npts; … … 178 178 179 179 ngen = 0; 180 for (ngen=0; ngen < npts; ngen++) { 180 // scale should be accounted. 181 for (ngen=0; ngen < npts; ngen++) 182 { 181 183 data[ngen] = (data[ngen]/(2.0*vmax) + 0.5); 182 184 } -
trunk/vizservers/nanovis/nanovis.cpp
r848 r850 34 34 #include "Util.h" 35 35 36 // for debuging new functions37 // #include "Test.h"38 39 36 #include "nanovis.h" 40 37 #include "RpField1D.h" … … 90 87 Texture2D* NanoVis::plane[10]; 91 88 NvColorTableRenderer* NanoVis::color_table_renderer = 0; 89 NvParticleRenderer* NanoVis::particleRenderer = 0; 92 90 graphics::RenderContext* NanoVis::renderContext = 0; 93 91 … … 183 181 // FLOW 184 182 // TBD 183 static float lic_slice_x = 0.0f; 185 184 /* 186 static float lic_slice_x = 0.0f;187 185 static float lic_slice_y = 0.0f; 188 186 static float lic_slice_z = 0.3f; … … 463 461 // Check framebuffer completeness at the end of initialization. 464 462 CHECK_FRAMEBUFFER_STATUS(); 465 assert(glGetError()==0); 463 464 //assert(glGetError()==0); 466 465 } 467 466 … … 533 532 // Check framebuffer completeness at the end of initialization. 534 533 CHECK_FRAMEBUFFER_STATUS(); 535 assert(glGetError()==0);534 //assert(glGetError()==0); 536 535 fprintf(stdin," after assert\n"); 537 536 } … … 580 579 } 581 580 581 void NanoVis::initParticle() 582 { 583 //random placement on a slice 584 float* data = new float[particleRenderer->psys_width * particleRenderer->psys_height * 4]; 585 bzero(data, sizeof(float)*4* particleRenderer->psys_width * particleRenderer->psys_height); 586 587 int index; 588 bool particle; 589 for (int i=0; i<particleRenderer->psys_width; i++) { 590 for (int j=0; j<particleRenderer->psys_height; j++) { 591 index = i + particleRenderer->psys_height*j; 592 //particle = rand() % 256 > 150; 593 //if(particle) 594 { 595 //assign any location (x,y,z) in range [0,1] 596 // TEMP 597 data[4*index] = lic_slice_x; 598 data[4*index+1]= j/float(particleRenderer->psys_height); 599 data[4*index+2]= i/float(particleRenderer->psys_width); 600 data[4*index+3]= 30; //shorter life span, quicker iterations 601 //data[4*index+3]= 1.0f; //shorter life span, quicker iterations 602 } 603 /* 604 else 605 { 606 data[4*index] = 0; 607 data[4*index+1]= 0; 608 data[4*index+2]= 0; 609 data[4*index+3]= 0; 610 } 611 */ 612 } 613 } 614 615 particleRenderer->initialize((Particle*)data); 616 617 delete[] data; 618 } 582 619 583 620 void NanoVis::init(const char* path) … … 613 650 color_table_renderer->setFonts(fonts); 614 651 652 particleRenderer = new NvParticleRenderer(NMESH, NMESH, g_context); 653 615 654 ImageLoaderFactory::getInstance()->addLoaderImpl("bmp", new BMPImageLoaderImpl()); 616 655 … … 698 737 plane_render->add_plane(plane[0], get_transfunc("default")); 699 738 700 assert(glGetError()==0);739 //assert(glGetError()==0); 701 740 702 741 #ifdef notdef … … 711 750 glReadPixels(0, 0, win_width, win_height, GL_RGB, GL_UNSIGNED_BYTE, 712 751 screen_buffer); 713 assert(glGetError()==0);752 //assert(glGetError()==0); 714 753 } 715 754 … … 1109 1148 glPopMatrix(); 1110 1149 1111 assert(glGetError()==0);1150 //assert(glGetError()==0); 1112 1151 } 1113 1152 #endif … … 1200 1239 //buffer->DisableTextureTarget(); 1201 1240 1202 assert(glGetError()==0);1241 //assert(glGetError()==0); 1203 1242 } 1204 1243 #endif … … 1333 1372 NanoVis::display() 1334 1373 { 1335 assert(glGetError()==0);1374 //assert(glGetError()==0); 1336 1375 1337 1376 //lic->convolve(); //flow line integral convolution … … 1389 1428 } 1390 1429 1430 if (particleRenderer && particleRenderer->isActivated()) 1431 { 1432 particleRenderer->render(); 1433 } 1391 1434 //lic->render(); //display the line integral convolution result 1392 1435 //soft_display_verts(); -
trunk/vizservers/nanovis/nanovis.h
r848 r850 15 15 #ifndef __NANOVIS_H__ 16 16 #define __NANOVIS_H__ 17 18 #include <tcl.h> 17 19 18 20 #include <GL/glew.h> … … 49 51 #include "Mat4x4.h" 50 52 #include "Volume.h" 51 #include " ParticleSystem.h"53 #include "NvParticleRenderer.h" 52 54 #include "PerfQuery.h" 53 55 #include "Event.h" … … 63 65 #include "config.h" 64 66 65 #include <tcl.h>66 67 67 68 //defines for the image based flow visualization … … 102 103 static VolumeRenderer* vol_renderer; 103 104 static PointSetRenderer* pointset_renderer; 105 static NvParticleRenderer* particleRenderer; 104 106 static vector<PointSet*> pointSet; 105 107 static PlaneRenderer* plane_render; … … 132 134 static void init_lic(void); 133 135 static void init_offscreen_buffer(void); 136 static void initParticle(); 134 137 static void resize_offscreen_buffer(int w, int h); 135 138 static void offscreen_buffer_capture(void); -
trunk/vizservers/nanovis/shaders/update_pos.cg
r392 r850 19 19 uniform sampler3D vel_tex, 20 20 uniform float timestep, 21 uniform float max, 21 22 uniform float3 scale 22 23 ) : COLOR … … 28 29 float time = pos.w; 29 30 30 float4 vel = float4(tex3D(vel_tex, pos.xyz).xyz, 0);31 32 31 //reconstruct negative value 33 vel = (vel - float4(0.5,0.5,0.5,0.))*2.; 32 float4 vel = float4(tex3D(vel_tex, pos.xyz).xyz, 0) - float4(0.5, 0.5, 0.5, 0.0f); 33 vel = vel * (2 * max); 34 34 vel.x *= scale.x; 35 35 vel.y *= scale.y; 36 36 vel.z *= scale.z; 37 ret = pos + vel*timestep; 38 //ret = pos; 39 37 ret = pos; 38 ret.x -= vel.x * timestep; 39 ret.y -= vel.y * timestep; 40 ret.z -= vel.z * timestep; 40 41 41 42 //not drawing if the particle is out of bound
Note: See TracChangeset
for help on using the changeset viewer.