ELF>@@ATL%UH-HHH=LHH-HH=LHH]A\//VTK::System::Dec /*========================================================================= Program: Visualization Toolkit Module: vtkStickMapperGS.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. =========================================================================*/ // Template for the polydata mappers geometry shader // primitiveID //VTK::PrimID::Dec // optional color passed in from the vertex shader, vertexColor //VTK::Color::Dec layout(points) in; layout(triangle_strip, max_vertices = 6) out; uniform int cameraParallel; uniform mat4 VCDCMatrix; in float radiusVCVSOutput[]; out float radiusVCGSOutput; out vec4 vertexVCGSOutput; in float lengthVCVSOutput[]; out float lengthVCGSOutput; out vec3 centerVCGSOutput; in vec3 orientVCVSOutput[]; out vec3 orientVCGSOutput; // clipping plane vars //VTK::Clip::Dec //VTK::Picking::Dec void main() { centerVCGSOutput = gl_in[0].gl_Position.xyz/gl_in[0].gl_Position.w; radiusVCGSOutput = radiusVCVSOutput[0]; lengthVCGSOutput = lengthVCVSOutput[0]; orientVCGSOutput = orientVCVSOutput[0]; int i = 0; //VTK::PrimID::Impl //VTK::Clip::Impl //VTK::Color::Impl //VTK::Picking::Impl // make the basis vec3 xbase; vec3 ybase; // dir is the direction to the camera vec3 dir = vec3(0.0,0.0,1.0); if (cameraParallel == 0) { dir = normalize(-centerVCGSOutput); } // if dir is aligned with the cylinder orientation if (abs(dot(dir,orientVCGSOutput)) == 1.0) { xbase = normalize(cross(vec3(0.0,1.0,0.0),orientVCGSOutput)); ybase = cross(xbase,orientVCGSOutput); } else { xbase = normalize(cross(orientVCGSOutput,dir)); ybase = cross(orientVCGSOutput,xbase); } xbase = xbase * radiusVCGSOutput; ybase = ybase * radiusVCGSOutput; vec3 zbase = 0.5*lengthVCGSOutput*orientVCGSOutput; vertexVCGSOutput = vec4(0.0, 0.0, 0.0, 1.0); vertexVCGSOutput.xyz = centerVCGSOutput - xbase - ybase - zbase; gl_Position = VCDCMatrix * vertexVCGSOutput; EmitVertex(); vertexVCGSOutput.xyz = centerVCGSOutput + xbase - ybase - zbase; gl_Position = VCDCMatrix * vertexVCGSOutput; EmitVertex(); vertexVCGSOutput.xyz = centerVCGSOutput - xbase - ybase + zbase; gl_Position = VCDCMatrix * vertexVCGSOutput; EmitVertex(); vertexVCGSOutput.xyz = centerVCGSOutput + xbase - ybase + zbase; gl_Position = VCDCMatrix * vertexVCGSOutput; EmitVertex(); vertexVCGSOutput.xyz = centerVCGSOutput - xbase + ybase + zbase; gl_Position = VCDCMatrix * vertexVCGSOutput; EmitVertex(); vertexVCGSOutput.xyz = centerVCGSOutput + xbase + ybase + zbase; gl_Position = VCDCMatrix * vertexVCGSOutput; EmitVertex(); EndPrimitive(); } GCC: (Ubuntu 11.4.0-1ubuntu1~22.04) 11.4.0GNUzRx $`FHN |AB`%4Vc{ _GLOBAL__sub_I_vtkStickMapperGS.cxx_ZStL8__ioinit_ZL28vtkDebugLeaksManagerInstance__dso_handle_ZNSt8ios_base4InitC1Ev_GLOBAL_OFFSET_TABLE__ZNSt8ios_base4InitD1Ev__cxa_atexit_ZN20vtkDebugLeaksManagerC1Ev_ZN20vtkDebugLeaksManagerD1Ev_Z33vtkRenderingUI_AutoInit_ConstructvvtkStickMapperGS  $* 16 > E*P \ .symtab.strtab.shstrtab.text.data.bss.rela.text.startup.rela.init_array.rodata.str1.8.rela.data.rel.local.comment.note.GNU-stack.note.gnu.property.rela.eh_frame@!@'@1@`,@D?@P2 d _@ t0 ,}   @@  *