]> SALOME platform Git repositories - modules/visu.git/commitdiff
Salome HOME
To simplify the vertex shader.
authorouv <ouv@opencascade.com>
Fri, 18 Nov 2005 14:48:03 +0000 (14:48 +0000)
committerouv <ouv@opencascade.com>
Fri, 18 Nov 2005 14:48:03 +0000 (14:48 +0000)
resources/Vertex_Program_ARB.txt
src/PIPELINE/VISU_OpenGLPointSpriteMapper.cxx
src/PIPELINE/VISU_OpenGLPointSpriteMapper.hxx

index 104e9aa8c79ffdd9426a08dd194b4d4ad4205cf4..0153917f3d9d73088217162df44050d387743cd8 100755 (executable)
@@ -1,21 +1,12 @@
-attribute float results;
 attribute float clamp;
-attribute float geomSize;
-attribute float minSize;
-attribute float maxSize;
-attribute float magnification;
 
 void main()
 {
   gl_Position = gl_ModelViewProjectionMatrix * gl_Vertex;
 
-  gl_FrontColor = gl_Color;
+  gl_FrontColor.x = gl_Color.x;
+  gl_FrontColor.y = gl_Color.y;
+  gl_FrontColor.z = gl_Color.z;
 
-  float size;
-  if( results == 1 )
-    size = minSize + ( maxSize - minSize ) * ( 1 - gl_Color.w / 241.0f );
-  else
-    size = geomSize;
-
-  gl_PointSize = min( magnification * size * gl_ProjectionMatrix[0].x, clamp );
+  gl_PointSize = min( gl_Color.w * gl_ProjectionMatrix[0].x, clamp );
 }
index b2277081a956527e2b579eb467ed5f3aff912e2c..208e8d3a21025d7b03ab075e47c5ee85cef1575a 100755 (executable)
@@ -168,7 +168,6 @@ VISU_OpenGLPointSpriteMapper::VISU_OpenGLPointSpriteMapper()
 
   this->ListId                   = 0;
   this->TotalCells               = 0;
-  this->ActorOpacity             = 0;
   this->ExtensionsInitialized    = 0;
   this->DefaultPointSize         = 20.0;
 
@@ -311,12 +310,7 @@ void VISU_OpenGLPointSpriteMapper::SetPointSpriteResults( bool theResults )
   else
     this->ScalarVisibilityOff();
 
-  float aResults = theResults ? 1.0 : 0.0;
-
-  //cout << "SetPointSpriteResults " << this << " " << aResults << endl;
-
   this->PointSpriteResults = theResults;
-  //this->SetShaderVariable( "results", theMagnification );
   this->Modified();
 }
 //-----------------------------------------------------------------------------
@@ -386,7 +380,7 @@ void VISU_OpenGLPointSpriteMapper::RenderPiece(vtkRenderer *ren, vtkActor *act)
   if( !this->ExtensionsInitialized && !this->UseOpenGLMapper )
   {
     this->InitExtensions();
-    act->GetProperty()->SetPointSize( 1.0f );
+    act->GetProperty()->SetPointSize( 10.0f );
   }
 
   if( this->UseOpenGLMapper )
@@ -492,6 +486,7 @@ void VISU_OpenGLPointSpriteMapper::RenderPiece(vtkRenderer *ren, vtkActor *act)
   if (this->ImmediateModeRendering ||
       this->GetGlobalImmediateModeRendering())
   {
+    // sets this->Colors as side effect
     this->MapScalars( act->GetProperty()->GetOpacity() );
 
     // Time the actual drawing
@@ -684,12 +679,7 @@ void VISU_OpenGLPointSpriteMapper::DrawPoints(vtkPoints *p,
 
   vglUseProgramObjectARB( this->VertexProgram );
 
-  this->SetShaderVariable( "results",       this->PointSpriteResults );
-  this->SetShaderVariable( "clamp",         this->PointSpriteClamp );
-  this->SetShaderVariable( "geomSize",      this->PointSpriteSize );
-  this->SetShaderVariable( "minSize",       this->PointSpriteMinSize );
-  this->SetShaderVariable( "maxSize",       this->PointSpriteMaxSize );
-  this->SetShaderVariable( "magnification", this->PointSpriteMagnification );
+  this->SetShaderVariable( "clamp",   this->PointSpriteClamp );
 
   TVertex* aVertex = new TVertex[ this->TotalCells ];
 
@@ -726,7 +716,16 @@ void VISU_OpenGLPointSpriteMapper::DrawPoints(vtkPoints *p,
     aVertex[i].g = green;
     aVertex[i].b = blue;
 
-    aVertex[i].hue = ComputeHue( ( int )( red * 255 ), ( int )( green * 255 ), ( int )( blue * 255 ) );
+    float size = 0.0;
+    if( this->PointSpriteResults )
+    {
+      float h = ComputeHue( ( int )( red * 255 ), ( int )( green * 255 ), ( int )( blue * 255 ) );
+      size = this->PointSpriteMinSize + ( PointSpriteMaxSize - PointSpriteMinSize ) * ( 1 - h / 241.0f );
+    }
+    else
+      size = this->PointSpriteSize;
+
+    aVertex[i].hue = this->PointSpriteMagnification * size;
   }
 
   GLuint aBufferObjectID = 0;
@@ -744,13 +743,13 @@ void VISU_OpenGLPointSpriteMapper::DrawPoints(vtkPoints *p,
   glColorPointer( 4, GL_FLOAT, sizeof(TVertex), (void*)0 );
   glVertexPointer( 3, GL_FLOAT, sizeof(TVertex), (void*)(4*sizeof(GLfloat)) );
 
-  glEnableClientState(GL_VERTEX_ARRAY);
-  glEnableClientState(GL_COLOR_ARRAY);
+  glEnableClientState( GL_VERTEX_ARRAY );
+  glEnableClientState( GL_COLOR_ARRAY );
 
-  glDrawArrays(GL_POINTS,0,this->TotalCells);
+  glDrawArrays( GL_POINTS, 0, this->TotalCells );
 
-  glDisableClientState(GL_COLOR_ARRAY);
-  glDisableClientState(GL_VERTEX_ARRAY);
+  glDisableClientState( GL_COLOR_ARRAY );
+  glDisableClientState( GL_VERTEX_ARRAY );
 
   vglDeleteBuffersARB( 1, &aBufferObjectID );
 
index ee2b10cb7fa6b69365f1430f069f4c83a9727192..4a1683b49e60ff9b267f3241e843c39d8261412f 100755 (executable)
@@ -242,7 +242,6 @@ private:
   int               RenderMode;
   int               ListId;
   vtkIdType         TotalCells;
-  double            ActorOpacity; 
   int               ExtensionsInitialized;
   float             DefaultPointSize;