[vtk-developers] OpenGL2: Picking problems on Linux

Aashish Chaudhary aashish.chaudhary at kitware.com
Mon Feb 2 18:18:33 EST 2015


Another problem could be is that the shader does not define the version
explicitly. If you can add a line like what I have shown below in the
fragment shader, then it may solve your problem. I don't know on top of my
head the file you have to modify.

#version 130


On Mon, Feb 2, 2015 at 5:47 PM, Aashish Chaudhary <
aashish.chaudhary at kitware.com> wrote:

> Ken will have more say but here is one of the reasons for the failure:
>
> GL_EXT_gpu_shader4 is required for gl_PrimitiveID to exist in the shader.
> It may be possible that what GLEW is reporting is not quite matching with
> what actually is supported.
>
>  - Aashish
>
> On Mon, Feb 2, 2015 at 4:11 PM, Bill Lorensen <bill.lorensen at gmail.com>
> wrote:
>
>> Folks,
>>
>> I built VTK with the OpenGL2 backend. This example:
>> http://www.vtk.org/Wiki/VTK/Examples/Cxx/Widgets/BalloonWidget
>> crashes when I hover over an actor. It is failing during the pick
>> operation.
>>
>> My system is Fedoro 20. OPenGL version:
>> OpenGL vendor string: VMware, Inc.
>> OpenGL renderer string: Gallium 0.4 on llvmpipe (LLVM 3.4, 128 bits)
>> OpenGL version string: 2.1 Mesa 10.3.3
>> OpenGL shading language version string: 1.30
>>
>> This is the reported error before the segfault:
>> ERROR: In
>> /home/lorensen/ProjectsGIT/VTKGerrit/Rendering/OpenGL2/vtkShaderProgram.cxx,
>> line 291
>> vtkShaderProgram (0x1340be0): 1:
>>
>> /*=========================================================================
>> 2:
>> 3:   Program:   Visualization Toolkit
>> 4:   Module:    vtkglPolyDataFSHeadight.glsl
>> 5:
>> 6:   Copyright (c) Ken Martin, Will Schroeder, Bill Lorensen
>> 7:   All rights reserved.
>> 8:   See Copyright.txt or http://www.kitware.com/Copyright.htm for
>> details.
>> 9:
>> 10:      This software is distributed WITHOUT ANY WARRANTY; without even
>> 11:      the implied warranty of MERCHANTABILITY or FITNESS FOR A
>> PARTICULAR
>> 12:      PURPOSE.  See the above copyright notice for more information.
>> 13:
>> 14:
>> =========================================================================*/
>> 15: // the lighting model for this shader is a Headlight
>> 16:
>> 17: // The following line handle system declarations such a
>> 18: // default precisions, or defining precisions to null
>> 19: #extension GL_EXT_gpu_shader4 : enable
>> 20: #define highp
>> 21: #define mediump
>> 22: #define lowp
>> 23:
>> 24:
>> 25: // all variables that represent positions or directions have a suffix
>> 26: // indicating the coordinate system they are in. The possible values
>> are
>> 27: // MC - Model Coordinates
>> 28: // WC - WC world coordinates
>> 29: // VC - View Coordinates
>> 30: // DC - Display Coordinates
>> 31:
>> 32: // VC positon of this fragment
>> 33: varying vec4 vertexVC;
>> 34:
>> 35: // optional color passed in from the vertex shader, vertexColor
>> 36: uniform float opacityUniform; // the fragment opacity
>> 37: uniform vec3 ambientColorUniform; // intensity weighted color
>> 38: uniform vec3 diffuseColorUniform; // intensity weighted color
>> 39: uniform vec3 specularColorUniform; // intensity weighted color
>> 40: uniform float specularPowerUniform;
>> 41:
>> 42:
>> 43: // optional normal declaration
>> 44: varying vec3 normalVCVarying;
>> 45:
>> 46: // Texture coordinates
>> 47: //VTK::TCoord::Dec
>> 48:
>> 49: // picking support
>> 50: uniform vec3 mapperIndex;
>> 51: uniform int pickingAttributeIDOffset;
>> 52:
>> 53: // Depth Peeling Support
>> 54: //VTK::DepthPeeling::Dec
>> 55:
>> 56: // clipping plane vars
>> 57: //VTK::Clip::Dec
>> 58:
>> 59: void main()
>> 60: {
>> 61:   //VTK::Clip::Impl
>> 62:
>> 63:   vec3 ambientColor;
>> 64:   vec3 diffuseColor;
>> 65:   float opacity;
>> 66:   vec3 specularColor;
>> 67:   float specularPower;
>> 68:   ambientColor = ambientColorUniform;
>> 69:   diffuseColor = diffuseColorUniform;
>> 70:   opacity = opacityUniform;
>> 71:   specularColor = specularColorUniform;
>> 72:   specularPower = specularPowerUniform;
>> 73:
>> 74:
>> 75:   // Generate the normal if we are not passed in one
>> 76:   vec3 normalVC = normalize(normalVCVarying);
>> 77:   if (gl_FrontFacing == false) { normalVC = -normalVC; }
>> 78:
>> 79:
>> 80:   // diffuse and specular lighting
>> 81:   float df = max(0.0, normalVC.z);
>> 82:   float sf = pow(df, specularPower);
>> 83:
>> 84:   vec3 diffuse = df * diffuseColor;
>> 85:   vec3 specular = sf * specularColor;
>> 86:
>> 87:   gl_FragColor = vec4(ambientColor + diffuse + specular, opacity);
>> 88:   //VTK::TCoord::Impl
>> 89:
>> 90:   if (gl_FragColor.a <= 0.0)
>> 91:     {
>> 92:     discard;
>> 93:     }
>> 94:
>> 95:   //VTK::DepthPeeling::Impl
>> 96:
>> 97:   if (mapperIndex == vec3(0.0,0.0,0.0))
>> 98:     {
>> 99:     int idx = gl_PrimitiveID + 1 + pickingAttributeIDOffset;
>> 100:     gl_FragColor = vec4(float(idx%256)/255.0,
>> float((idx/256)%256)/255.0, float(idx/65536)/255.0, 1.0);
>> 101:     }
>> 102:   else
>> 103:     {
>> 104:     gl_FragColor = vec4(mapperIndex,1.0);
>> 105:     }
>> 106:
>> 107: }
>> 108:
>> 109:
>> 110:
>> 111:
>>
>>
>> ERROR: In
>> /home/lorensen/ProjectsGIT/VTKGerrit/Rendering/OpenGL2/vtkShaderProgram.cxx,
>> line 292
>> vtkShaderProgram (0x1340be0): 0:19(12): warning: extension
>> `GL_EXT_gpu_shader4' unsupported in fragment shader
>> 0:99(12): error: `gl_PrimitiveID' undeclared
>> 0:99(12): error: operands to arithmetic operators must be numeric
>> 0:99(12): error: operands to arithmetic operators must be numeric
>> 0:100(28): error: operator '%' is reserved in GLSL 1.10 (GLSL 1.30 or
>> GLSL ES 3.00 required)
>> 0:100(22): error: cannot construct `float' from a non-numeric data type
>> 0:100(22): error: operands to arithmetic operators must be numeric
>> 0:100(17): error: cannot construct `vec4' from a non-numeric data type
>> _______________________________________________
>> Powered by www.kitware.com
>>
>> Visit other Kitware open-source projects at
>> http://www.kitware.com/opensource/opensource.html
>>
>> Search the list archives at: http://markmail.org/search/?q=vtk-developers
>>
>> Follow this link to subscribe/unsubscribe:
>> http://public.kitware.com/mailman/listinfo/vtk-developers
>>
>>
>
>
> --
>
>
>
> *| Aashish Chaudhary | Technical Leader         | Kitware Inc.            *
> *| http://www.kitware.com/company/team/chaudhary.html
> <http://www.kitware.com/company/team/chaudhary.html>*
>



-- 



*| Aashish Chaudhary | Technical Leader         | Kitware Inc.            *
*| http://www.kitware.com/company/team/chaudhary.html
<http://www.kitware.com/company/team/chaudhary.html>*
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://public.kitware.com/pipermail/vtk-developers/attachments/20150202/47c9a164/attachment.html>


More information about the vtk-developers mailing list