Eigene Dateien/FlowVis/src/VFlowRenderer_helper.cpp

Go to the documentation of this file.
00001 #include "VFlowRenderer.h"
00002 #include "glew.h"
00003 
00004 void VFlowRenderer::setShaderWrapperVelocity()
00005 {
00006         glActiveTextureARB(GL_TEXTURE1_ARB);
00007         glEnable(GL_TEXTURE_2D);
00008         glBindTexture(GL_TEXTURE_2D, m_TransferFunctionHandle);
00009 
00010         mVelocityProgram.bind();
00011 
00012         mCamera.updateProjMatrix();
00013         mCamera.updateViewMatrix();
00014 
00015         glUniformMatrix4fv(mVelocityProgram.getUniformLocation("mViewMatrix"),1,false,mCamera.getViewMatrix());
00016         glUniformMatrix4fv(mVelocityProgram.getUniformLocation("mProjectionMatrix"),1,false,mCamera.getProjectionMatrix());
00017 
00018         glUniform1i( mVelocityProgram.getUniformLocation( "mTransfer" ), 1 );
00019         glUniform1f( mVelocityProgram.getUniformLocation( "maxMagnitude" ), mFlowData->getMaximalMagnitude() );
00020         glUniform1f( mVelocityProgram.getUniformLocation( "minMagnitude" ), mFlowData->getMinimalMagnitude() );
00021 
00022 }
00023 
00024 void VFlowRenderer::clearShaderWrapperVelocity()
00025 {
00026         mVelocityProgram.release();
00027 
00028         glActiveTextureARB(GL_TEXTURE1_ARB);
00029         glBindTexture(GL_TEXTURE_2D, 0);
00030         glDisable(GL_TEXTURE_2D);
00031 }
00032 
00033 void VFlowRenderer::setShaderWrapperPressure()
00034 {
00035         glActiveTextureARB(GL_TEXTURE1_ARB);
00036         glEnable(GL_TEXTURE_2D);
00037         glBindTexture(GL_TEXTURE_2D, m_TransferFunctionHandle);
00038 
00039         mPressureProgram.bind();
00040 
00041         mCamera.updateProjMatrix();
00042         mCamera.updateViewMatrix();
00043 
00044         glUniformMatrix4fv(mPressureProgram.getUniformLocation("mViewMatrix"),1,false,mCamera.getViewMatrix());
00045         glUniformMatrix4fv(mPressureProgram.getUniformLocation("mProjectionMatrix"),1,false,mCamera.getProjectionMatrix());
00046 
00047         glUniform1i( mPressureProgram.getUniformLocation( "mTransfer" ), 1 );
00048         glUniform1f( mPressureProgram.getUniformLocation( "maxDataValue" ), mFlowData->getMaximalDatavalue( 1 ) );
00049         glUniform1f( mPressureProgram.getUniformLocation( "minDataValue" ), mFlowData->getMinimalDatavalue( 1 ) );
00050 
00051 }
00052 
00053 void VFlowRenderer::clearShaderWrapperPressure()
00054 {
00055         mVelocityProgram.release();
00056 
00057         glActiveTextureARB(GL_TEXTURE1_ARB);
00058         glBindTexture(GL_TEXTURE_2D, 0);
00059         glDisable(GL_TEXTURE_2D);
00060 }
00061 
00062 void VFlowRenderer::setShaderWrapperVorticity()
00063 {
00064         glActiveTextureARB(GL_TEXTURE1_ARB);
00065         glEnable(GL_TEXTURE_2D);
00066         glBindTexture(GL_TEXTURE_2D, m_TransferFunctionHandle);
00067 
00068         mVorticityProgram.bind();
00069 
00070         mCamera.updateProjMatrix();
00071         mCamera.updateViewMatrix();
00072 
00073         glUniformMatrix4fv(mVorticityProgram.getUniformLocation("mViewMatrix"),1,false,mCamera.getViewMatrix());
00074         glUniformMatrix4fv(mVorticityProgram.getUniformLocation("mProjectionMatrix"),1,false,mCamera.getProjectionMatrix());
00075 
00076         glUniform1i( mVorticityProgram.getUniformLocation( "mTransfer" ), 1 );
00077         glUniform1f( mVorticityProgram.getUniformLocation( "maxDataValue" ), mFlowData->getMaximalDatavalue( 2 ) );
00078         glUniform1f( mVorticityProgram.getUniformLocation( "minDataValue" ), mFlowData->getMinimalDatavalue( 2 ) );
00079 
00080 }
00081 
00082 void VFlowRenderer::clearShaderWrapperVorticity()
00083 {
00084         mVorticityProgram.release();
00085 
00086         glActiveTextureARB(GL_TEXTURE1_ARB);
00087         glBindTexture(GL_TEXTURE_2D, 0);
00088         glDisable(GL_TEXTURE_2D);
00089 }
00090 
00091 void VFlowRenderer::setShaderWrapperGlyph()
00092 {
00093         glEnable(GL_POINT_SPRITE);
00094         glEnable(GL_VERTEX_PROGRAM_POINT_SIZE);
00095         glTexEnvi(GL_POINT_SPRITE_ARB, GL_COORD_REPLACE_ARB, GL_TRUE);
00096 
00097         glEnable(GL_BLEND);
00098         glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
00099 
00100         glEnable(GL_ALPHA_TEST);
00101         glAlphaFunc(GL_GREATER, 0.1f);
00102 
00103         glActiveTextureARB(GL_TEXTURE0_ARB);
00104         glEnable(GL_TEXTURE_2D);
00105         if(mUseGlyph)
00106         {
00107                 glBindTexture(GL_TEXTURE_2D, mGlyph.getImageHandle());
00108         }
00109         else
00110         {
00111                 glBindTexture(GL_TEXTURE_2D, mTriangle.getImageHandle());
00112         }
00113         
00114         /*glActiveTextureARB(GL_TEXTURE1_ARB);
00115         glEnable(GL_TEXTURE_2D);
00116         glBindTexture(GL_TEXTURE_2D, m_TransferFunctionHandle);*/
00117 
00118         /*glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_WRAP_S,GL_CLAMP_TO_BORDER);
00119         glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_WRAP_T,GL_CLAMP_TO_BORDER);*/
00120 
00121         mGlyphProgram.bind();
00122 
00123         mCamera.updateProjMatrix();
00124         mCamera.updateViewMatrix();
00125 
00126         float layer = 1.0f;
00127         glUniform1f(mGlyphProgram.getUniformLocation("mLayer"),layer);
00128 
00129         glUniform1f(mGlyphProgram.getUniformLocation("mGlyphSize"), mBaseGlyphSize);
00130         glUniform1f(mGlyphProgram.getUniformLocation("mDistance"), mCameraDistance);
00131 
00132         glUniform1f(mGlyphProgram.getUniformLocation("mArrowAlpha"), arrowalpha);
00133 
00134         glUniform1i(mGlyphProgram.getUniformLocation("mGlyph"),0);
00135         glUniform3fv(mGlyphProgram.getUniformLocation("mExtends"), 1, mFlowData->getExtends());
00136 
00137         glUniform3fv(mGlyphProgram.getUniformLocation("mArrowColor"), 1, arrowColor->getPtr());
00138 
00139         glUniformMatrix4fv(mGlyphProgram.getUniformLocation("mViewMatrix"),1,false,mCamera.getViewMatrix());
00140         glUniformMatrix4fv(mGlyphProgram.getUniformLocation("mProjectionMatrix"),1,false,mCamera.getProjectionMatrix());
00141 
00142         float scalefactor = 2.0f;
00143 
00144         if ( ( mFlowData->getExtends( ) )[ 1 ] < 1.0f )
00145         {
00146                 scalefactor = 0.3f;
00147         }
00148 
00149         if ( ( mFlowData->getExtends( ) )[ 1 ] > 15.0f )
00150         {
00151                 scalefactor = 1.5f;
00152         }
00153 
00154         glUniform1f(mGlyphProgram.getUniformLocation("mOverallScaleFactor"), scalefactor );
00155         glUniform1f(mGlyphProgram.getUniformLocation("mScalingParam"), arrows_nonunifcale );
00156         glUniform1f(mGlyphProgram.getUniformLocation("mMaxDataValue"), mFlowData->getMaximalDatavalue( activeDataValue - 1 ) );
00157         glUniform1f(mGlyphProgram.getUniformLocation("mMinDataValue"), mFlowData->getMinimalDatavalue( activeDataValue - 1 ) );
00158         glUniform1f(mGlyphProgram.getUniformLocation("mScaleProperty"), (float)activeDataValue  );
00159 
00160 
00161         //glUniform1i(mVelocityProgram.getUniformLocation("mTransfer"),1);
00162 
00163 }
00164 
00165 void VFlowRenderer::clearShaderWrapperGlyph()
00166 {
00167         mGlyphProgram.release();
00168 
00169         glActiveTextureARB(GL_TEXTURE0_ARB);
00170         glBindTexture(GL_TEXTURE_2D, 0);
00171         glDisable(GL_TEXTURE_2D);
00172 
00173         /*glActiveTextureARB(GL_TEXTURE1_ARB);
00174         glEnable(GL_TEXTURE_2D);
00175         glBindTexture(GL_TEXTURE_2D, 0);*/
00176 
00177         glDisable(GL_ALPHA_TEST);
00178         glDisable(GL_BLEND);
00179 
00180         glDisable(GL_POINT_SPRITE);
00181         glDisable(GL_VERTEX_PROGRAM_POINT_SIZE);
00182         glTexEnvi(GL_POINT_SPRITE_ARB, GL_COORD_REPLACE_ARB, GL_FALSE); 
00183 }
00184 
00185 void VFlowRenderer::setShaderWrapperGlyphTf()
00186 {
00187         glEnable(GL_POINT_SPRITE);
00188         glEnable(GL_VERTEX_PROGRAM_POINT_SIZE);
00189         glTexEnvi(GL_POINT_SPRITE_ARB, GL_COORD_REPLACE_ARB, GL_TRUE);
00190 
00191         glEnable(GL_BLEND);
00192         glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
00193 
00194         glEnable(GL_ALPHA_TEST);
00195         glAlphaFunc(GL_GREATER, 0.1f);
00196 
00197         glActiveTextureARB(GL_TEXTURE0_ARB);
00198         glEnable(GL_TEXTURE_2D);
00199         if(mUseGlyph)
00200         {
00201                 glBindTexture(GL_TEXTURE_2D, mGlyph.getImageHandle());
00202         }
00203         else
00204         {
00205                 glBindTexture(GL_TEXTURE_2D, mTriangle.getImageHandle());
00206         }
00207 
00208         glActiveTextureARB(GL_TEXTURE1_ARB);
00209         glEnable(GL_TEXTURE_2D);
00210         glBindTexture(GL_TEXTURE_2D, m_ArrowTransferFunctionHandle);
00211 
00212         /*glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_WRAP_S,GL_CLAMP_TO_BORDER);
00213         glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_WRAP_T,GL_CLAMP_TO_BORDER);*/
00214 
00215         mGlyphProgramTf.bind();
00216 
00217         mCamera.updateProjMatrix();
00218         mCamera.updateViewMatrix();
00219 
00220         float layer = 1.0f;
00221         glUniform1f(mGlyphProgramTf.getUniformLocation("mLayer"),layer);
00222 
00223         glUniform1f(mGlyphProgramTf.getUniformLocation("mGlyphSize"), mBaseGlyphSize);
00224         glUniform1f(mGlyphProgramTf.getUniformLocation("mDistance"), mCameraDistance);
00225 
00226         glUniform1f(mGlyphProgramTf.getUniformLocation("mArrowAlpha"), arrowalpha);
00227 
00228         glUniform1i(mGlyphProgramTf.getUniformLocation("mGlyph"),0);
00229         glUniform3fv(mGlyphProgramTf.getUniformLocation("mExtends"), 1, mFlowData->getExtends());
00230 
00231         glUniform3fv(mGlyphProgramTf.getUniformLocation("mArrowColor"), 1, arrowColor->getPtr());
00232 
00233         glUniformMatrix4fv(mGlyphProgramTf.getUniformLocation("mViewMatrix"),1,false,mCamera.getViewMatrix());
00234         glUniformMatrix4fv(mGlyphProgramTf.getUniformLocation("mProjectionMatrix"),1,false,mCamera.getProjectionMatrix());
00235 
00236         float scalefactor = 2.0f;
00237 
00238         if ( ( mFlowData->getExtends( ) )[ 1 ] < 1.0f )
00239         {
00240                 scalefactor = 0.3f;
00241         }
00242 
00243         if ( ( mFlowData->getExtends( ) )[ 1 ] > 15.0f )
00244         {
00245                 scalefactor = 1.5f;
00246         }
00247 
00248         glUniform1f(mGlyphProgramTf.getUniformLocation("mOverallScaleFactor"), scalefactor );
00249         glUniform1f(mGlyphProgramTf.getUniformLocation("mScalingParam"), arrows_nonunifcale );
00250         glUniform1f(mGlyphProgramTf.getUniformLocation("mMaxDataValue"), mFlowData->getMaximalDatavalue( activeDataValue - 1 ) );
00251         glUniform1f(mGlyphProgramTf.getUniformLocation("mMinDataValue"), mFlowData->getMinimalDatavalue( activeDataValue - 1 ) );
00252         glUniform1f(mGlyphProgramTf.getUniformLocation("mScaleProperty"), (float)activeDataValue  );
00253 
00254         glUniform1f( mGlyphProgramTf.getUniformLocation( "maxMagnitude" ), mFlowData->getMaximalMagnitude() );
00255         glUniform1f( mGlyphProgramTf.getUniformLocation( "minMagnitude" ), mFlowData->getMinimalMagnitude() );
00256 
00257         glUniform1i(mGlyphProgramTf.getUniformLocation("mTransfer"),1);
00258 
00259 }
00260 
00261 void VFlowRenderer::clearShaderWrapperGlyphTf()
00262 {
00263         mGlyphProgramTf.release();
00264 
00265         glActiveTextureARB(GL_TEXTURE0_ARB);
00266         glBindTexture(GL_TEXTURE_2D, 0);
00267         glDisable(GL_TEXTURE_2D);
00268 
00269         glActiveTextureARB(GL_TEXTURE1_ARB);
00270         glEnable(GL_TEXTURE_2D);
00271         glBindTexture(GL_TEXTURE_2D, 0);
00272 
00273         glDisable(GL_ALPHA_TEST);
00274         glDisable(GL_BLEND);
00275 
00276         glDisable(GL_POINT_SPRITE);
00277         glDisable(GL_VERTEX_PROGRAM_POINT_SIZE);
00278         glTexEnvi(GL_POINT_SPRITE_ARB, GL_COORD_REPLACE_ARB, GL_FALSE); 
00279 }
00280 
00281 void VFlowRenderer::setShaderWrapperIcon()
00282 {
00283         mIconProgram.bind();
00284 
00285         mCamera.updateProjMatrix();
00286         mCamera.updateViewMatrix();
00287 
00288         glUniformMatrix4fv(mIconProgram.getUniformLocation("mViewMatrix"),1,false,mCamera.getViewMatrix());
00289         glUniformMatrix4fv(mIconProgram.getUniformLocation("mProjectionMatrix"),1,false,mCamera.getProjectionMatrix());
00290 }
00291 
00292 void VFlowRenderer::clearShaderWrapperIcon()
00293 {
00294         mIconProgram.release();
00295 }
00296 
00297 void VFlowRenderer::setShaderWrapperStreamLines()
00298 {
00299         glEnable(GL_BLEND);
00300         glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
00301 
00302         mCamera.updateProjMatrix();
00303         mCamera.updateViewMatrix();
00304 
00305         mRenderToVBProgram.bind();
00306 
00307         glUniformMatrix4fv(mRenderToVBProgram.getUniformLocation("mViewMatrix"),1,false,mCamera.getViewMatrix());
00308         glUniformMatrix4fv(mRenderToVBProgram.getUniformLocation("mProjectionMatrix"),1,false,mCamera.getProjectionMatrix());
00309 
00310         glUniform1f(mRenderToVBProgram.getUniformLocation("mAlpha"), streamlinesalpha);
00311 
00312         glUniform3fv(mRenderToVBProgram.getUniformLocation("mColor"), 1, streamlinesColor->getPtr());
00313 }
00314 
00315 void VFlowRenderer::clearShaderWrapperStreamLines()
00316 {
00317         mRenderToVBProgram.release();
00318         
00319         glBindTexture(GL_TEXTURE_2D, 0);
00320         glDisable(GL_TEXTURE_2D);
00321 
00322         glDisable(GL_BLEND);
00323 }
00324 
00325 void VFlowRenderer::setShaderWrapperStreamLinesGlyph()
00326 {
00327         glEnable(GL_BLEND);
00328         glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
00329 
00330         glActiveTextureARB(GL_TEXTURE0_ARB);
00331         glEnable(GL_TEXTURE_2D);
00332         glBindTexture(GL_TEXTURE_2D, mTriangle.getImageHandle());
00333         
00334         mCamera.updateProjMatrix();
00335         mCamera.updateViewMatrix();
00336 
00337         mRenderToVBProgramGlyph.bind();
00338 
00339         glUniformMatrix4fv(mRenderToVBProgramGlyph.getUniformLocation("mViewMatrix"),1,false,mCamera.getViewMatrix());
00340         glUniformMatrix4fv(mRenderToVBProgramGlyph.getUniformLocation("mProjectionMatrix"),1,false,mCamera.getProjectionMatrix());
00341 
00342         glUniform1f(mRenderToVBProgramGlyph.getUniformLocation("mAlpha"), streamlinesalpha);
00343         glUniform1i(mRenderToVBProgramGlyph.getUniformLocation("mGlyph"),0);
00344 
00345         glUniform3fv(mRenderToVBProgramGlyph.getUniformLocation("mColor"), 1, streamlinesColor->getPtr());
00346 }
00347 
00348 void VFlowRenderer::clearShaderWrapperStreamLinesGlyph()
00349 {
00350         mRenderToVBProgramGlyph.release();
00351 
00352         glActiveTextureARB(GL_TEXTURE0_ARB);
00353         glBindTexture(GL_TEXTURE_2D, 0);
00354         glDisable(GL_TEXTURE_2D);
00355 
00356         glDisable(GL_BLEND);
00357 }
00358 
00359 void VFlowRenderer::setShaderWrapperStreamLinesTf( int m_TimeStep )
00360 {
00361 
00362         glEnable(GL_BLEND);
00363         glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
00364 
00365         glActiveTextureARB(GL_TEXTURE0_ARB);
00366         glEnable(GL_TEXTURE_2D);
00367         glBindTexture(GL_TEXTURE_2D, mFlowData->getVelocityHandle(m_TimeStep));
00368 
00369         glActiveTextureARB(GL_TEXTURE1_ARB);
00370         glEnable(GL_TEXTURE_2D);
00371         glBindTexture(GL_TEXTURE_2D, m_StreamLineTransferFunctionHandle);
00372 
00373         mCamera.updateProjMatrix();
00374         mCamera.updateViewMatrix();
00375 
00376         mRenderToVBProgramTf.bind();
00377 
00378         glUniform1i(mRenderToVBProgramTf.getUniformLocation("mVelocity"),0);
00379         glUniform1i(mRenderToVBProgramTf.getUniformLocation("mTransfer"),1);
00380 
00381         glUniformMatrix4fv(mRenderToVBProgramTf.getUniformLocation("mViewMatrix"),1,false,mCamera.getViewMatrix());
00382         glUniformMatrix4fv(mRenderToVBProgramTf.getUniformLocation("mProjectionMatrix"),1,false,mCamera.getProjectionMatrix());
00383 
00384         glUniformMatrix4fv(mRenderToVBProgramTf.getUniformLocation("mVertexToTexture"),1,false,mFlowData->getVertexToTexture());
00385 
00386         glUniform1f( mRenderToVBProgramTf.getUniformLocation( "maxMagnitude" ), mFlowData->getMaximalMagnitude() );
00387         glUniform1f( mRenderToVBProgramTf.getUniformLocation( "minMagnitude" ), mFlowData->getMinimalMagnitude() );
00388 
00389         glUniform3fv(mRenderToVBProgramTf.getUniformLocation("mExtends"), 1, mFlowData->getExtends());
00390 
00391 }
00392 
00393 void VFlowRenderer::clearShaderWrapperStreamLinesTf()
00394 {
00395         mRenderToVBProgramTf.release();
00396 
00397         glActiveTextureARB(GL_TEXTURE0_ARB);
00398         glBindTexture(GL_TEXTURE_2D, 0);
00399         glDisable(GL_TEXTURE_2D);
00400 
00401         glActiveTextureARB(GL_TEXTURE1_ARB);
00402         glEnable(GL_TEXTURE_2D);
00403         glBindTexture(GL_TEXTURE_2D, 0);
00404 
00405         glDisable(GL_BLEND);
00406 }
00407 
00408 void VFlowRenderer::setShaderWrapperStreamLinesTfGlyph( int m_TimeStep )
00409 {
00410 
00411         glEnable(GL_BLEND);
00412         glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
00413 
00414         glActiveTextureARB(GL_TEXTURE0_ARB);
00415         glEnable(GL_TEXTURE_2D);
00416         glBindTexture(GL_TEXTURE_2D, mFlowData->getVelocityHandle(m_TimeStep));
00417 
00418         glActiveTextureARB(GL_TEXTURE1_ARB);
00419         glEnable(GL_TEXTURE_2D);
00420         glBindTexture(GL_TEXTURE_2D, m_StreamLineTransferFunctionHandle);
00421 
00422         glActiveTextureARB(GL_TEXTURE2_ARB);
00423         glEnable(GL_TEXTURE_2D);
00424         glBindTexture(GL_TEXTURE_2D, mTriangle.getImageHandle());
00425 
00426         mCamera.updateProjMatrix();
00427         mCamera.updateViewMatrix();
00428 
00429         mRenderToVBProgramTfGlyph.bind();
00430 
00431         glUniform1i(mRenderToVBProgramTfGlyph.getUniformLocation("mVelocity"),0);
00432         glUniform1i(mRenderToVBProgramTfGlyph.getUniformLocation("mTransfer"),1);
00433         glUniform1i(mRenderToVBProgramTfGlyph.getUniformLocation("mGlyph"),2);
00434 
00435         glUniformMatrix4fv(mRenderToVBProgramTfGlyph.getUniformLocation("mViewMatrix"),1,false,mCamera.getViewMatrix());
00436         glUniformMatrix4fv(mRenderToVBProgramTfGlyph.getUniformLocation("mProjectionMatrix"),1,false,mCamera.getProjectionMatrix());
00437 
00438         glUniformMatrix4fv(mRenderToVBProgramTfGlyph.getUniformLocation("mVertexToTexture"),1,false,mFlowData->getVertexToTexture());
00439 
00440         glUniform1f( mRenderToVBProgramTfGlyph.getUniformLocation( "maxMagnitude" ), mFlowData->getMaximalMagnitude() );
00441         glUniform1f( mRenderToVBProgramTfGlyph.getUniformLocation( "minMagnitude" ), mFlowData->getMinimalMagnitude() );
00442 
00443         glUniform3fv(mRenderToVBProgramTfGlyph.getUniformLocation("mExtends"), 1, mFlowData->getExtends());
00444 
00445 }
00446 
00447 void VFlowRenderer::clearShaderWrapperStreamLinesTfGlyph()
00448 {
00449         mRenderToVBProgramTfGlyph.release();
00450 
00451         glActiveTextureARB(GL_TEXTURE0_ARB);
00452         glBindTexture(GL_TEXTURE_2D, 0);
00453         glDisable(GL_TEXTURE_2D);
00454 
00455         glActiveTextureARB(GL_TEXTURE1_ARB);
00456         glEnable(GL_TEXTURE_2D);
00457         glBindTexture(GL_TEXTURE_2D, 0);
00458 
00459         glActiveTextureARB(GL_TEXTURE2_ARB);
00460         glEnable(GL_TEXTURE_2D);
00461         glBindTexture(GL_TEXTURE_2D, 0);
00462 
00463         glDisable(GL_BLEND);
00464 }
00465 
00466 void VFlowRenderer::setShaderWrapperLIC( int m_TimeStep )
00467 {
00468 
00469         glActiveTextureARB(GL_TEXTURE0_ARB);
00470         glBindTexture(GL_TEXTURE_2D, mFlowData->getVelocityHandle(m_TimeStep));
00471         glDisable(GL_TEXTURE_2D);
00472 
00473         glActiveTextureARB(GL_TEXTURE1_ARB);
00474         glEnable(GL_TEXTURE_2D);
00475         glBindTexture(GL_TEXTURE_2D, mWhiteNoise.getTextureHandle()/*mPerlinNoise.getImageHandle()*/);
00476 
00477 
00478         glEnable(GL_BLEND);
00479         glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
00480 
00481         mLICProgram.bind();
00482 
00483         mCamera.updateProjMatrix();
00484         mCamera.updateViewMatrix();
00485 
00486 
00487         glUniformMatrix4fv(mLICProgram.getUniformLocation("mViewMatrix"),1,false,mCamera.getViewMatrix());
00488         glUniformMatrix4fv(mLICProgram.getUniformLocation("mProjectionMatrix"),1,false,mCamera.getProjectionMatrix());
00489 
00490 
00491         glUniform1i(mLICProgram.getUniformLocation("mVelocity"),0);
00492         glUniform1i(mLICProgram.getUniformLocation("mNoise"),1);
00493 
00494         glUniform1i(mLICProgram.getUniformLocation("mSteps"),licsteps);
00495         glUniform1i(mLICProgram.getUniformLocation("mStepSize"),licstepsize);
00496 
00497         glUniform1f(mLICProgram.getUniformLocation("mAlpha"),licalpha);
00498 
00499         glUniform3fv(mLICProgram.getUniformLocation("mExtends"), 1, mFlowData->getExtends());
00500 
00501 
00502 }
00503 
00504 void VFlowRenderer::clearShaderWrapperLIC()
00505 {
00506         mLICProgram.release();
00507 
00508         glDisable(GL_BLEND);
00509 
00510 
00511         glActiveTextureARB(GL_TEXTURE0_ARB);
00512         glBindTexture(GL_TEXTURE_2D, 0);
00513         glDisable(GL_TEXTURE_2D);
00514 
00515         glActiveTextureARB(GL_TEXTURE1_ARB);
00516         glEnable(GL_TEXTURE_2D);
00517         glBindTexture(GL_TEXTURE_2D, 0);
00518 }
00519 
00520 void VFlowRenderer::setShaderWrapperLICTexture( int m_TimeStep )
00521 {
00522 
00523         mLicTextureOffset += 0.05f;
00524         if(mLicTextureOffset > 1.0f)
00525         {
00526                 mLicTextureOffset -= 1.0f;
00527         }
00528 
00529         //std::cout << mLicTextureOffset << std::endl;
00530 
00531 
00532         glActiveTextureARB(GL_TEXTURE0_ARB);
00533         glBindTexture(GL_TEXTURE_2D, mFlowData->getVelocityHandle(m_TimeStep));
00534         glDisable(GL_TEXTURE_2D);
00535 
00536         glActiveTextureARB(GL_TEXTURE1_ARB);
00537         glEnable(GL_TEXTURE_2D);
00538         glBindTexture(GL_TEXTURE_2D, mWhiteNoise.getTextureHandle()/*mPerlinNoise.getImageHandle()*/);
00539 
00540         glActiveTextureARB(GL_TEXTURE2_ARB);
00541         glEnable(GL_TEXTURE_2D);
00542         glBindTexture(GL_TEXTURE_2D, mGaussTextureHandle/*mPerlinNoise.getImageHandle()*/);
00543 
00544 
00545         glEnable(GL_BLEND);
00546         glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
00547 
00548         mLICProgramTexture.bind();
00549 
00550         mCamera.updateProjMatrix();
00551         mCamera.updateViewMatrix();
00552 
00553 
00554         glUniformMatrix4fv(mLICProgramTexture.getUniformLocation("mViewMatrix"),1,false,mCamera.getViewMatrix());
00555         glUniformMatrix4fv(mLICProgramTexture.getUniformLocation("mProjectionMatrix"),1,false,mCamera.getProjectionMatrix());
00556 
00557 
00558         glUniform1i(mLICProgramTexture.getUniformLocation("mVelocity"),0);
00559         glUniform1i(mLICProgramTexture.getUniformLocation("mNoise"),1);
00560         glUniform1i(mLICProgramTexture.getUniformLocation("mFilter"),2);
00561 
00562         glUniform1i(mLICProgramTexture.getUniformLocation("mSteps"),licsteps);
00563         glUniform1i(mLICProgramTexture.getUniformLocation("mStepSize"),licstepsize);
00564 
00565         glUniform1f(mLICProgramTexture.getUniformLocation("mAlpha"),licalpha);
00566 
00567         glUniform1f(mLICProgramTexture.getUniformLocation("mTextureOffset"),mLicTextureOffset);
00568 
00569         glUniform3fv(mLICProgramTexture.getUniformLocation("mExtends"), 1, mFlowData->getExtends());
00570 
00571 
00572 }
00573 
00574 void VFlowRenderer::clearShaderWrapperLICTexture()
00575 {
00576         mLICProgramTexture.release();
00577 
00578         glDisable(GL_BLEND);
00579 
00580 
00581         glActiveTextureARB(GL_TEXTURE0_ARB);
00582         glBindTexture(GL_TEXTURE_2D, 0);
00583         glDisable(GL_TEXTURE_2D);
00584 
00585         glActiveTextureARB(GL_TEXTURE1_ARB);
00586         glEnable(GL_TEXTURE_2D);
00587         glBindTexture(GL_TEXTURE_2D, 0);
00588 
00589         glActiveTextureARB(GL_TEXTURE2_ARB);
00590         glEnable(GL_TEXTURE_2D);
00591         glBindTexture(GL_TEXTURE_2D, 0);
00592 }
00593 
00594 void VFlowRenderer::setShaderWrapperOLICTexture( int m_TimeStep )
00595 {
00596 
00597         mLicTextureOffset += 0.05f;
00598         if(mLicTextureOffset > 1.0f)
00599         {
00600                 mLicTextureOffset -= 1.0f;
00601         }
00602 
00603         //std::cout << mLicTextureOffset << std::endl;
00604 
00605 
00606         glActiveTextureARB(GL_TEXTURE0_ARB);
00607         glBindTexture(GL_TEXTURE_2D, mFlowData->getVelocityHandle(m_TimeStep));
00608         glDisable(GL_TEXTURE_2D);
00609 
00610         glActiveTextureARB(GL_TEXTURE1_ARB);
00611         glEnable(GL_TEXTURE_2D);
00612         glBindTexture(GL_TEXTURE_2D, mWhiteNoise.getTextureHandle()/*mPerlinNoise.getImageHandle()*/);
00613 
00614         glActiveTextureARB(GL_TEXTURE2_ARB);
00615         glEnable(GL_TEXTURE_2D);
00616         glBindTexture(GL_TEXTURE_2D, mGaussTextureHandle/*mPerlinNoise.getImageHandle()*/);
00617 
00618         glActiveTextureARB(GL_TEXTURE3_ARB);
00619         glEnable(GL_TEXTURE_2D);
00620         glBindTexture(GL_TEXTURE_2D, mWhiteNoise.getFrolicHandle()/*mPerlinNoise.getImageHandle()*/);
00621 
00622 
00623         glEnable(GL_BLEND);
00624         glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
00625 
00626         mOLICProgramTexture.bind();
00627 
00628         mCamera.updateProjMatrix();
00629         mCamera.updateViewMatrix();
00630 
00631 
00632         glUniformMatrix4fv(mOLICProgramTexture.getUniformLocation("mViewMatrix"),1,false,mCamera.getViewMatrix());
00633         glUniformMatrix4fv(mOLICProgramTexture.getUniformLocation("mProjectionMatrix"),1,false,mCamera.getProjectionMatrix());
00634 
00635 
00636         glUniform1i(mOLICProgramTexture.getUniformLocation("mVelocity"),0);
00637         glUniform1i(mOLICProgramTexture.getUniformLocation("mNoise"),1);
00638         glUniform1i(mOLICProgramTexture.getUniformLocation("mFilter"),2);
00639         glUniform1i(mOLICProgramTexture.getUniformLocation("mOrient"),3);
00640 
00641         glUniform1i(mOLICProgramTexture.getUniformLocation("mSteps"),licsteps);
00642         glUniform1i(mOLICProgramTexture.getUniformLocation("mStepSize"),licstepsize);
00643 
00644         glUniform1f(mOLICProgramTexture.getUniformLocation("mAlpha"),licalpha);
00645 
00646         glUniform1f(mOLICProgramTexture.getUniformLocation("mTextureOffset"),mLicTextureOffset);
00647 
00648         glUniform3fv(mOLICProgramTexture.getUniformLocation("mExtends"), 1, mFlowData->getExtends());
00649 
00650 
00651 }
00652 
00653 void VFlowRenderer::clearShaderWrapperOLICTexture()
00654 {
00655         mOLICProgramTexture.release();
00656 
00657         glDisable(GL_BLEND);
00658 
00659 
00660         glActiveTextureARB(GL_TEXTURE0_ARB);
00661         glBindTexture(GL_TEXTURE_2D, 0);
00662         glDisable(GL_TEXTURE_2D);
00663 
00664         glActiveTextureARB(GL_TEXTURE1_ARB);
00665         glEnable(GL_TEXTURE_2D);
00666         glBindTexture(GL_TEXTURE_2D, 0);
00667 
00668         glActiveTextureARB(GL_TEXTURE2_ARB);
00669         glEnable(GL_TEXTURE_2D);
00670         glBindTexture(GL_TEXTURE_2D, 0);
00671 
00672         glActiveTextureARB(GL_TEXTURE3_ARB);
00673         glEnable(GL_TEXTURE_2D);
00674         glBindTexture(GL_TEXTURE_2D, 0);
00675 }
00676 
00677 void VFlowRenderer::setShaderWrapperLICTf( int m_TimeStep )
00678 {
00679 
00680         glActiveTextureARB(GL_TEXTURE0_ARB);
00681         glBindTexture(GL_TEXTURE_2D, mFlowData->getVelocityHandle(m_TimeStep));
00682         glDisable(GL_TEXTURE_2D);
00683 
00684         glActiveTextureARB(GL_TEXTURE1_ARB);
00685         glEnable(GL_TEXTURE_2D);
00686         glBindTexture(GL_TEXTURE_2D, mWhiteNoise.getTextureHandle()/*mPerlinNoise.getImageHandle()*/);
00687 
00688         glActiveTextureARB(GL_TEXTURE2_ARB);
00689         glEnable(GL_TEXTURE_2D);
00690         glBindTexture(GL_TEXTURE_2D, m_LicTransferFunctionHandle);
00691 
00692 
00693         glEnable(GL_BLEND);
00694         glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
00695 
00696         mLICProgramTf.bind();
00697 
00698         mCamera.updateProjMatrix();
00699         mCamera.updateViewMatrix();
00700 
00701 
00702         glUniformMatrix4fv(mLICProgramTf.getUniformLocation("mViewMatrix"),1,false,mCamera.getViewMatrix());
00703         glUniformMatrix4fv(mLICProgramTf.getUniformLocation("mProjectionMatrix"),1,false,mCamera.getProjectionMatrix());
00704 
00705 
00706         glUniform1i(mLICProgramTf.getUniformLocation("mVelocity"),0);
00707         glUniform1i(mLICProgramTf.getUniformLocation("mNoise"),1);
00708         glUniform1i(mLICProgramTf.getUniformLocation("mTransfer"),2);
00709 
00710         glUniform1i(mLICProgramTf.getUniformLocation("mSteps"),licsteps);
00711         glUniform1i(mLICProgramTf.getUniformLocation("mStepSize"),licstepsize);
00712 
00713         glUniform1f(mLICProgramTf.getUniformLocation("mAlpha"),licalpha);
00714 
00715         glUniform3fv(mLICProgramTf.getUniformLocation("mExtends"), 1, mFlowData->getExtends());
00716 
00717 
00718 }
00719 
00720 void VFlowRenderer::clearShaderWrapperLICTf()
00721 {
00722         mLICProgramTf.release();
00723 
00724         glDisable(GL_BLEND);
00725 
00726 
00727         glActiveTextureARB(GL_TEXTURE0_ARB);
00728         glBindTexture(GL_TEXTURE_2D, 0);
00729         glDisable(GL_TEXTURE_2D);
00730 
00731         glActiveTextureARB(GL_TEXTURE1_ARB);
00732         glEnable(GL_TEXTURE_2D);
00733         glBindTexture(GL_TEXTURE_2D, 0);
00734 
00735         glActiveTextureARB(GL_TEXTURE2_ARB);
00736         glEnable(GL_TEXTURE_2D);
00737         glBindTexture(GL_TEXTURE_2D, 0);
00738 }
00739 
00740 void VFlowRenderer::setShaderWrapperLICTextureTf( int m_TimeStep )
00741 {
00742 
00743         mLicTextureOffset += 0.05f;
00744         if(mLicTextureOffset > 1.0f)
00745         {
00746                 mLicTextureOffset -= 1.0f;
00747         }
00748 
00749         glActiveTextureARB(GL_TEXTURE0_ARB);
00750         glBindTexture(GL_TEXTURE_2D, mFlowData->getVelocityHandle(m_TimeStep));
00751         glDisable(GL_TEXTURE_2D);
00752 
00753         glActiveTextureARB(GL_TEXTURE1_ARB);
00754         glEnable(GL_TEXTURE_2D);
00755         glBindTexture(GL_TEXTURE_2D, mWhiteNoise.getTextureHandle()/*mPerlinNoise.getImageHandle()*/);
00756 
00757         glActiveTextureARB(GL_TEXTURE2_ARB);
00758         glEnable(GL_TEXTURE_2D);
00759         glBindTexture(GL_TEXTURE_2D, m_LicTransferFunctionHandle);
00760 
00761         glActiveTextureARB(GL_TEXTURE3_ARB);
00762         glEnable(GL_TEXTURE_2D);
00763         glBindTexture(GL_TEXTURE_2D, mGaussTextureHandle/*mPerlinNoise.getImageHandle()*/);
00764 
00765 
00766         glEnable(GL_BLEND);
00767         glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
00768 
00769         mLICProgramTextureTf.bind();
00770 
00771         mCamera.updateProjMatrix();
00772         mCamera.updateViewMatrix();
00773 
00774 
00775         glUniformMatrix4fv(mLICProgramTextureTf.getUniformLocation("mViewMatrix"),1,false,mCamera.getViewMatrix());
00776         glUniformMatrix4fv(mLICProgramTextureTf.getUniformLocation("mProjectionMatrix"),1,false,mCamera.getProjectionMatrix());
00777 
00778 
00779         glUniform1i(mLICProgramTextureTf.getUniformLocation("mVelocity"),0);
00780         glUniform1i(mLICProgramTextureTf.getUniformLocation("mNoise"),1);
00781         glUniform1i(mLICProgramTextureTf.getUniformLocation("mTransfer"),2);
00782         glUniform1i(mLICProgramTextureTf.getUniformLocation("mFilter"),3);
00783 
00784         glUniform1i(mLICProgramTextureTf.getUniformLocation("mSteps"),licsteps);
00785         glUniform1i(mLICProgramTextureTf.getUniformLocation("mStepSize"),licstepsize);
00786 
00787         glUniform1f(mLICProgramTextureTf.getUniformLocation("mAlpha"),licalpha);
00788 
00789         glUniform3fv(mLICProgramTextureTf.getUniformLocation("mExtends"), 1, mFlowData->getExtends());
00790 
00791         glUniform1f(mLICProgramTextureTf.getUniformLocation("mTextureOffset"),mLicTextureOffset);
00792 
00793 
00794 }
00795 
00796 void VFlowRenderer::clearShaderWrapperLICTextureTf()
00797 {
00798         mLICProgramTextureTf.release();
00799 
00800         glDisable(GL_BLEND);
00801 
00802 
00803         glActiveTextureARB(GL_TEXTURE0_ARB);
00804         glBindTexture(GL_TEXTURE_2D, 0);
00805         glDisable(GL_TEXTURE_2D);
00806 
00807         glActiveTextureARB(GL_TEXTURE1_ARB);
00808         glEnable(GL_TEXTURE_2D);
00809         glBindTexture(GL_TEXTURE_2D, 0);
00810 
00811         glActiveTextureARB(GL_TEXTURE2_ARB);
00812         glEnable(GL_TEXTURE_2D);
00813         glBindTexture(GL_TEXTURE_2D, 0);
00814 
00815         glActiveTextureARB(GL_TEXTURE3_ARB);
00816         glEnable(GL_TEXTURE_2D);
00817         glBindTexture(GL_TEXTURE_2D, 0);
00818 }

Generated on Mon Jan 21 01:15:16 2008 for FlowVis by  doxygen 1.5.4