[Paraview] PointSprite with Recent Intel HD Graphics

Aashish Chaudhary aashish.chaudhary at kitware.com
Mon Feb 10 12:08:22 EST 2014


This is very helpful. I am speculating that it could be related to the
default shader version on your system (yours is shader model 5 I believe).

Let me come up with a quick fix (unless somone else beats me to it) which
you can try. I will send that in a separate email.

- Aashish



On Mon, Feb 10, 2014 at 11:57 AM, Bruce Jones
<bruce.david.jones at gmail.com>wrote:

> Hi Aashish,
>
> Thanks for getting back to me, I'll have a look at the breakpoint this
> afternoon. In the mean time, the full error logs are below, which appear to
> show the shader source for the failed shader.
>
> Using PointSprite with Sphere(Texture) and a constant radius works fine.
>
> Using PointSprite with Sphere(Texture) and a variable radius fails with
> the following message,
>
> ERROR: In
> C:\DBD\pvs-x64\paraview\src\paraview\VTK\Rendering\OpenGL\vtkShaderProgram2.cxx,
> line 530
>
> vtkShaderProgram2 (0000000012D40520): the shader program failed to link.
> Its log is:
>
> the shaders are:
>
>
>
> ERROR: In
> C:\DBD\pvs-x64\paraview\src\paraview\VTK\Rendering\OpenGL\vtkShaderProgram2.cxx,
> line 540
>
> vtkShaderProgram2 (0000000012D40520): shader #0/3 (vertex shader) log is:
>
>
> . Its source code is:
>
> /*=========================================================================
>
>
>  Program: Visualization Toolkit
>
> Module: AttributeRadiusHelper.glsl
>
>
>  Copyright (c) Ken Martin, Will Schroeder, Bill Lorensen
>
> All rights reserved.
>
> See Copyright.txt or http://www.kitware.com/Copyright.htm for details.
>
>
>  This software is distributed WITHOUT ANY WARRANTY; without even
>
> the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
>
> PURPOSE. See the above copyright notice for more information.
>
>
> =========================================================================*/
>
>
> // .NAME AttributeRadiusHelper.glsl
>
> // .SECTION Thanks
>
> // <verbatim>
>
> //
>
> // This file is part of the PointSprites plugin developed and contributed
> by
>
> //
>
> // Copyright (c) CSCS - Swiss National Supercomputing Centre
>
> // EDF - Electricite de France
>
> //
>
> // John Biddiscombe, Ugo Varetto (CSCS)
>
> // Stephane Ploix (EDF)
>
> //
>
> // </verbatim>
>
>
> uniform vec2 RadiusSpan;
>
> attribute float Radius;
>
>
> float GetRadius()
>
> {
>
> return RadiusSpan.x + Radius*RadiusSpan.y;
>
> }
>
>
>
>
>
>
> ERROR: In
> C:\DBD\pvs-x64\paraview\src\paraview\VTK\Rendering\OpenGL\vtkShaderProgram2.cxx,
> line 540
>
> vtkShaderProgram2 (0000000012D40520): shader #1/3 (vertex shader) log is:
>
>
> . Its source code is:
>
> /*=========================================================================
>
>
>  Program: Visualization Toolkit
>
> Module: Texture_vs.glsl
>
>
>  Copyright (c) Ken Martin, Will Schroeder, Bill Lorensen
>
> All rights reserved.
>
> See Copyright.txt or http://www.kitware.com/Copyright.htm for details.
>
>
>  This software is distributed WITHOUT ANY WARRANTY; without even
>
> the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
>
> PURPOSE. See the above copyright notice for more information.
>
>
> =========================================================================*/
>
>
> // .NAME Texture_vs.glsl
>
> // .SECTION Thanks
>
> // <verbatim>
>
> //
>
> // This file is part of the PointSprites plugin developed and contributed
> by
>
> //
>
> // Copyright (c) CSCS - Swiss National Supercomputing Centre
>
> // EDF - Electricite de France
>
> //
>
> // John Biddiscombe, Ugo Varetto (CSCS)
>
> // Stephane Ploix (EDF)
>
> //
>
> // </verbatim>
>
>
> uniform float MaxPixelSize;
>
> uniform vec2 viewport;
>
>
> float GetRadius();
>
>
> void propFuncVS()
>
> {
>
> float radius = GetRadius();
>
>
>  gl_ClipVertex = gl_ModelViewMatrix * gl_Vertex;
>
> gl_Position = gl_ProjectionMatrix * gl_ModelViewMatrix * gl_Vertex;
>
> //
>
> // Convert position to window coordinates
>
> //
>
>
>  //
>
> // Convert Radius to window coordinates
>
> // radius/w is homogenous clip coord
>
> //
>
> float pixelSize = (radius/gl_Position.w)*(4.0*viewport.y);
>
>
>  // Clamp radius to prevent overloading if bad scalars were passed in
>
> if (pixelSize>MaxPixelSize)
>
> pixelSize = MaxPixelSize;
>
>
>  gl_PointSize = pixelSize;
>
> gl_FrontColor = gl_Color;
>
> }
>
>
>
>
>
> ERROR: In
> C:\DBD\pvs-x64\paraview\src\paraview\VTK\Rendering\OpenGL\vtkShaderProgram2.cxx,
> line 540
>
> vtkShaderProgram2 (0000000012D40520): shader #2/3 (vertex shader) log is:
>
>
> . Its source code is:
>
> //
> ============================================================================
>
> //
>
> // Program: Visualization Toolkit
>
> // Module: vtkOpenGLPropertyDefaultMain_vs.glsl
>
> //
>
> // Copyright (c) Ken Martin, Will Schroeder, Bill Lorensen
>
> // All rights reserved.
>
> // See Copyright.txt or http://www.kitware.com/Copyright.htm for details.
>
> //
>
> // This software is distributed WITHOUT ANY WARRANTY; without even
>
> // the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
>
> // PURPOSE. See the above copyright notice for more information.
>
> //
>
> //
> ============================================================================
>
>
> // This is the default vertex shader with the main() function. It is used
> when
>
> // no main() is provided at the renderer level and some vertex shader is
>
> // defined by the user on a property.
>
>
> #version 110
>
>
> void propFuncVS();
>
>
> void main()
>
> {
>
> propFuncVS();
>
> }
>
>
>
>
>
> ERROR: In
> C:\DBD\pvs-x64\paraview\src\paraview\VTK\Rendering\OpenGL\vtkOpenGLProperty.cxx,
> line 415
>
> vtkPointSpriteProperty (000000001118DD20): Couldn't build the shader
> program. At this point , it can be an error in a shader or a driver bug.
>
>
>
> ERROR: In
> C:\DBD\pvs-x64\paraview\src\paraview\VTK\Rendering\OpenGL\vtkShaderProgram2.cxx,
> line 530
>
> vtkShaderProgram2 (0000000012D40520): the shader program failed to link.
> Its log is:
>
> the shaders are:
>
>
>
> ERROR: In
> C:\DBD\pvs-x64\paraview\src\paraview\VTK\Rendering\OpenGL\vtkShaderProgram2.cxx,
> line 540
>
> vtkShaderProgram2 (0000000012D40520): shader #0/3 (vertex shader) log is:
>
>
> . Its source code is:
>
> /*=========================================================================
>
>
>  Program: Visualization Toolkit
>
> Module: AttributeRadiusHelper.glsl
>
>
>  Copyright (c) Ken Martin, Will Schroeder, Bill Lorensen
>
> All rights reserved.
>
> See Copyright.txt or http://www.kitware.com/Copyright.htm for details.
>
>
>  This software is distributed WITHOUT ANY WARRANTY; without even
>
> the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
>
> PURPOSE. See the above copyright notice for more information.
>
>
> =========================================================================*/
>
>
> // .NAME AttributeRadiusHelper.glsl
>
> // .SECTION Thanks
>
> // <verbatim>
>
> //
>
> // This file is part of the PointSprites plugin developed and contributed
> by
>
> //
>
> // Copyright (c) CSCS - Swiss National Supercomputing Centre
>
> // EDF - Electricite de France
>
> //
>
> // John Biddiscombe, Ugo Varetto (CSCS)
>
> // Stephane Ploix (EDF)
>
> //
>
> // </verbatim>
>
>
> uniform vec2 RadiusSpan;
>
> attribute float Radius;
>
>
> float GetRadius()
>
> {
>
> return RadiusSpan.x + Radius*RadiusSpan.y;
>
> }
>
>
>
>
>
>
> ERROR: In
> C:\DBD\pvs-x64\paraview\src\paraview\VTK\Rendering\OpenGL\vtkShaderProgram2.cxx,
> line 540
>
> vtkShaderProgram2 (0000000012D40520): shader #1/3 (vertex shader) log is:
>
>
> . Its source code is:
>
> /*=========================================================================
>
>
>  Program: Visualization Toolkit
>
> Module: Texture_vs.glsl
>
>
>  Copyright (c) Ken Martin, Will Schroeder, Bill Lorensen
>
> All rights reserved.
>
> See Copyright.txt or http://www.kitware.com/Copyright.htm for details.
>
>
>  This software is distributed WITHOUT ANY WARRANTY; without even
>
> the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
>
> PURPOSE. See the above copyright notice for more information.
>
>
> =========================================================================*/
>
>
> // .NAME Texture_vs.glsl
>
> // .SECTION Thanks
>
> // <verbatim>
>
> //
>
> // This file is part of the PointSprites plugin developed and contributed
> by
>
> //
>
> // Copyright (c) CSCS - Swiss National Supercomputing Centre
>
> // EDF - Electricite de France
>
> //
>
> // John Biddiscombe, Ugo Varetto (CSCS)
>
> // Stephane Ploix (EDF)
>
> //
>
> // </verbatim>
>
>
> uniform float MaxPixelSize;
>
> uniform vec2 viewport;
>
>
> float GetRadius();
>
>
> void propFuncVS()
>
> {
>
> float radius = GetRadius();
>
>
>  gl_ClipVertex = gl_ModelViewMatrix * gl_Vertex;
>
> gl_Position = gl_ProjectionMatrix * gl_ModelViewMatrix * gl_Vertex;
>
> //
>
> // Convert position to window coordinates
>
> //
>
>
>  //
>
> // Convert Radius to window coordinates
>
> // radius/w is homogenous clip coord
>
> //
>
> float pixelSize = (radius/gl_Position.w)*(4.0*viewport.y);
>
>
>  // Clamp radius to prevent overloading if bad scalars were passed in
>
> if (pixelSize>MaxPixelSize)
>
> pixelSize = MaxPixelSize;
>
>
>  gl_PointSize = pixelSize;
>
> gl_FrontColor = gl_Color;
>
> }
>
>
>
>
>
> ERROR: In
> C:\DBD\pvs-x64\paraview\src\paraview\VTK\Rendering\OpenGL\vtkShaderProgram2.cxx,
> line 540
>
> vtkShaderProgram2 (0000000012D40520): shader #2/3 (vertex shader) log is:
>
>
> . Its source code is:
>
> //
> ============================================================================
>
> //
>
> // Program: Visualization Toolkit
>
> // Module: vtkOpenGLPropertyDefaultMain_vs.glsl
>
> //
>
> // Copyright (c) Ken Martin, Will Schroeder, Bill Lorensen
>
> // All rights reserved.
>
> // See Copyright.txt or http://www.kitware.com/Copyright.htm for details.
>
> //
>
> // This software is distributed WITHOUT ANY WARRANTY; without even
>
> // the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
>
> // PURPOSE. See the above copyright notice for more information.
>
> //
>
> //
> ============================================================================
>
>
> // This is the default vertex shader with the main() function. It is used
> when
>
> // no main() is provided at the renderer level and some vertex shader is
>
> // defined by the user on a property.
>
>
> #version 110
>
>
> void propFuncVS();
>
>
> void main()
>
> {
>
> propFuncVS();
>
> }
>
>
>
>
>
> ERROR: In
> C:\DBD\pvs-x64\paraview\src\paraview\VTK\Rendering\OpenGL\vtkOpenGLProperty.cxx,
> line 415
>
> vtkPointSpriteProperty (000000001118DD20): Couldn't build the shader
> program. At this point , it can be an error in a shader or a driver bug.
>
>
>
> ERROR: In
> C:\DBD\pvs-x64\paraview\src\paraview\VTK\Rendering\OpenGL\vtkShaderProgram2.cxx,
> line 1084
>
> vtkShaderProgram2 (0000000012D40520): glGetAttribLocation 1 OpenGL errors
> detected
>
> 0 : (1281) Invalid value
>
>
>
>
> ERROR: In
> C:\DBD\pvs-x64\paraview\src\paraview\VTK\Rendering\OpenGL\vtkShaderProgram2.cxx,
> line 1084
>
> vtkShaderProgram2 (0000000012D40520): glGetAttribLocation 1 OpenGL errors
> detected
>
> 0 : (1281) Invalid value
>
>
>
>
> ERROR: In
> C:\DBD\pvs-x64\paraview\src\paraview\VTK\Rendering\OpenGL\vtkShaderProgram2.cxx,
> line 1084
>
> vtkShaderProgram2 (0000000012D40520): glGetAttribLocation 1 OpenGL errors
> detected
>
> 0 : (1281) Invalid value
>
>
> Using PointSprite with Sphere and a constant radius fails with the
> following message,
>
>
> ERROR: In
> C:\DBD\pvs-x64\paraview\src\paraview\VTK\Rendering\OpenGL\vtkShaderProgram2.cxx,
> line 481
>
> vtkShaderProgram2 (0000000012D40520): a shader failed to compile. Its log
> is:
>
> WARNING: 0:89: 'assigning' : implict conversion between types allowed from
> GLSL 1.20
>
> WARNING: 0:143: 'assigning' : implict conversion between types allowed
> from GLSL 1.20
>
> WARNING: 0:159: 'assigning' : implict conversion between types allowed
> from GLSL 1.20
>
> WARNING: 0:196: 'assigning' : implict conversion between types allowed
> from GLSL 1.20
>
> WARNING: 0:207: 'assign' : implicit type conversion allowed from GLSL 1.20
>
> ERROR: 0:207: '=' : cannot convert from 'const int' to '3-component vector
> of float'
>
> ERROR: 0:216: 'assign' : cannot convert from '4-component vector of float'
> to '3-component vector of float'
>
> ERROR: 0:217: 'N' : undeclared identifier
>
> ERROR: 0:217: 'assign' : cannot convert from '3-component vector of float'
> to 'float'
>
> ERROR: 0:218: 'dot' : no matching overloaded function found (using
> implicit conversion)
>
> ERROR: 0:218: 'assign' : l-value required "d" (can't modify a varying)
>
> ERROR: 0:219: 'viewdir' : undeclared identifier
>
> ERROR: 0:219: 'assign' : cannot convert from '3-component vector of float'
> to 'float'
>
> ERROR: 0:220: 'vl' : undeclared identifier
>
> ERROR: 0:220: 'reflect' : no matching overloaded function found (using
> implicit conversion)
>
> ERROR: 0:221: 's' : undeclared identifier
>
> ERROR: 0:222: 'assign' : cannot convert from '4-component vector of float'
> to '3-component vector of float'
>
> WARNING: 0:251: 'assigning' : implict conversion between types allowed
> from GLSL 1.20
>
>
>
> . Its source code is:
>
> /*=========================================================================
>
>
> Program: Visualization Toolkit
>
> Module: Quadrics_fs.glsl
>
>
> Copyright (c) Ken Martin, Will Schroeder, Bill Lorensen
>
> All rights reserved.
>
> See Copyright.txt or http://www.kitware.com/Copyright.htm for details.
>
>
> This software is distributed WITHOUT ANY WARRANTY; without even
>
> the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
>
> PURPOSE. See the above copyright notice for more information.
>
>
> =========================================================================*/
>
>
> // .NAME Quadrics_fs.glsl
>
> // .SECTION Thanks
>
> // <verbatim>
>
> //
>
> // This file is part of the PointSprites plugin developed and contributed
> by
>
> //
>
> // Copyright (c) CSCS - Swiss National Supercomputing Centre
>
> // EDF - Electricite de France
>
> //
>
> // John Biddiscombe, Ugo Varetto (CSCS)
>
> // Stephane Ploix (EDF)
>
> //
>
> // </verbatim>
>
>
> //
>
> // IN:
>
> // - vertex position
>
> // - point size
>
> // - ray origin
>
> // - perspective flag
>
> // - quadric equation coefficients
>
> // - color
>
> // - viewport (width and height only)
>
> // - min point size (pointThreshold)
>
> //
>
> // OUT:
>
> // - fragment color computed from point intersected by ray shot from
>
> // viewpoint through point computed from current fragment coordinate
>
> // - fragment depth computed by projecting the intersection point into
> screen
>
> // coordinates
>
>
>
> // OPTIMAL
>
> #define ELLIPSOID
>
> //#define CYLINDER
>
> //#define CONE
>
> //#define HYPERBOLOID1
>
> //#define HYPERBOLOID2
>
> //#define PARABOLOID
>
>
> // SUB OPTIMAL
>
> //#define HYPER_PARABOLOID
>
>
> uniform vec2 viewport; // only width and height passed, no origin
>
> uniform float pointSizeThreshold; // minimum point size
>
>
> varying vec4 color;
>
> varying float a;
>
> varying float b;
>
> varying float c;
>
> varying float d;
>
> varying float e;
>
> varying float f;
>
> varying float g;
>
> varying float h;
>
> varying float i;
>
> varying float j;
>
> varying float pointSize;
>
> varying float perspective;
>
>
> vec3 raydir; // ray direction in screen space
>
> vec3 rayorigin; // ray origin in screen space
>
>
> #ifndef ELLIPSOID
>
> varying mat4 Ti;
>
> #endif
>
>
> const float FLAT_SHADE_POINT_SIZE = 1.0; //if point size < 1 use flat
> shading
>
>
> const float FEPS = 0.0001;
>
>
> const float BOUND = 1.0 + FEPS;
>
>
> const vec3 MIN_BOUND = vec3(-BOUND);
>
>
> const vec3 MAX_BOUND = vec3(BOUND);
>
>
>
> //------------------------------------------------------------------------------
>
> // BOUNDS CHECK
>
> // in general it makes sense to check only along the z direction for:
>
> // - paraboloids
>
> // - hyperboloids of one sheet
>
> // - cylinders
>
> // - cones
>
> // and no checking at all is required for ellipsoids
>
> #ifndef ELLIPSOID
>
> bool InBounds( vec3 P )
>
> {
>
> vec4 v = Ti * gl_ModelViewMatrixInverse * vec4( P, 1. );
>
> #if defined( CYLINDER ) || defined( CONE ) || defined( HYPERBOLOID1 ) ||
> defined( PARABOLOID )
>
> return v.z >= -BOUND && v.z <= BOUND;
>
> #else
>
> return all( greaterThanEqual( v.xyz, MIN_BOUND ) ) &&
>
> all( lessThanEqual( v.xyz, MAX_BOUND ) );
>
> #endif
>
> }
>
> #endif
>
>
> //------------------------------------------------------------------------------
>
> // INTERSECTION
>
> struct I
>
> {
>
>  vec3 P;
>
> vec3 N;
>
>  float t;
>
> };
>
>
> // compute unit normal from gradient
>
> vec3 ComputeNormal(vec3 P)
>
> {
>
> return normalize(vec3(dot(vec4(a, d, e, 1.), vec4(P, g)), // should
> multiply by 2 for actual gradient
>
> dot(vec4(d, b, f, 1.), vec4(P, h)), // should multiply by 2 for actual
> gradient
>
> dot(vec4(e, f, c, 1.), vec4(P, i)) // should multiply by 2 for actual
> gradient
>
> ));
>
> }
>
>
> // compute ray quadric intersection; if no intersection occurs I.t is < 0
>
> // main axis length and orientation are used to clip the quadric; not
>
> // required for closed quadrics (ellipsoids)
>
> // | a d e g |
>
> // | d b f h |
>
> // | e f c i |
>
> // | g h i j |
>
> // ax^2 + by^2 + cz^2 + 2dxy +2exz + 2fyz + 2gx + 2hy + 2iz + j = 0
>
> /// @todo pass vec3(a, b, c), vec3( d, e, f ) and vec3( g, h, i ) instead
> of single coefficients
>
> I ComputeRayQuadricIntersection()
>
> {
>
>  I ip;
>
> ip.t = -1.0;
>
>  vec3 P = rayorigin;
>
> vec3 D = raydir;
>
> float A = 0.0;
>
> float B = 0.0;
>
> float C = 0.0;
>
> if (bool(perspective))
>
> {
>
> A = dot(vec3(a, b, c), D * D) + 2. * dot(vec3(d, e, f), D.xxy * D.yzz);
>
> B = 2. * dot(vec3(g, h, i), D);
>
> C = j;
>
> }
>
> else
>
>  {
>
> A = c;
>
> //B = -2. * dot( vec4( c, e, f, 1. ), vec4( P.zxy, 1. ) );
>
> B = -2. * dot(vec4(d, e, f, i), vec4(P.zxy, 1.));
>
> C = dot(vec3(a, b, c), P * P) + 2. * (dot(vec3(d, e, f), P.xxy * P.yzz)
>
> + dot(vec3(g, h, i), P)) + j;
>
> }
>
> float delta = B * B - 4. * A * C;
>
> if (delta < 0.0)
>
> return ip;
>
> float d = sqrt(delta);
>
> A = 1. / A;
>
> A *= 0.5;
>
> float t2 = A * (-B + d);
>
> float t1 = A * (-B - d);
>
> #ifdef ELLIPSOID
>
> ip.P = rayorigin + D * min(t1, t2);
>
> ip.N = ComputeNormal(ip.P);
>
> ip.t = 0.;
>
> #else
>
> vec3 P1 = rayorigin + D * min( t1, t2 );
>
> vec3 P2 = rayorigin + D * max( t1, t2 );
>
> if( InBounds( P1 ) )
>
> {
>
> ip.P = P1;
>
> ip.N = ComputeNormal( P1 );
>
> ip.t = 0.;
>
> }
>
> else if( InBounds( P2 ) )
>
> {
>
> ip.P = P2;
>
> ip.N = ComputeNormal( P2 );
>
> ip.t = 0.;
>
> }
>
> #endif
>
>  return ip;
>
> }
>
>
>
> //------------------------------------------------------------------------------
>
> // LIGHTING, standard phong lighting model
>
> vec3 lightDir = normalize(vec3(0.1, 0.1, 1.));
>
> float kd = 1.0;
>
> float ka = 0.01;
>
> float ks = .5;
>
> float sh = 90.0;
>
> vec4 refcolor = vec4(1., 1., 1., 1.);
>
> vec4 ComputeColor(vec4 color, vec3 n, vec3 P)
>
> {
>
> if (pointSize < FLAT_SHADE_POINT_SIZE)
>
> return color;
>
>
> vec3 col = (0, 0, 0);
>
>  vec3 N;
>
> float d;
>
>  vec3 viewdir;
>
> float vl;
>
>  float s;
>
>
> for (int li = 0; li < 4; li++)
>
> {
>
> lightDir = normalize(gl_LightSource[li].position);
>
> N = faceforward(-n, lightDir, n);
>
> d = dot(N, lightDir);
>
> viewdir = normalize(-P);
>
> vl = max(0., dot(reflect(-lightDir, N), viewdir));
>
> s = pow(vl, gl_FrontMaterial.shininess);
>
> col += gl_FrontMaterial.specular * s * gl_LightSource[li].specular.rgb + kd
>
> * d * color.rgb * gl_LightSource[li].diffuse.rgb + ka * color.rgb
>
> * gl_LightSource[li].ambient.rgb;
>
> }
>
>
> return vec4(col, color.a);
>
>
> }
>
>
>
> //------------------------------------------------------------------------------
>
> // MAIN
>
> void propFuncFS(void)
>
> {
>
> if (pointSize < pointSizeThreshold || color.a <= 0.0)
>
> discard;
>
> vec3 fc = gl_FragCoord.xyz;
>
> fc.xy /= viewport;
>
> fc *= 2.0;
>
> fc -= 1.0;
>
> vec4 p = gl_ProjectionMatrixInverse * vec4(fc, 1.);
>
> if (bool(perspective))
>
> {
>
> // in perspective mode, rayorigin is always at (0, 0, 0)
>
> rayorigin = vec3(0., 0., 0.);
>
> raydir = vec3(p) / p.w;
>
> }
>
> else
>
>  {
>
> // in orthographic mode, raydir is always ( 0., 0., -1. );
>
> raydir = vec3(0., 0., -1.);
>
> rayorigin = vec3(p.x / p.w, p.y / p.w, 0.);
>
> }
>
> // compute intersection
>
> I i = ComputeRayQuadricIntersection();
>
> if (i.t < 0.0)
>
> discard;
>
> // compute color
>
> gl_FragColor = ComputeColor(color, i.N, i.P);
>
> // update depth by projecting point and updating depth coordinate
>
> // the transposed version of the projection matrix is used to
>
> // perform vector, matrix row product in one line:
>
> // M[2][*] x V = Vt x Mt[*][2] where:
>
> // % V is a column vector
>
> // % Vt is a row vector
>
> // % M is a square matrix
>
> // % Mt is the transpose of M
>
> float z = dot(vec4(i.P, 1.), gl_ProjectionMatrixTranspose[2]);
>
> float w = dot(vec4(i.P, 1.), gl_ProjectionMatrixTranspose[3]);
>
> gl_FragDepth = 0.5 * (z / w + 1.0);
>
> }
>
>
>
>
>
> ERROR: In
> C:\DBD\pvs-x64\paraview\src\paraview\VTK\Rendering\OpenGL\vtkOpenGLProperty.cxx,
> line 415
>
> vtkPointSpriteProperty (000000001118DD20): Couldn't build the shader
> program. At this point , it can be an error in a shader or a driver bug.
>
>
>
> ERROR: In
> C:\DBD\pvs-x64\paraview\src\paraview\VTK\Rendering\OpenGL\vtkShaderProgram2.cxx,
> line 481
>
> vtkShaderProgram2 (0000000012D40520): a shader failed to compile. Its log
> is:
>
> WARNING: 0:89: 'assigning' : implict conversion between types allowed from
> GLSL 1.20
>
> WARNING: 0:143: 'assigning' : implict conversion between types allowed
> from GLSL 1.20
>
> WARNING: 0:159: 'assigning' : implict conversion between types allowed
> from GLSL 1.20
>
> WARNING: 0:196: 'assigning' : implict conversion between types allowed
> from GLSL 1.20
>
> WARNING: 0:207: 'assign' : implicit type conversion allowed from GLSL 1.20
>
> ERROR: 0:207: '=' : cannot convert from 'const int' to '3-component vector
> of float'
>
> ERROR: 0:216: 'assign' : cannot convert from '4-component vector of float'
> to '3-component vector of float'
>
> ERROR: 0:217: 'N' : undeclared identifier
>
> ERROR: 0:217: 'assign' : cannot convert from '3-component vector of float'
> to 'float'
>
> ERROR: 0:218: 'dot' : no matching overloaded function found (using
> implicit conversion)
>
> ERROR: 0:218: 'assign' : l-value required "d" (can't modify a varying)
>
> ERROR: 0:219: 'viewdir' : undeclared identifier
>
> ERROR: 0:219: 'assign' : cannot convert from '3-component vector of float'
> to 'float'
>
> ERROR: 0:220: 'vl' : undeclared identifier
>
> ERROR: 0:220: 'reflect' : no matching overloaded function found (using
> implicit conversion)
>
> ERROR: 0:221: 's' : undeclared identifier
>
> ERROR: 0:222: 'assign' : cannot convert from '4-component vector of float'
> to '3-component vector of float'
>
> WARNING: 0:251: 'assigning' : implict conversion between types allowed
> from GLSL 1.20
>
>
>
> . Its source code is:
>
> /*=========================================================================
>
>
> Program: Visualization Toolkit
>
> Module: Quadrics_fs.glsl
>
>
> Copyright (c) Ken Martin, Will Schroeder, Bill Lorensen
>
> All rights reserved.
>
> See Copyright.txt or http://www.kitware.com/Copyright.htm for details.
>
>
> This software is distributed WITHOUT ANY WARRANTY; without even
>
> the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
>
> PURPOSE. See the above copyright notice for more information.
>
>
> =========================================================================*/
>
>
> // .NAME Quadrics_fs.glsl
>
> // .SECTION Thanks
>
> // <verbatim>
>
> //
>
> // This file is part of the PointSprites plugin developed and contributed
> by
>
> //
>
> // Copyright (c) CSCS - Swiss National Supercomputing Centre
>
> // EDF - Electricite de France
>
> //
>
> // John Biddiscombe, Ugo Varetto (CSCS)
>
> // Stephane Ploix (EDF)
>
> //
>
> // </verbatim>
>
>
> //
>
> // IN:
>
> // - vertex position
>
> // - point size
>
> // - ray origin
>
> // - perspective flag
>
> // - quadric equation coefficients
>
> // - color
>
> // - viewport (width and height only)
>
> // - min point size (pointThreshold)
>
> //
>
> // OUT:
>
> // - fragment color computed from point intersected by ray shot from
>
> // viewpoint through point computed from current fragment coordinate
>
> // - fragment depth computed by projecting the intersection point into
> screen
>
> // coordinates
>
>
>
> // OPTIMAL
>
> #define ELLIPSOID
>
> //#define CYLINDER
>
> //#define CONE
>
> //#define HYPERBOLOID1
>
> //#define HYPERBOLOID2
>
> //#define PARABOLOID
>
>
> // SUB OPTIMAL
>
> //#define HYPER_PARABOLOID
>
>
> uniform vec2 viewport; // only width and height passed, no origin
>
> uniform float pointSizeThreshold; // minimum point size
>
>
> varying vec4 color;
>
> varying float a;
>
> varying float b;
>
> varying float c;
>
> varying float d;
>
> varying float e;
>
> varying float f;
>
> varying float g;
>
> varying float h;
>
> varying float i;
>
> varying float j;
>
> varying float pointSize;
>
> varying float perspective;
>
>
> vec3 raydir; // ray direction in screen space
>
> vec3 rayorigin; // ray origin in screen space
>
>
> #ifndef ELLIPSOID
>
> varying mat4 Ti;
>
> #endif
>
>
> const float FLAT_SHADE_POINT_SIZE = 1.0; //if point size < 1 use flat
> shading
>
>
> const float FEPS = 0.0001;
>
>
> const float BOUND = 1.0 + FEPS;
>
>
> const vec3 MIN_BOUND = vec3(-BOUND);
>
>
> const vec3 MAX_BOUND = vec3(BOUND);
>
>
>
> //------------------------------------------------------------------------------
>
> // BOUNDS CHECK
>
> // in general it makes sense to check only along the z direction for:
>
> // - paraboloids
>
> // - hyperboloids of one sheet
>
> // - cylinders
>
> // - cones
>
> // and no checking at all is required for ellipsoids
>
> #ifndef ELLIPSOID
>
> bool InBounds( vec3 P )
>
> {
>
> vec4 v = Ti * gl_ModelViewMatrixInverse * vec4( P, 1. );
>
> #if defined( CYLINDER ) || defined( CONE ) || defined( HYPERBOLOID1 ) ||
> defined( PARABOLOID )
>
> return v.z >= -BOUND && v.z <= BOUND;
>
> #else
>
> return all( greaterThanEqual( v.xyz, MIN_BOUND ) ) &&
>
> all( lessThanEqual( v.xyz, MAX_BOUND ) );
>
> #endif
>
> }
>
> #endif
>
>
> //------------------------------------------------------------------------------
>
> // INTERSECTION
>
> struct I
>
> {
>
>  vec3 P;
>
> vec3 N;
>
>  float t;
>
> };
>
>
> // compute unit normal from gradient
>
> vec3 ComputeNormal(vec3 P)
>
> {
>
> return normalize(vec3(dot(vec4(a, d, e, 1.), vec4(P, g)), // should
> multiply by 2 for actual gradient
>
> dot(vec4(d, b, f, 1.), vec4(P, h)), // should multiply by 2 for actual
> gradient
>
> dot(vec4(e, f, c, 1.), vec4(P, i)) // should multiply by 2 for actual
> gradient
>
> ));
>
> }
>
>
> // compute ray quadric intersection; if no intersection occurs I.t is < 0
>
> // main axis length and orientation are used to clip the quadric; not
>
> // required for closed quadrics (ellipsoids)
>
> // | a d e g |
>
> // | d b f h |
>
> // | e f c i |
>
> // | g h i j |
>
> // ax^2 + by^2 + cz^2 + 2dxy +2exz + 2fyz + 2gx + 2hy + 2iz + j = 0
>
> /// @todo pass vec3(a, b, c), vec3( d, e, f ) and vec3( g, h, i ) instead
> of single coefficients
>
> I ComputeRayQuadricIntersection()
>
> {
>
>  I ip;
>
> ip.t = -1.0;
>
>  vec3 P = rayorigin;
>
> vec3 D = raydir;
>
> float A = 0.0;
>
> float B = 0.0;
>
> float C = 0.0;
>
> if (bool(perspective))
>
> {
>
> A = dot(vec3(a, b, c), D * D) + 2. * dot(vec3(d, e, f), D.xxy * D.yzz);
>
> B = 2. * dot(vec3(g, h, i), D);
>
> C = j;
>
> }
>
> else
>
>  {
>
> A = c;
>
> //B = -2. * dot( vec4( c, e, f, 1. ), vec4( P.zxy, 1. ) );
>
> B = -2. * dot(vec4(d, e, f, i), vec4(P.zxy, 1.));
>
> C = dot(vec3(a, b, c), P * P) + 2. * (dot(vec3(d, e, f), P.xxy * P.yzz)
>
> + dot(vec3(g, h, i), P)) + j;
>
> }
>
> float delta = B * B - 4. * A * C;
>
> if (delta < 0.0)
>
> return ip;
>
> float d = sqrt(delta);
>
> A = 1. / A;
>
> A *= 0.5;
>
> float t2 = A * (-B + d);
>
> float t1 = A * (-B - d);
>
> #ifdef ELLIPSOID
>
> ip.P = rayorigin + D * min(t1, t2);
>
> ip.N = ComputeNormal(ip.P);
>
> ip.t = 0.;
>
> #else
>
> vec3 P1 = rayorigin + D * min( t1, t2 );
>
> vec3 P2 = rayorigin + D * max( t1, t2 );
>
> if( InBounds( P1 ) )
>
> {
>
> ip.P = P1;
>
> ip.N = ComputeNormal( P1 );
>
> ip.t = 0.;
>
> }
>
> else if( InBounds( P2 ) )
>
> {
>
> ip.P = P2;
>
> ip.N = ComputeNormal( P2 );
>
> ip.t = 0.;
>
> }
>
> #endif
>
>  return ip;
>
> }
>
>
>
> //------------------------------------------------------------------------------
>
> // LIGHTING, standard phong lighting model
>
> vec3 lightDir = normalize(vec3(0.1, 0.1, 1.));
>
> float kd = 1.0;
>
> float ka = 0.01;
>
> float ks = .5;
>
> float sh = 90.0;
>
> vec4 refcolor = vec4(1., 1., 1., 1.);
>
> vec4 ComputeColor(vec4 color, vec3 n, vec3 P)
>
> {
>
> if (pointSize < FLAT_SHADE_POINT_SIZE)
>
> return color;
>
>
> vec3 col = (0, 0, 0);
>
>  vec3 N;
>
> float d;
>
>  vec3 viewdir;
>
> float vl;
>
>  float s;
>
>
> for (int li = 0; li < 4; li++)
>
> {
>
> lightDir = normalize(gl_LightSource[li].position);
>
> N = faceforward(-n, lightDir, n);
>
> d = dot(N, lightDir);
>
> viewdir = normalize(-P);
>
> vl = max(0., dot(reflect(-lightDir, N), viewdir));
>
> s = pow(vl, gl_FrontMaterial.shininess);
>
> col += gl_FrontMaterial.specular * s * gl_LightSource[li].specular.rgb + kd
>
> * d * color.rgb * gl_LightSource[li].diffuse.rgb + ka * color.rgb
>
> * gl_LightSource[li].ambient.rgb;
>
> }
>
>
> return vec4(col, color.a);
>
>
> }
>
>
>
> //------------------------------------------------------------------------------
>
> // MAIN
>
> void propFuncFS(void)
>
> {
>
> if (pointSize < pointSizeThreshold || color.a <= 0.0)
>
> discard;
>
> vec3 fc = gl_FragCoord.xyz;
>
> fc.xy /= viewport;
>
> fc *= 2.0;
>
> fc -= 1.0;
>
> vec4 p = gl_ProjectionMatrixInverse * vec4(fc, 1.);
>
> if (bool(perspective))
>
> {
>
> // in perspective mode, rayorigin is always at (0, 0, 0)
>
> rayorigin = vec3(0., 0., 0.);
>
> raydir = vec3(p) / p.w;
>
> }
>
> else
>
>  {
>
> // in orthographic mode, raydir is always ( 0., 0., -1. );
>
> raydir = vec3(0., 0., -1.);
>
> rayorigin = vec3(p.x / p.w, p.y / p.w, 0.);
>
> }
>
> // compute intersection
>
> I i = ComputeRayQuadricIntersection();
>
> if (i.t < 0.0)
>
> discard;
>
> // compute color
>
> gl_FragColor = ComputeColor(color, i.N, i.P);
>
> // update depth by projecting point and updating depth coordinate
>
> // the transposed version of the projection matrix is used to
>
> // perform vector, matrix row product in one line:
>
> // M[2][*] x V = Vt x Mt[*][2] where:
>
> // % V is a column vector
>
> // % Vt is a row vector
>
> // % M is a square matrix
>
> // % Mt is the transpose of M
>
> float z = dot(vec4(i.P, 1.), gl_ProjectionMatrixTranspose[2]);
>
> float w = dot(vec4(i.P, 1.), gl_ProjectionMatrixTranspose[3]);
>
> gl_FragDepth = 0.5 * (z / w + 1.0);
>
> }
>
>
>
>
>
> ERROR: In
> C:\DBD\pvs-x64\paraview\src\paraview\VTK\Rendering\OpenGL\vtkOpenGLProperty.cxx,
> line 415
>
> vtkPointSpriteProperty (000000001118DD20): Couldn't build the shader
> program. At this point , it can be an error in a shader or a driver bug.
>
>
> Cheers,
>
> Bruce
>
>
> On Mon, Feb 10, 2014 at 11:51 AM, Aashish Chaudhary <
> aashish.chaudhary at kitware.com> wrote:
>
>> Atleast, we need to know what shader its trying to use which is failing
>> to compile on your system (TextureSprite, Quadrics (Attribute or Fixed
>> Radius))
>>
>>
>> On Mon, Feb 10, 2014 at 11:44 AM, Aashish Chaudhary <
>> aashish.chaudhary at kitware.com> wrote:
>>
>>> Hi Bruce,
>>>
>>> Sorry, I thought replied to your email. In the log you sent me, I do see
>>> that it is stating that point sprites are supported. If you can put a break
>>> point in vtkPointSpriteProperty (at the error line) then we can find out
>>> exactly where the error is coming from.
>>>
>>> - Aashish
>>>
>>>
>>>
>>> On Mon, Feb 10, 2014 at 11:14 AM, Bruce Jones <
>>> bruce.david.jones at gmail.com> wrote:
>>>
>>>> Is there anything else I can do to help debug this problem? It is quite
>>>> frustrating to not have pointsprite working on this machine.
>>>>
>>>> Cheers,
>>>> Bruce
>>>>
>>>>
>>>> On Sun, Jan 26, 2014 at 6:26 PM, Bruce Jones <
>>>> bruce.david.jones at gmail.com> wrote:
>>>>
>>>>> Ok, I've attached the output from glview. Everything is supported for
>>>>> OpenGL <=4.2. versions 4.3 and 4.4 are partially supported.
>>>>>
>>>>> Cheers,
>>>>> Bruce
>>>>>
>>>>>
>>>>> On Thu, Jan 23, 2014 at 11:51 AM, Aashish Chaudhary <
>>>>> aashish.chaudhary at kitware.com> wrote:
>>>>>
>>>>>> http://www.realtech-vr.com/glview/
>>>>>>
>>>>>>
>>>>>> On Wed, Jan 22, 2014 at 9:35 AM, Bruce Jones <
>>>>>> bruce.david.jones at gmail.com> wrote:
>>>>>>
>>>>>>> This is windows 8.1, is there a similar utility I can run on windows?
>>>>>>>
>>>>>>> Cheers,
>>>>>>> Bruce
>>>>>>>
>>>>>>>
>>>>>>> On Wed, Jan 22, 2014 at 9:31 AM, Aashish Chaudhary <
>>>>>>> aashish.chaudhary at kitware.com> wrote:
>>>>>>>
>>>>>>>> Is this a windows OS or Linux? If Linux can you send us the output
>>>>>>>> of glxinfo (as a starting point to debug this).
>>>>>>>>
>>>>>>>> Thanks,
>>>>>>>>
>>>>>>>>
>>>>>>>>
>>>>>>>> On Wed, Jan 22, 2014 at 8:56 AM, Bruce Jones <
>>>>>>>> bruce.david.jones at gmail.com> wrote:
>>>>>>>>
>>>>>>>>>  When using the PointSprite plugin on a new laptop I found two
>>>>>>>>> options cause it to stop working.
>>>>>>>>>
>>>>>>>>> When changing from "Sphere (texture)" to "Sphere"  get the
>>>>>>>>> following,
>>>>>>>>>
>>>>>>>>> ERROR: In
>>>>>>>>> C:\DBD\pvs-x64\paraview\src\paraview\VTK\Rendering\OpenGL\vtkOpenGLProperty.cxx,
>>>>>>>>> line 415
>>>>>>>>>
>>>>>>>>> vtkPointSpriteProperty (000000000BD110B0): Couldn't build the
>>>>>>>>> shader program. At this point , it can be an error in a shader or a driver
>>>>>>>>> bug.
>>>>>>>>>
>>>>>>>>>
>>>>>>>>> I thought this might be due to lack of opengl support for the
>>>>>>>>> graphics chip, which comes bundled with the I7-4600u I have. However intel
>>>>>>>>> claim it supports up to version 4.2 of OpenGL, so that should be fine...
>>>>>>>>>
>>>>>>>>>
>>>>>>>>> Also, when i choose to scale the point sprite size by values in an
>>>>>>>>> array, I get the following error,
>>>>>>>>>
>>>>>>>>>
>>>>>>>>> ERROR: In
>>>>>>>>> C:\DBD\pvs-x64\paraview\src\paraview\VTK\Rendering\OpenGL\vtkShaderProgram2.cxx,
>>>>>>>>> line 1084
>>>>>>>>>
>>>>>>>>> vtkShaderProgram2 (0000000014D4A1A0): glGetAttribLocation 1 OpenGL
>>>>>>>>> errors detected
>>>>>>>>>
>>>>>>>>>  0 : (1281) Invalid value
>>>>>>>>>
>>>>>>>>>
>>>>>>>>> Is there any solution for this?
>>>>>>>>>
>>>>>>>>>
>>>>>>>>> Cheers,
>>>>>>>>>
>>>>>>>>> Bruce
>>>>>>>>>
>>>>>>>>> _______________________________________________
>>>>>>>>> Powered by www.kitware.com
>>>>>>>>>
>>>>>>>>> Visit other Kitware open-source projects at
>>>>>>>>> http://www.kitware.com/opensource/opensource.html
>>>>>>>>>
>>>>>>>>> Please keep messages on-topic and check the ParaView Wiki at:
>>>>>>>>> http://paraview.org/Wiki/ParaView
>>>>>>>>>
>>>>>>>>> Follow this link to subscribe/unsubscribe:
>>>>>>>>> http://www.paraview.org/mailman/listinfo/paraview
>>>>>>>>>
>>>>>>>>>
>>>>>>>>
>>>>>>>>
>>>>>>>> --
>>>>>>>> | Aashish Chaudhary
>>>>>>>> | R&D Engineer
>>>>>>>> | Kitware Inc.
>>>>>>>> | www.kitware.com
>>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>
>>>>>>
>>>>>> --
>>>>>> | Aashish Chaudhary
>>>>>> | R&D Engineer
>>>>>> | Kitware Inc.
>>>>>> | www.kitware.com
>>>>>>
>>>>>
>>>>>
>>>>
>>>
>>>
>>> --
>>> | Aashish Chaudhary
>>> | R&D Engineer
>>> | Kitware Inc.
>>> | www.kitware.com
>>>
>>
>>
>>
>> --
>> | Aashish Chaudhary
>> | R&D Engineer
>> | Kitware Inc.
>> | www.kitware.com
>>
>
>


-- 
| Aashish Chaudhary
| R&D Engineer
| Kitware Inc.
| www.kitware.com
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://www.paraview.org/pipermail/paraview/attachments/20140210/b023241a/attachment-0001.html>


More information about the ParaView mailing list