Opened 9 months ago

Closed 9 months ago

#16682 closed defect (fixed)

Volume raycasting with orthoplanes: Shader compile failure

Reported by: chimerax-bug-report@… Owned by: Zach Pearson
Priority: normal Milestone:
Component: Graphics Version:
Keywords: Cc: Tom Goddard
Blocked By: Blocking:
Notify when closed: Platform: all
Project: ChimeraX

Description

The following bug report has been submitted:
Platform:        Linux-5.14.0-503.14.1.el9_5.x86_64-x86_64-with-glibc2.34
ChimeraX Version: 1.9 (2024-12-11 19:11:19 UTC)
Description
I update pyopengl to 3.1.9, because for default version (3.1.7), I just can not open chimerax. I'm not sure is it cause the problem.

Log:
Startup Messages  
---  
note | available bundle cache has not been initialized yet  
  
UCSF ChimeraX version: 1.9 (2024-12-11)  
© 2016-2024 Regents of the University of California. All rights reserved.  
How to cite UCSF ChimeraX  

> open
> /eml2/xyan/ERGIC/titan2_20230712/dataset/CH6_3_lam1_1_defocus5_bin5_rotx_corrected.mrc

Opened CH6_3_lam1_1_defocus5_bin5_rotx_corrected.mrc as #1, grid size
818,1152,300, pixel 1, shown at step 1, values float32  

> volume #1 region 0,0,0,817,1151,299 step 4

[Repeated 1 time(s)]

> volume #1 change image level -0.8597,0 level 0.2141,0.8 level 0.9877,1

> volume #1 level -0.05283

> volume projectionMode rays

> lighting soft

> volume projectionMode rays

[Repeated 1 time(s)]

> volume #1 level 0.3833

> volume #1 style image region 0,0,148,817,1151,148 step 1 showOutlineBox true

> volume #1 region 0,0,299,817,1151,299

> volume #1 region 0,0,149,817,1151,149

> volume #1 region 0,0,240,817,1151,240

> volume #1 region 0,0,154,817,1151,154

> volume #1 region 0,0,0,817,1151,0

[Repeated 1 time(s)]

> volume #1 region 0,0,0,817,1151,299 step 4

> volume #1 region 0,0,0,817,1151,299 step 1 colorMode opaque8 orthoplanes xyz
> positionPlanes 408,575,149 imageMode orthoplanes

An OpenGL graphics error occurred. Most often this is caused by a graphics
driver bug. The only way to fix such bugs is to update your graphics driver.
Redrawing graphics is now stopped to avoid a continuous stream of error
messages. To restart graphics use the command "graphics restart" after
changing the settings that caused the error.  
  
('Shader compile failure (0): b\'0(289) : error C1503: undefined variable
"tex_coord_3d"\\\n0(292) : error C1503: undefined variable "tex3d"\\\n0(292) :
error C1503: undefined variable "colormap_range"\\\n0(292) : error C1503:
undefined variable "colormap_range"\\\n0(293) : error C1503: undefined
variable "colormap"\\\n0(295) : error C1503: undefined variable
"tex3d"\\\n0(295) : error C1503: undefined variable "tex3d"\\\n0(296) : error
C1503: undefined variable "tex3d"\\\n0(296) : error C1503: undefined variable
"tex3d"\\\n0(297) : error C1503: undefined variable "tex3d"\\\n0(297) : error
C1503: undefined variable "tex3d"\\\n0(300) : error C1503: undefined variable
"key_light_direction"\\\n0(301) : error C1503: undefined variable
"fill_light_direction"\\\n0(302) : error C1503: undefined variable
"key_light_direction"\\\n0(303) : error C1503: undefined variable
"key_light_specular_exponent"\\\n0(305) : error C1503: undefined variable
"key_light_diffuse_color"\\\n0(305) : error C1503: undefined variable
"fill_light_diffuse_color"\\\n0(305) : error C1503: undefined variable
"key_light_specular_color"\\\n0(306) : error C1503: undefined variable
"ambient_color"\\\n\'', [b'#version 330 core\n#define USE_VOLUME_RAYCASTING
1\n#define MAX_SHADOWS 1024\n// vim: set ft=glsl:\n\n/*\n * === UCSF ChimeraX
Copyright ===\n# Copyright 2022 Regents of the University of California. All
rights reserved.\n# The ChimeraX application is provided pursuant to the
ChimeraX license\n# agreement, which covers academic and commercial uses. For
more details, see\n#
<https://www.rbvi.ucsf.edu/chimerax/docs/licensing.html>\n#\n# This particular
file is part of the ChimeraX library. You can also\n# redistribute and/or
modify it under the terms of the GNU Lesser General\n# Public License version
2.1 as published by the Free Software Foundation.\n# For more details, see\n#
<https://www.gnu.org/licenses/old-licenses/lgpl-2.1.html>\n#\n# THIS SOFTWARE
IS PROVIDED "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER\n# EXPRESSED OR
IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES\n# OF
MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. ADDITIONAL LIABILITY\n#
LIMITATIONS ARE DESCRIBED IN THE GNU LESSER GENERAL PUBLIC LICENSE\n# VERSION
2.1\n#\n# This notice must be embedded in or attached to all copies, including
partial\n# copies, of the software or any revisions or derivations thereof.\n
* === UCSF ChimeraX Copyright ===\n */\n\n/*
----------------------------------------------------------------------------\n*
Various debugging shaders\n*/\n#ifdef USE_SHOW_DEPTH_BUFFER\nuniform sampler2D
depth_texture;\nin vec2 tex_coord_2d;\nout vec4 frag_color;\n\nvoid
main()\n{\n float c = texture(depth_texture, tex_coord_2d).x;\n frag_color =
vec4(c, c, c, 1.0);\n}\n\n/*
----------------------------------------------------------------------------\n*
Shader for drawing selection outlines.\n*/\n#elif
defined(USE_TEXTURE_OUTLINE)\n\nin vec2 tex_coord_2d;\nuniform sampler2D
tex2d;\nuniform vec4 color;\nuniform vec2 step;\nout vec4 frag_color;\n\nvoid
main (void)\n{\n float m0 = texture(tex2d, tex_coord_2d).r;\n if (m0 != 0)\n
discard;\n float mn = texture(tex2d, vec2(tex_coord_2d.s+step.s,
tex_coord_2d.t)).r;\n mn = max(mn, texture(tex2d, vec2(tex_coord_2d.s-step.s,
tex_coord_2d.t)).r);\n mn = max(mn, texture(tex2d, vec2(tex_coord_2d.s,
tex_coord_2d.t+step.t)).r);\n mn = max(mn, texture(tex2d, vec2(tex_coord_2d.s,
tex_coord_2d.t-step.t)).r);\n if (mn == 0)\n discard;\n frag_color =
color;\n}\n\n/*
----------------------------------------------------------------------------\n*
Shader for drawing silhouette edges.\n*/\n#elif
defined(USE_DEPTH_OUTLINE)\n\nin vec2 tex_coord_2d;\nuniform sampler2D
tex2d;\nuniform vec4 color;\nuniform vec2 jump;\t// depth jump and near/far
ratio.\nuniform vec3 step;\t// dx,dy,thickness\nout vec4 frag_color;\n\nvoid
main (void)\n{\n float d0 = texture(tex2d, tex_coord_2d).r;\n float ds = d0;\n
float thickness = step.p;\n int r = int(thickness);\n float r2 =
thickness*thickness;\n for (int i = -r ; i <= r ; ++i)\n for (int j = -r ; j
<= r ; ++j)\n if (i*i + j*j <= r2 && !(i == 0 && j == 0))\n ds = min(ds,
texture(tex2d, vec2(tex_coord_2d.s+i*step.s, tex_coord_2d.t+j*step.t)).r);\n
float nf = jump.t;\t// Correct depth compression based on perspective near/far
ratio.\n float nf1 = 1-nf;\n if (nf*(d0-ds) < jump.s * (1-nf1*ds) *
(1-nf1*d0))\n discard;\n frag_color = color;\n}\n\n/*
----------------------------------------------------------------------------\n*
Shader for blending textures for multichannel volume image
rendering.\n*/\n#elif defined(USE_BLEND_TEXTURE_2D) ||
defined(USE_BLEND_TEXTURE_3D)\n\nin vec2 tex_coord_2d;\n#ifdef
USE_BLEND_TEXTURE_2D\nuniform sampler2D tex2d;\n#else\nuniform sampler3D
tex3d;\nuniform float tex_coord_z;\n#endif\n\nuniform vec4 color;\t\t\t//
modulation color\n#ifdef USE_BLEND_COLORMAP\nuniform vec2
colormap_range;\t\t// offset and scale\nuniform sampler1D
colormap;\n#endif\nout vec4 frag_color;\n\nvoid main (void)\n{\n#ifdef
USE_BLEND_TEXTURE_2D\n#ifdef USE_BLEND_COLORMAP\n float tvalue =
(texture(tex2d, tex_coord_2d).r - colormap_range.x) * colormap_range.y;\n
frag_color = texture(colormap, tvalue) * color;\n#else\n frag_color =
texture(tex2d, tex_coord_2d) * color;\n#endif\n#endif\n#ifdef
USE_BLEND_TEXTURE_3D\n vec3 tex_coord_3d = vec3(tex_coord_2d,
tex_coord_z);\n#ifdef USE_BLEND_COLORMAP\n float tvalue = (texture(tex3d,
tex_coord_3d).r - colormap_range.x) * colormap_range.y;\n frag_color =
texture(colormap, tvalue) * color;\n#else\n frag_color = texture(tex3d,
tex_coord_3d) * color;\n#endif\n#endif\n}\n\n\n#else\n\n/*
----------------------------------------------------------------------------\n*
Shader for rendering scene with lighting.\n*/\n\n#if defined(USE_LIGHTING) ||
defined(USE_DEPTH_CUE)\nin vec3 v;\n#endif\n\n#ifdef
USE_LIGHTING\n\nlayout(std140) uniform lighting_block\n{\n vec3
key_light_direction;\n vec3 key_light_diffuse_color;\n vec3
key_light_specular_color;\n float key_light_specular_exponent;\n vec3
fill_light_direction;\n vec3 fill_light_diffuse_color;\n vec3
ambient_color;\n};\n\n#ifdef USE_LIGHTING_NORMALS\nin vec3
N;\n#endif\n\n#ifdef USE_STEREO_360\nin vec3 vshadow;\n#endif\n\n#ifdef
USE_SHADOW\nin vec3 shadow_tex_coord;\nuniform sampler2DShadow
shadow_map;\n#endif\n\n#ifdef USE_MULTISHADOW\n// in vec3 vscene;\n// in vec3
nscene;\nuniform sampler2DShadow multishadow_map;\nlayout(std140) uniform
shadow_matrix_block\n{\n mat4
shadow_transforms[MAX_SHADOWS];\n};\nuniform\tint shadow_count;\nuniform float
shadow_depth;\n#endif\n\n#endif // end USE_LIGHTING\n\n#ifdef
USE_DEPTH_CUE\nuniform vec3 depth_cue_color;\nuniform vec2
depth_cue_range;\t// start and end camera z values\n#endif\n\n#ifdef
USE_VERTEX_COLORS\nin vec4 color;\n#else\nuniform vec4
color;\n#endif\n\n#ifdef USE_TEXTURE_2D\nin vec2 tex_coord_2d;\nuniform
sampler2D tex2d;\n#endif\n\n#ifdef USE_TEXTURE_3D\nin vec3
tex_coord_3d;\nuniform sampler3D tex3d;\n#endif\n\n#ifdef
USE_VOLUME_RAYCASTING\n uniform float step_size;\n uniform vec3 camera_pos;\n
uniform float camera_fov;\n uniform vec2 window_size;\n uniform mat4
view_matrix;\n uniform vec4 background_color;\n uniform vec3 bbox_min;\n
uniform vec3 bbox_max;\n uniform vec3 full_region_min;\n uniform vec3
full_region_max;\n float PHI = 1.61803398874989484820459;\n\n float
gold_noise(in vec2 xy, in float seed){\n return fract(tan(distance(xy*PHI,
xy)*seed)*xy.x);\n }\n#endif\n\n#ifdef USE_COLORMAP\nuniform vec2
colormap_range;\t\t// offset and scale\nuniform sampler1D
colormap;\n#endif\n\n#ifdef USE_DEPTH_TEXTURE\nuniform vec2
tex_depth_projection;\t// near, far/(far-near)\nuniform vec3
tex_depth_scale;\t\t// tex coord xscale, yscale and value zscale\nuniform
sampler2D tex_depth_2d;\n#endif\n\n#ifdef USE_TEXTURE_CUBEMAP\nin vec3
tex_coord_cubemap;\nuniform samplerCube texcube;\n#endif\n\n#ifdef
USE_TEXTURE_3D_AMBIENT\nin vec3 ambient_tex_coord;\nuniform sampler3D
tex3d;\n#endif\n\nout vec4 frag_color;\n\nvoid main (void)\n{\n#ifdef
USE_VOLUME_RAYCASTING\n float aspect_ratio = window_size.x / window_size.y;\n
float focal_length = 1.0 / tan(radians(camera_fov / 2.0));\n vec3 ray_origin =
camera_pos;\n vec3 ray_direction;\n ray_direction.xy = 2.0 * gl_FragCoord.xy /
window_size - 1.0;\n ray_direction.y /= aspect_ratio;\n ray_direction.z =
-focal_length;\n ray_direction = (vec4(ray_direction, 0.0) *
view_matrix).xyz;\n\n vec3 direction_inv = 1.0 / ray_direction;\n vec3
t_bottom = direction_inv * (bbox_min - ray_origin);\n vec3 t_top =
direction_inv * (bbox_max - ray_origin);\n\n vec3 t_min = min(t_top,
t_bottom);\n vec3 t_max = max(t_top, t_bottom);\n\n float t_0 = max(t_min.x,
max(t_min.y, t_min.z));\n float t_1 = min(t_max.x, min(t_max.y, t_max.z));\n\n
if (t_0 > t_1) {\n discard;\n }\n\n // Centers the volume in the box\n vec3
ray_start = (ray_origin + ray_direction * t_0 - full_region_min) /
(full_region_max - full_region_min);\n vec3 ray_stop = (ray_origin +
ray_direction * t_1 - full_region_min) / (full_region_max -
full_region_min);\n\n vec3 ray = ray_stop - ray_start;\n float ray_length =
length(ray);\n //float step_length = length(ssize);\n float step_length =
step_size; //min(step_size.x, min(step_size.y, step_size.z));\n vec3
step_vector = step_length * ray / ray_length;\n float jitter =
gold_noise(gl_FragCoord.xy, 0.9) * 0.5;\n vec3 position = tex_coord_3d +
(step_vector * jitter);\n frag_color = vec4(0);\n while(ray_length > 0 &&
frag_color.a < 1) {\n float intensity = (texture(tex3d, position).r -
colormap_range.x) * colormap_range.y;\n vec4 cmap_color = texture(colormap,
intensity) * color;\n vec3 gradientVec = normalize(vec3(\n texture(tex3d,
position + vec3(step_length, 0.0, 0.0)).r - texture(tex3d, position -
vec3(step_length, 0.0, 0.0)).r,\n texture(tex3d, position + vec3(0.0,
step_length, 0.0)).r - texture(tex3d, position - vec3(0.0, step_length,
0.0)).r,\n texture(tex3d, position + vec3(0.0, 0.0, step_length)).r -
texture(tex3d, position - vec3(0.0, 0.0, step_length)).r\n ));\n\n float
keyDiffuse = max(0.0, -dot(gradientVec, key_light_direction));\n float
fillDiffuse = max(0.0, -dot(gradientVec, fill_light_direction));\n vec3 R =
normalize(reflect(key_light_direction,gradientVec));\n float specular_factor =
pow(max(-dot(R,normalize(ray_direction)),0.0),
key_light_specular_exponent);\n\n vec3 lightColor = keyDiffuse *
key_light_diffuse_color + fillDiffuse * fill_light_diffuse_color +
key_light_specular_color * specular_factor;\n lightColor += cmap_color.rgb *
ambient_color;\n cmap_color *= vec4(lightColor,1);\n\n\n // Accumulate color
and opacity\n frag_color += (1.0 - frag_color.a) * cmap_color;\n\n // Alpha
correction for step sizes other than 0.001\n frag_color.a = 1 - pow(1 -
frag_color.a, step_length / 0.001);\n\n ray_length -= step_length;\n position
+= step_vector;\n if(\n (position.x < 0.0) || (position.x > 1.0) ||\n
(position.y < 0.0) || (position.y > 1.0) ||\n (position.z < 0.0) ||
(position.z > 1.0)\n ) {\n break;\n }\n }\n frag_color += (1.0 - frag_color.a)
* background_color;\n}\n#else\n #ifdef USE_DEPTH_TEXTURE\n // Adjust depth of
each fragment in rendering a texture.\n float xscale = tex_depth_scale.x,
yscale = tex_depth_scale.y, dscale = tex_depth_scale.z;\n float zt =
texture(tex_depth_2d, vec2(0.5+xscale*(tex_coord_2d.x-0.5),
0.5+yscale*(tex_coord_2d.y-0.5))).x;\n zt = (zt == 0 ? 1 : zt); // Depth 0
means unknown depth, change to maximum depth\n float znear =
tex_depth_projection.x, fdfmn = tex_depth_projection.y;\n float zs =
max(znear, zt*dscale);\n gl_FragDepth = min(.99999, fdfmn * (zs - znear) /
zs);\n #endif\n\n #ifdef USE_TEXTURE_2D\n #ifdef USE_COLORMAP\n float tvalue =
(texture(tex2d, tex_coord_2d).r - colormap_range.x) * colormap_range.y;\n vec4
fcolor = texture(colormap, tvalue) * color;\n #else\n vec4 fcolor =
texture(tex2d, tex_coord_2d) * color;\n #endif\n #else\n #ifdef
USE_TEXTURE_3D\n #ifdef USE_COLORMAP\n float tvalue = (texture(tex3d,
tex_coord_3d).r - colormap_range.x) * colormap_range.y;\n vec4 fcolor =
texture(colormap, tvalue) * color;\n #else\n vec4 fcolor = texture(tex3d,
tex_coord_3d) * color;\n #endif\n #else\n #ifdef USE_TEXTURE_CUBEMAP\n vec4
fcolor = texture(texcube, tex_coord_cubemap) * color;\n #else\n #ifdef
USE_ALL_WHITE\n vec4 fcolor = vec4(1,1,1,1);\n #else\n vec4 fcolor = color;\n
#endif\n #endif\n #endif\n #endif\n\n #ifdef USE_TRANSPARENT_ONLY\n if
(fcolor.a >= 0.99)\n discard;\n #endif\n\n #ifdef USE_OPAQUE_ONLY\n if
(fcolor.a < .99)\n discard;\n #endif\n\n #ifdef USE_ALPHA_DEPTH\n gl_FragDepth
= 0.99999 * fcolor.a; // Depth 1 is clipped.\n #endif\n\n #ifdef
USE_LIGHTING\n\n #ifdef USE_LIGHTING_NORMALS\n // Unit normal, with two-sided
lighting.\n vec3 N1 = normalize(N) * (gl_FrontFacing ? 1.0 : -1.0);\n // vec3
N1 = normalize(N); // single-sided lighting\n\n // Unit vector from camera to
surface point.\n vec3 v1 = normalize(v);\n\n float key_factor =
max(-dot(N1,key_light_direction),0.0);\n float fill_factor =
max(-dot(N1,fill_light_direction),0.0);\n vec3 R =
normalize(reflect(key_light_direction,N1));\n float specular_factor =
pow(max(-dot(R,v1),0.0), key_light_specular_exponent);\n #else\n float
key_factor = 1;\n float fill_factor = 1;\n float specular_factor = 0;\n
#endif\n\n #ifdef USE_SHADOW\n float shadow = texture(shadow_map,
shadow_tex_coord);\n #else\n float shadow = 1;\n #endif\n\n // diffuse color,
radiated equally in all directions,\n // strength based on incoming light
direction and surface normal.\n vec3 Idiff = fcolor.rgb *
(key_light_diffuse_color * key_factor * shadow\n + fill_light_diffuse_color *
fill_factor);\n\n // specular color, reflection of incoming light towards the
camera.\n vec3 Ispec = key_light_specular_color * specular_factor *
shadow;\n\n #ifdef USE_MULTISHADOW\n\n float mshadow = 0;\n for (int i = 0 ; i
< shadow_count ; ++i)\n {\n mat4 stf = shadow_transforms[i];\n #ifdef
USE_STEREO_360\n vec3 shadow_tex_coord = (stf*vec4(vshadow,1)).stp;\n #else\n
vec3 shadow_tex_coord = (stf*vec4(v,1)).stp;\n // vec3 shadow_tex_coord =
(stf*vec4(vscene,1)).stp;\n #endif\n #ifdef USE_LIGHTING_NORMALS\n vec3
light_direction = shadow_depth * vec3(stf[0][2], stf[1][2], stf[2][2]);\n
float diffuse = max(-dot(N1,light_direction),0.0);\n \t // float diffuse =
max(-dot(nscene,light_direction),0.0);\n #else\n float diffuse = 0.25;\n
#endif\n mshadow += diffuse * texture(multishadow_map, shadow_tex_coord);\n
}\n mshadow /= 0.25*shadow_count;\n vec3 Iamb = fcolor.rgb * ambient_color *
mshadow;\n\n #else\n\n // ambient color, uniform intensity light from all
surfaces.\n vec3 Iamb = fcolor.rgb * ambient_color;\n\n #endif\n\n // total
color\n vec3 Ifrag = Iamb + Idiff + Ispec;\n\n #ifdef USE_TEXTURE_3D_AMBIENT\n
Ifrag *= texture(tex3d, ambient_tex_coord).r;\n #endif\n\n #else // not
USE_LIGHTING\n\n vec3 Ifrag = fcolor.rgb;\n\n #endif // end USE_LIGHTING\n\n
#ifdef USE_DEPTH_CUE\n float d = -v.z;\t// Distance from eye to fragment.\n
float dim = (depth_cue_range.y - d) / (depth_cue_range.y -
depth_cue_range.x);\n Ifrag = mix(depth_cue_color, Ifrag,
clamp(dim,0.0,1.0));\n #endif\n\n // transparency\n float a = fcolor.a;\n
#ifdef USE_LIGHTING\n #ifdef USE_LIGHTING_NORMALS\n a = (a >= 1 ? 1.0 : 1.0 -
pow(max(1.0-a,0.0), 1.0/max(abs(dot(v1,N1)),0.01)));\n #endif\n #endif\n\n //
final color\n frag_color = vec4(Ifrag, a);\n}\n#endif\n#endif\n'],
GL_FRAGMENT_SHADER)  
  
Traceback (most recent call last):  
File "/eml0/UserHome/xyan/my_rpm/usr/libexec/UCSF-
ChimeraX/lib/python3.11/site-packages/chimerax/graphics/opengl.py", line 2946,
in compile_shader  
fs = shaders.compileShader(fshader, GL.GL_FRAGMENT_SHADER)  
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^  
File "/eml0/UserHome/xyan/my_rpm/usr/libexec/UCSF-
ChimeraX/lib/python3.11/site-packages/OpenGL/GL/shaders.py", line 235, in
compileShader  
raise ShaderCompilationError(  
OpenGL.GL.shaders.ShaderCompilationError: ('Shader compile failure (0):
b\'0(289) : error C1503: undefined variable "tex_coord_3d"\\\n0(292) : error
C1503: undefined variable "tex3d"\\\n0(292) : error C1503: undefined variable
"colormap_range"\\\n0(292) : error C1503: undefined variable
"colormap_range"\\\n0(293) : error C1503: undefined variable
"colormap"\\\n0(295) : error C1503: undefined variable "tex3d"\\\n0(295) :
error C1503: undefined variable "tex3d"\\\n0(296) : error C1503: undefined
variable "tex3d"\\\n0(296) : error C1503: undefined variable "tex3d"\\\n0(297)
: error C1503: undefined variable "tex3d"\\\n0(297) : error C1503: undefined
variable "tex3d"\\\n0(300) : error C1503: undefined variable
"key_light_direction"\\\n0(301) : error C1503: undefined variable
"fill_light_direction"\\\n0(302) : error C1503: undefined variable
"key_light_direction"\\\n0(303) : error C1503: undefined variable
"key_light_specular_exponent"\\\n0(305) : error C1503: undefined variable
"key_light_diffuse_color"\\\n0(305) : error C1503: undefined variable
"fill_light_diffuse_color"\\\n0(305) : error C1503: undefined variable
"key_light_specular_color"\\\n0(306) : error C1503: undefined variable
"ambient_color"\\\n\'', [b'#version 330 core\n#define USE_VOLUME_RAYCASTING
1\n#define MAX_SHADOWS 1024\n// vim: set ft=glsl:\n\n/*\n * === UCSF ChimeraX
Copyright ===\n# Copyright 2022 Regents of the University of California. All
rights reserved.\n# The ChimeraX application is provided pursuant to the
ChimeraX license\n# agreement, which covers academic and commercial uses. For
more details, see\n#
<https://www.rbvi.ucsf.edu/chimerax/docs/licensing.html>\n#\n# This particular
file is part of the ChimeraX library. You can also\n# redistribute and/or
modify it under the terms of the GNU Lesser General\n# Public License version
2.1 as published by the Free Software Foundation.\n# For more details, see\n#
<https://www.gnu.org/licenses/old-licenses/lgpl-2.1.html>\n#\n# THIS SOFTWARE
IS PROVIDED "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER\n# EXPRESSED OR
IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES\n# OF
MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. ADDITIONAL LIABILITY\n#
LIMITATIONS ARE DESCRIBED IN THE GNU LESSER GENERAL PUBLIC LICENSE\n# VERSION
2.1\n#\n# This notice must be embedded in or attached to all copies, including
partial\n# copies, of the software or any revisions or derivations thereof.\n
* === UCSF ChimeraX Copyright ===\n */\n\n/*
----------------------------------------------------------------------------\n*
Various debugging shaders\n*/\n#ifdef USE_SHOW_DEPTH_BUFFER\nuniform sampler2D
depth_texture;\nin vec2 tex_coord_2d;\nout vec4 frag_color;\n\nvoid
main()\n{\n float c = texture(depth_texture, tex_coord_2d).x;\n frag_color =
vec4(c, c, c, 1.0);\n}\n\n/*
----------------------------------------------------------------------------\n*
Shader for drawing selection outlines.\n*/\n#elif
defined(USE_TEXTURE_OUTLINE)\n\nin vec2 tex_coord_2d;\nuniform sampler2D
tex2d;\nuniform vec4 color;\nuniform vec2 step;\nout vec4 frag_color;\n\nvoid
main (void)\n{\n float m0 = texture(tex2d, tex_coord_2d).r;\n if (m0 != 0)\n
discard;\n float mn = texture(tex2d, vec2(tex_coord_2d.s+step.s,
tex_coord_2d.t)).r;\n mn = max(mn, texture(tex2d, vec2(tex_coord_2d.s-step.s,
tex_coord_2d.t)).r);\n mn = max(mn, texture(tex2d, vec2(tex_coord_2d.s,
tex_coord_2d.t+step.t)).r);\n mn = max(mn, texture(tex2d, vec2(tex_coord_2d.s,
tex_coord_2d.t-step.t)).r);\n if (mn == 0)\n discard;\n frag_color =
color;\n}\n\n/*
----------------------------------------------------------------------------\n*
Shader for drawing silhouette edges.\n*/\n#elif
defined(USE_DEPTH_OUTLINE)\n\nin vec2 tex_coord_2d;\nuniform sampler2D
tex2d;\nuniform vec4 color;\nuniform vec2 jump;\t// depth jump and near/far
ratio.\nuniform vec3 step;\t// dx,dy,thickness\nout vec4 frag_color;\n\nvoid
main (void)\n{\n float d0 = texture(tex2d, tex_coord_2d).r;\n float ds = d0;\n
float thickness = step.p;\n int r = int(thickness);\n float r2 =
thickness*thickness;\n for (int i = -r ; i <= r ; ++i)\n for (int j = -r ; j
<= r ; ++j)\n if (i*i + j*j <= r2 && !(i == 0 && j == 0))\n ds = min(ds,
texture(tex2d, vec2(tex_coord_2d.s+i*step.s, tex_coord_2d.t+j*step.t)).r);\n
float nf = jump.t;\t// Correct depth compression based on perspective near/far
ratio.\n float nf1 = 1-nf;\n if (nf*(d0-ds) < jump.s * (1-nf1*ds) *
(1-nf1*d0))\n discard;\n frag_color = color;\n}\n\n/*
----------------------------------------------------------------------------\n*
Shader for blending textures for multichannel volume image
rendering.\n*/\n#elif defined(USE_BLEND_TEXTURE_2D) ||
defined(USE_BLEND_TEXTURE_3D)\n\nin vec2 tex_coord_2d;\n#ifdef
USE_BLEND_TEXTURE_2D\nuniform sampler2D tex2d;\n#else\nuniform sampler3D
tex3d;\nuniform float tex_coord_z;\n#endif\n\nuniform vec4 color;\t\t\t//
modulation color\n#ifdef USE_BLEND_COLORMAP\nuniform vec2
colormap_range;\t\t// offset and scale\nuniform sampler1D
colormap;\n#endif\nout vec4 frag_color;\n\nvoid main (void)\n{\n#ifdef
USE_BLEND_TEXTURE_2D\n#ifdef USE_BLEND_COLORMAP\n float tvalue =
(texture(tex2d, tex_coord_2d).r - colormap_range.x) * colormap_range.y;\n
frag_color = texture(colormap, tvalue) * color;\n#else\n frag_color =
texture(tex2d, tex_coord_2d) * color;\n#endif\n#endif\n#ifdef
USE_BLEND_TEXTURE_3D\n vec3 tex_coord_3d = vec3(tex_coord_2d,
tex_coord_z);\n#ifdef USE_BLEND_COLORMAP\n float tvalue = (texture(tex3d,
tex_coord_3d).r - colormap_range.x) * colormap_range.y;\n frag_color =
texture(colormap, tvalue) * color;\n#else\n frag_color = texture(tex3d,
tex_coord_3d) * color;\n#endif\n#endif\n}\n\n\n#else\n\n/*
----------------------------------------------------------------------------\n*
Shader for rendering scene with lighting.\n*/\n\n#if defined(USE_LIGHTING) ||
defined(USE_DEPTH_CUE)\nin vec3 v;\n#endif\n\n#ifdef
USE_LIGHTING\n\nlayout(std140) uniform lighting_block\n{\n vec3
key_light_direction;\n vec3 key_light_diffuse_color;\n vec3
key_light_specular_color;\n float key_light_specular_exponent;\n vec3
fill_light_direction;\n vec3 fill_light_diffuse_color;\n vec3
ambient_color;\n};\n\n#ifdef USE_LIGHTING_NORMALS\nin vec3
N;\n#endif\n\n#ifdef USE_STEREO_360\nin vec3 vshadow;\n#endif\n\n#ifdef
USE_SHADOW\nin vec3 shadow_tex_coord;\nuniform sampler2DShadow
shadow_map;\n#endif\n\n#ifdef USE_MULTISHADOW\n// in vec3 vscene;\n// in vec3
nscene;\nuniform sampler2DShadow multishadow_map;\nlayout(std140) uniform
shadow_matrix_block\n{\n mat4
shadow_transforms[MAX_SHADOWS];\n};\nuniform\tint shadow_count;\nuniform float
shadow_depth;\n#endif\n\n#endif // end USE_LIGHTING\n\n#ifdef
USE_DEPTH_CUE\nuniform vec3 depth_cue_color;\nuniform vec2
depth_cue_range;\t// start and end camera z values\n#endif\n\n#ifdef
USE_VERTEX_COLORS\nin vec4 color;\n#else\nuniform vec4
color;\n#endif\n\n#ifdef USE_TEXTURE_2D\nin vec2 tex_coord_2d;\nuniform
sampler2D tex2d;\n#endif\n\n#ifdef USE_TEXTURE_3D\nin vec3
tex_coord_3d;\nuniform sampler3D tex3d;\n#endif\n\n#ifdef
USE_VOLUME_RAYCASTING\n uniform float step_size;\n uniform vec3 camera_pos;\n
uniform float camera_fov;\n uniform vec2 window_size;\n uniform mat4
view_matrix;\n uniform vec4 background_color;\n uniform vec3 bbox_min;\n
uniform vec3 bbox_max;\n uniform vec3 full_region_min;\n uniform vec3
full_region_max;\n float PHI = 1.61803398874989484820459;\n\n float
gold_noise(in vec2 xy, in float seed){\n return fract(tan(distance(xy*PHI,
xy)*seed)*xy.x);\n }\n#endif\n\n#ifdef USE_COLORMAP\nuniform vec2
colormap_range;\t\t// offset and scale\nuniform sampler1D
colormap;\n#endif\n\n#ifdef USE_DEPTH_TEXTURE\nuniform vec2
tex_depth_projection;\t// near, far/(far-near)\nuniform vec3
tex_depth_scale;\t\t// tex coord xscale, yscale and value zscale\nuniform
sampler2D tex_depth_2d;\n#endif\n\n#ifdef USE_TEXTURE_CUBEMAP\nin vec3
tex_coord_cubemap;\nuniform samplerCube texcube;\n#endif\n\n#ifdef
USE_TEXTURE_3D_AMBIENT\nin vec3 ambient_tex_coord;\nuniform sampler3D
tex3d;\n#endif\n\nout vec4 frag_color;\n\nvoid main (void)\n{\n#ifdef
USE_VOLUME_RAYCASTING\n float aspect_ratio = window_size.x / window_size.y;\n
float focal_length = 1.0 / tan(radians(camera_fov / 2.0));\n vec3 ray_origin =
camera_pos;\n vec3 ray_direction;\n ray_direction.xy = 2.0 * gl_FragCoord.xy /
window_size - 1.0;\n ray_direction.y /= aspect_ratio;\n ray_direction.z =
-focal_length;\n ray_direction = (vec4(ray_direction, 0.0) *
view_matrix).xyz;\n\n vec3 direction_inv = 1.0 / ray_direction;\n vec3
t_bottom = direction_inv * (bbox_min - ray_origin);\n vec3 t_top =
direction_inv * (bbox_max - ray_origin);\n\n vec3 t_min = min(t_top,
t_bottom);\n vec3 t_max = max(t_top, t_bottom);\n\n float t_0 = max(t_min.x,
max(t_min.y, t_min.z));\n float t_1 = min(t_max.x, min(t_max.y, t_max.z));\n\n
if (t_0 > t_1) {\n discard;\n }\n\n // Centers the volume in the box\n vec3
ray_start = (ray_origin + ray_direction * t_0 - full_region_min) /
(full_region_max - full_region_min);\n vec3 ray_stop = (ray_origin +
ray_direction * t_1 - full_region_min) / (full_region_max -
full_region_min);\n\n vec3 ray = ray_stop - ray_start;\n float ray_length =
length(ray);\n //float step_length = length(ssize);\n float step_length =
step_size; //min(step_size.x, min(step_size.y, step_size.z));\n vec3
step_vector = step_length * ray / ray_length;\n float jitter =
gold_noise(gl_FragCoord.xy, 0.9) * 0.5;\n vec3 position = tex_coord_3d +
(step_vector * jitter);\n frag_color = vec4(0);\n while(ray_length > 0 &&
frag_color.a < 1) {\n float intensity = (texture(tex3d, position).r -
colormap_range.x) * colormap_range.y;\n vec4 cmap_color = texture(colormap,
intensity) * color;\n vec3 gradientVec = normalize(vec3(\n texture(tex3d,
position + vec3(step_length, 0.0, 0.0)).r - texture(tex3d, position -
vec3(step_length, 0.0, 0.0)).r,\n texture(tex3d, position + vec3(0.0,
step_length, 0.0)).r - texture(tex3d, position - vec3(0.0, step_length,
0.0)).r,\n texture(tex3d, position + vec3(0.0, 0.0, step_length)).r -
texture(tex3d, position - vec3(0.0, 0.0, step_length)).r\n ));\n\n float
keyDiffuse = max(0.0, -dot(gradientVec, key_light_direction));\n float
fillDiffuse = max(0.0, -dot(gradientVec, fill_light_direction));\n vec3 R =
normalize(reflect(key_light_direction,gradientVec));\n float specular_factor =
pow(max(-dot(R,normalize(ray_direction)),0.0),
key_light_specular_exponent);\n\n vec3 lightColor = keyDiffuse *
key_light_diffuse_color + fillDiffuse * fill_light_diffuse_color +
key_light_specular_color * specular_factor;\n lightColor += cmap_color.rgb *
ambient_color;\n cmap_color *= vec4(lightColor,1);\n\n\n // Accumulate color
and opacity\n frag_color += (1.0 - frag_color.a) * cmap_color;\n\n // Alpha
correction for step sizes other than 0.001\n frag_color.a = 1 - pow(1 -
frag_color.a, step_length / 0.001);\n\n ray_length -= step_length;\n position
+= step_vector;\n if(\n (position.x < 0.0) || (position.x > 1.0) ||\n
(position.y < 0.0) || (position.y > 1.0) ||\n (position.z < 0.0) ||
(position.z > 1.0)\n ) {\n break;\n }\n }\n frag_color += (1.0 - frag_color.a)
* background_color;\n}\n#else\n #ifdef USE_DEPTH_TEXTURE\n // Adjust depth of
each fragment in rendering a texture.\n float xscale = tex_depth_scale.x,
yscale = tex_depth_scale.y, dscale = tex_depth_scale.z;\n float zt =
texture(tex_depth_2d, vec2(0.5+xscale*(tex_coord_2d.x-0.5),
0.5+yscale*(tex_coord_2d.y-0.5))).x;\n zt = (zt == 0 ? 1 : zt); // Depth 0
means unknown depth, change to maximum depth\n float znear =
tex_depth_projection.x, fdfmn = tex_depth_projection.y;\n float zs =
max(znear, zt*dscale);\n gl_FragDepth = min(.99999, fdfmn * (zs - znear) /
zs);\n #endif\n\n #ifdef USE_TEXTURE_2D\n #ifdef USE_COLORMAP\n float tvalue =
(texture(tex2d, tex_coord_2d).r - colormap_range.x) * colormap_range.y;\n vec4
fcolor = texture(colormap, tvalue) * color;\n #else\n vec4 fcolor =
texture(tex2d, tex_coord_2d) * color;\n #endif\n #else\n #ifdef
USE_TEXTURE_3D\n #ifdef USE_COLORMAP\n float tvalue = (texture(tex3d,
tex_coord_3d).r - colormap_range.x) * colormap_range.y;\n vec4 fcolor =
texture(colormap, tvalue) * color;\n #else\n vec4 fcolor = texture(tex3d,
tex_coord_3d) * color;\n #endif\n #else\n #ifdef USE_TEXTURE_CUBEMAP\n vec4
fcolor = texture(texcube, tex_coord_cubemap) * color;\n #else\n #ifdef
USE_ALL_WHITE\n vec4 fcolor = vec4(1,1,1,1);\n #else\n vec4 fcolor = color;\n
#endif\n #endif\n #endif\n #endif\n\n #ifdef USE_TRANSPARENT_ONLY\n if
(fcolor.a >= 0.99)\n discard;\n #endif\n\n #ifdef USE_OPAQUE_ONLY\n if
(fcolor.a < .99)\n discard;\n #endif\n\n #ifdef USE_ALPHA_DEPTH\n gl_FragDepth
= 0.99999 * fcolor.a; // Depth 1 is clipped.\n #endif\n\n #ifdef
USE_LIGHTING\n\n #ifdef USE_LIGHTING_NORMALS\n // Unit normal, with two-sided
lighting.\n vec3 N1 = normalize(N) * (gl_FrontFacing ? 1.0 : -1.0);\n // vec3
N1 = normalize(N); // single-sided lighting\n\n // Unit vector from camera to
surface point.\n vec3 v1 = normalize(v);\n\n float key_factor =
max(-dot(N1,key_light_direction),0.0);\n float fill_factor =
max(-dot(N1,fill_light_direction),0.0);\n vec3 R =
normalize(reflect(key_light_direction,N1));\n float specular_factor =
pow(max(-dot(R,v1),0.0), key_light_specular_exponent);\n #else\n float
key_factor = 1;\n float fill_factor = 1;\n float specular_factor = 0;\n
#endif\n\n #ifdef USE_SHADOW\n float shadow = texture(shadow_map,
shadow_tex_coord);\n #else\n float shadow = 1;\n #endif\n\n // diffuse color,
radiated equally in all directions,\n // strength based on incoming light
direction and surface normal.\n vec3 Idiff = fcolor.rgb *
(key_light_diffuse_color * key_factor * shadow\n + fill_light_diffuse_color *
fill_factor);\n\n // specular color, reflection of incoming light towards the
camera.\n vec3 Ispec = key_light_specular_color * specular_factor *
shadow;\n\n #ifdef USE_MULTISHADOW\n\n float mshadow = 0;\n for (int i = 0 ; i
< shadow_count ; ++i)\n {\n mat4 stf = shadow_transforms[i];\n #ifdef
USE_STEREO_360\n vec3 shadow_tex_coord = (stf*vec4(vshadow,1)).stp;\n #else\n
vec3 shadow_tex_coord = (stf*vec4(v,1)).stp;\n // vec3 shadow_tex_coord =
(stf*vec4(vscene,1)).stp;\n #endif\n #ifdef USE_LIGHTING_NORMALS\n vec3
light_direction = shadow_depth * vec3(stf[0][2], stf[1][2], stf[2][2]);\n
float diffuse = max(-dot(N1,light_direction),0.0);\n \t // float diffuse =
max(-dot(nscene,light_direction),0.0);\n #else\n float diffuse = 0.25;\n
#endif\n mshadow += diffuse * texture(multishadow_map, shadow_tex_coord);\n
}\n mshadow /= 0.25*shadow_count;\n vec3 Iamb = fcolor.rgb * ambient_color *
mshadow;\n\n #else\n\n // ambient color, uniform intensity light from all
surfaces.\n vec3 Iamb = fcolor.rgb * ambient_color;\n\n #endif\n\n // total
color\n vec3 Ifrag = Iamb + Idiff + Ispec;\n\n #ifdef USE_TEXTURE_3D_AMBIENT\n
Ifrag *= texture(tex3d, ambient_tex_coord).r;\n #endif\n\n #else // not
USE_LIGHTING\n\n vec3 Ifrag = fcolor.rgb;\n\n #endif // end USE_LIGHTING\n\n
#ifdef USE_DEPTH_CUE\n float d = -v.z;\t// Distance from eye to fragment.\n
float dim = (depth_cue_range.y - d) / (depth_cue_range.y -
depth_cue_range.x);\n Ifrag = mix(depth_cue_color, Ifrag,
clamp(dim,0.0,1.0));\n #endif\n\n // transparency\n float a = fcolor.a;\n
#ifdef USE_LIGHTING\n #ifdef USE_LIGHTING_NORMALS\n a = (a >= 1 ? 1.0 : 1.0 -
pow(max(1.0-a,0.0), 1.0/max(abs(dot(v1,N1)),0.01)));\n #endif\n #endif\n\n //
final color\n frag_color = vec4(Ifrag, a);\n}\n#endif\n#endif\n'],
GL_FRAGMENT_SHADER)  
  
During handling of the above exception, another exception occurred:  
  
Traceback (most recent call last):  
File "/eml0/UserHome/xyan/my_rpm/usr/libexec/UCSF-
ChimeraX/lib/python3.11/site-packages/chimerax/core/updateloop.py", line 84,
in draw_new_frame  
view.draw(check_for_changes = False)  
File "/eml0/UserHome/xyan/my_rpm/usr/libexec/UCSF-
ChimeraX/lib/python3.11/site-packages/chimerax/graphics/view.py", line 188, in
draw  
self._draw_scene(camera, drawings)  
File "/eml0/UserHome/xyan/my_rpm/usr/libexec/UCSF-
ChimeraX/lib/python3.11/site-packages/chimerax/graphics/view.py", line 227, in
_draw_scene  
shadow, multishadow = self._compute_shadowmaps(opaque_drawings,
transparent_drawings, camera)  
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^  
File "/eml0/UserHome/xyan/my_rpm/usr/libexec/UCSF-
ChimeraX/lib/python3.11/site-packages/chimerax/graphics/view.py", line 632, in
_compute_shadowmaps  
multishadow_enabled = r.multishadow.use_multishadow_map(shadow_drawings)  
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^  
File "/eml0/UserHome/xyan/my_rpm/usr/libexec/UCSF-
ChimeraX/lib/python3.11/site-packages/chimerax/graphics/opengl.py", line 1727,
in use_multishadow_map  
draw_depth(r, sdrawings, opaque_only = not mat.transparent_cast_shadows)  
File "/eml0/UserHome/xyan/my_rpm/usr/libexec/UCSF-
ChimeraX/lib/python3.11/site-packages/chimerax/graphics/drawing.py", line
1579, in draw_depth  
draw_opaque(r, drawings)  
File "/eml0/UserHome/xyan/my_rpm/usr/libexec/UCSF-
ChimeraX/lib/python3.11/site-packages/chimerax/graphics/drawing.py", line
1554, in draw_opaque  
_draw_multiple(drawings, renderer, Drawing.OPAQUE_DRAW_PASS)  
File "/eml0/UserHome/xyan/my_rpm/usr/libexec/UCSF-
ChimeraX/lib/python3.11/site-packages/chimerax/graphics/drawing.py", line
1567, in _draw_multiple  
d.draw(renderer, draw_pass)  
File "/eml0/UserHome/xyan/my_rpm/usr/libexec/UCSF-
ChimeraX/lib/python3.11/site-packages/chimerax/map/image3d.py", line 941, in
draw  
self._draw_planes(renderer, draw_pass, dtransp, drawing)  
File "/eml0/UserHome/xyan/my_rpm/usr/libexec/UCSF-
ChimeraX/lib/python3.11/site-packages/chimerax/map/image3d.py", line 960, in
_draw_planes  
drawing.draw(r, draw_pass)  
File "/eml0/UserHome/xyan/my_rpm/usr/libexec/UCSF-
ChimeraX/lib/python3.11/site-packages/chimerax/map/image3d.py", line 1278, in
draw  
Drawing.draw(self, renderer, draw_pass)  
File "/eml0/UserHome/xyan/my_rpm/usr/libexec/UCSF-
ChimeraX/lib/python3.11/site-packages/chimerax/graphics/drawing.py", line 780,
in draw  
self.draw_self(renderer, draw_pass)  
File "/eml0/UserHome/xyan/my_rpm/usr/libexec/UCSF-
ChimeraX/lib/python3.11/site-packages/chimerax/graphics/drawing.py", line 787,
in draw_self  
self._draw_geometry(renderer, opaque_only = any_transp)  
File "/eml0/UserHome/xyan/my_rpm/usr/libexec/UCSF-
ChimeraX/lib/python3.11/site-packages/chimerax/graphics/drawing.py", line 818,
in _draw_geometry  
shader = r.shader(sopt)  
^^^^^^^^^^^^^^  
File "/eml0/UserHome/xyan/my_rpm/usr/libexec/UCSF-
ChimeraX/lib/python3.11/site-packages/chimerax/graphics/opengl.py", line 703,
in shader  
p = self._opengl_shader(options)  
^^^^^^^^^^^^^^^^^^^^^^^^^^^^  
File "/eml0/UserHome/xyan/my_rpm/usr/libexec/UCSF-
ChimeraX/lib/python3.11/site-packages/chimerax/graphics/opengl.py", line 805,
in _opengl_shader  
p = Shader(capabilities = capabilities, max_shadows =
self.multishadow.max_multishadows())  
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^  
File "/eml0/UserHome/xyan/my_rpm/usr/libexec/UCSF-
ChimeraX/lib/python3.11/site-packages/chimerax/graphics/opengl.py", line 2886,
in __init__  
self.program_id = self.compile_shader(vertex_shader_path,
fragment_shader_path,  
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^  
File "/eml0/UserHome/xyan/my_rpm/usr/libexec/UCSF-
ChimeraX/lib/python3.11/site-packages/chimerax/graphics/opengl.py", line 2948,
in compile_shader  
raise OpenGLError(str(e))  
chimerax.graphics.opengl.OpenGLError: ('Shader compile failure (0): b\'0(289)
: error C1503: undefined variable "tex_coord_3d"\\\n0(292) : error C1503:
undefined variable "tex3d"\\\n0(292) : error C1503: undefined variable
"colormap_range"\\\n0(292) : error C1503: undefined variable
"colormap_range"\\\n0(293) : error C1503: undefined variable
"colormap"\\\n0(295) : error C1503: undefined variable "tex3d"\\\n0(295) :
error C1503: undefined variable "tex3d"\\\n0(296) : error C1503: undefined
variable "tex3d"\\\n0(296) : error C1503: undefined variable "tex3d"\\\n0(297)
: error C1503: undefined variable "tex3d"\\\n0(297) : error C1503: undefined
variable "tex3d"\\\n0(300) : error C1503: undefined variable
"key_light_direction"\\\n0(301) : error C1503: undefined variable
"fill_light_direction"\\\n0(302) : error C1503: undefined variable
"key_light_direction"\\\n0(303) : error C1503: undefined variable
"key_light_specular_exponent"\\\n0(305) : error C1503: undefined variable
"key_light_diffuse_color"\\\n0(305) : error C1503: undefined variable
"fill_light_diffuse_color"\\\n0(305) : error C1503: undefined variable
"key_light_specular_color"\\\n0(306) : error C1503: undefined variable
"ambient_color"\\\n\'', [b'#version 330 core\n#define USE_VOLUME_RAYCASTING
1\n#define MAX_SHADOWS 1024\n// vim: set ft=glsl:\n\n/*\n * === UCSF ChimeraX
Copyright ===\n# Copyright 2022 Regents of the University of California. All
rights reserved.\n# The ChimeraX application is provided pursuant to the
ChimeraX license\n# agreement, which covers academic and commercial uses. For
more details, see\n#
<https://www.rbvi.ucsf.edu/chimerax/docs/licensing.html>\n#\n# This particular
file is part of the ChimeraX library. You can also\n# redistribute and/or
modify it under the terms of the GNU Lesser General\n# Public License version
2.1 as published by the Free Software Foundation.\n# For more details, see\n#
<https://www.gnu.org/licenses/old-licenses/lgpl-2.1.html>\n#\n# THIS SOFTWARE
IS PROVIDED "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER\n# EXPRESSED OR
IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES\n# OF
MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. ADDITIONAL LIABILITY\n#
LIMITATIONS ARE DESCRIBED IN THE GNU LESSER GENERAL PUBLIC LICENSE\n# VERSION
2.1\n#\n# This notice must be embedded in or attached to all copies, including
partial\n# copies, of the software or any revisions or derivations thereof.\n
* === UCSF ChimeraX Copyright ===\n */\n\n/*
----------------------------------------------------------------------------\n*
Various debugging shaders\n*/\n#ifdef USE_SHOW_DEPTH_BUFFER\nuniform sampler2D
depth_texture;\nin vec2 tex_coord_2d;\nout vec4 frag_color;\n\nvoid
main()\n{\n float c = texture(depth_texture, tex_coord_2d).x;\n frag_color =
vec4(c, c, c, 1.0);\n}\n\n/*
----------------------------------------------------------------------------\n*
Shader for drawing selection outlines.\n*/\n#elif
defined(USE_TEXTURE_OUTLINE)\n\nin vec2 tex_coord_2d;\nuniform sampler2D
tex2d;\nuniform vec4 color;\nuniform vec2 step;\nout vec4 frag_color;\n\nvoid
main (void)\n{\n float m0 = texture(tex2d, tex_coord_2d).r;\n if (m0 != 0)\n
discard;\n float mn = texture(tex2d, vec2(tex_coord_2d.s+step.s,
tex_coord_2d.t)).r;\n mn = max(mn, texture(tex2d, vec2(tex_coord_2d.s-step.s,
tex_coord_2d.t)).r);\n mn = max(mn, texture(tex2d, vec2(tex_coord_2d.s,
tex_coord_2d.t+step.t)).r);\n mn = max(mn, texture(tex2d, vec2(tex_coord_2d.s,
tex_coord_2d.t-step.t)).r);\n if (mn == 0)\n discard;\n frag_color =
color;\n}\n\n/*
----------------------------------------------------------------------------\n*
Shader for drawing silhouette edges.\n*/\n#elif
defined(USE_DEPTH_OUTLINE)\n\nin vec2 tex_coord_2d;\nuniform sampler2D
tex2d;\nuniform vec4 color;\nuniform vec2 jump;\t// depth jump and near/far
ratio.\nuniform vec3 step;\t// dx,dy,thickness\nout vec4 frag_color;\n\nvoid
main (void)\n{\n float d0 = texture(tex2d, tex_coord_2d).r;\n float ds = d0;\n
float thickness = step.p;\n int r = int(thickness);\n float r2 =
thickness*thickness;\n for (int i = -r ; i <= r ; ++i)\n for (int j = -r ; j
<= r ; ++j)\n if (i*i + j*j <= r2 && !(i == 0 && j == 0))\n ds = min(ds,
texture(tex2d, vec2(tex_coord_2d.s+i*step.s, tex_coord_2d.t+j*step.t)).r);\n
float nf = jump.t;\t// Correct depth compression based on perspective near/far
ratio.\n float nf1 = 1-nf;\n if (nf*(d0-ds) < jump.s * (1-nf1*ds) *
(1-nf1*d0))\n discard;\n frag_color = color;\n}\n\n/*
----------------------------------------------------------------------------\n*
Shader for blending textures for multichannel volume image
rendering.\n*/\n#elif defined(USE_BLEND_TEXTURE_2D) ||
defined(USE_BLEND_TEXTURE_3D)\n\nin vec2 tex_coord_2d;\n#ifdef
USE_BLEND_TEXTURE_2D\nuniform sampler2D tex2d;\n#else\nuniform sampler3D
tex3d;\nuniform float tex_coord_z;\n#endif\n\nuniform vec4 color;\t\t\t//
modulation color\n#ifdef USE_BLEND_COLORMAP\nuniform vec2
colormap_range;\t\t// offset and scale\nuniform sampler1D
colormap;\n#endif\nout vec4 frag_color;\n\nvoid main (void)\n{\n#ifdef
USE_BLEND_TEXTURE_2D\n#ifdef USE_BLEND_COLORMAP\n float tvalue =
(texture(tex2d, tex_coord_2d).r - colormap_range.x) * colormap_range.y;\n
frag_color = texture(colormap, tvalue) * color;\n#else\n frag_color =
texture(tex2d, tex_coord_2d) * color;\n#endif\n#endif\n#ifdef
USE_BLEND_TEXTURE_3D\n vec3 tex_coord_3d = vec3(tex_coord_2d,
tex_coord_z);\n#ifdef USE_BLEND_COLORMAP\n float tvalue = (texture(tex3d,
tex_coord_3d).r - colormap_range.x) * colormap_range.y;\n frag_color =
texture(colormap, tvalue) * color;\n#else\n frag_color = texture(tex3d,
tex_coord_3d) * color;\n#endif\n#endif\n}\n\n\n#else\n\n/*
----------------------------------------------------------------------------\n*
Shader for rendering scene with lighting.\n*/\n\n#if defined(USE_LIGHTING) ||
defined(USE_DEPTH_CUE)\nin vec3 v;\n#endif\n\n#ifdef
USE_LIGHTING\n\nlayout(std140) uniform lighting_block\n{\n vec3
key_light_direction;\n vec3 key_light_diffuse_color;\n vec3
key_light_specular_color;\n float key_light_specular_exponent;\n vec3
fill_light_direction;\n vec3 fill_light_diffuse_color;\n vec3
ambient_color;\n};\n\n#ifdef USE_LIGHTING_NORMALS\nin vec3
N;\n#endif\n\n#ifdef USE_STEREO_360\nin vec3 vshadow;\n#endif\n\n#ifdef
USE_SHADOW\nin vec3 shadow_tex_coord;\nuniform sampler2DShadow
shadow_map;\n#endif\n\n#ifdef USE_MULTISHADOW\n// in vec3 vscene;\n// in vec3
nscene;\nuniform sampler2DShadow multishadow_map;\nlayout(std140) uniform
shadow_matrix_block\n{\n mat4
shadow_transforms[MAX_SHADOWS];\n};\nuniform\tint shadow_count;\nuniform float
shadow_depth;\n#endif\n\n#endif // end USE_LIGHTING\n\n#ifdef
USE_DEPTH_CUE\nuniform vec3 depth_cue_color;\nuniform vec2
depth_cue_range;\t// start and end camera z values\n#endif\n\n#ifdef
USE_VERTEX_COLORS\nin vec4 color;\n#else\nuniform vec4
color;\n#endif\n\n#ifdef USE_TEXTURE_2D\nin vec2 tex_coord_2d;\nuniform
sampler2D tex2d;\n#endif\n\n#ifdef USE_TEXTURE_3D\nin vec3
tex_coord_3d;\nuniform sampler3D tex3d;\n#endif\n\n#ifdef
USE_VOLUME_RAYCASTING\n uniform float step_size;\n uniform vec3 camera_pos;\n
uniform float camera_fov;\n uniform vec2 window_size;\n uniform mat4
view_matrix;\n uniform vec4 background_color;\n uniform vec3 bbox_min;\n
uniform vec3 bbox_max;\n uniform vec3 full_region_min;\n uniform vec3
full_region_max;\n float PHI = 1.61803398874989484820459;\n\n float
gold_noise(in vec2 xy, in float seed){\n return fract(tan(distance(xy*PHI,
xy)*seed)*xy.x);\n }\n#endif\n\n#ifdef USE_COLORMAP\nuniform vec2
colormap_range;\t\t// offset and scale\nuniform sampler1D
colormap;\n#endif\n\n#ifdef USE_DEPTH_TEXTURE\nuniform vec2
tex_depth_projection;\t// near, far/(far-near)\nuniform vec3
tex_depth_scale;\t\t// tex coord xscale, yscale and value zscale\nuniform
sampler2D tex_depth_2d;\n#endif\n\n#ifdef USE_TEXTURE_CUBEMAP\nin vec3
tex_coord_cubemap;\nuniform samplerCube texcube;\n#endif\n\n#ifdef
USE_TEXTURE_3D_AMBIENT\nin vec3 ambient_tex_coord;\nuniform sampler3D
tex3d;\n#endif\n\nout vec4 frag_color;\n\nvoid main (void)\n{\n#ifdef
USE_VOLUME_RAYCASTING\n float aspect_ratio = window_size.x / window_size.y;\n
float focal_length = 1.0 / tan(radians(camera_fov / 2.0));\n vec3 ray_origin =
camera_pos;\n vec3 ray_direction;\n ray_direction.xy = 2.0 * gl_FragCoord.xy /
window_size - 1.0;\n ray_direction.y /= aspect_ratio;\n ray_direction.z =
-focal_length;\n ray_direction = (vec4(ray_direction, 0.0) *
view_matrix).xyz;\n\n vec3 direction_inv = 1.0 / ray_direction;\n vec3
t_bottom = direction_inv * (bbox_min - ray_origin);\n vec3 t_top =
direction_inv * (bbox_max - ray_origin);\n\n vec3 t_min = min(t_top,
t_bottom);\n vec3 t_max = max(t_top, t_bottom);\n\n float t_0 = max(t_min.x,
max(t_min.y, t_min.z));\n float t_1 = min(t_max.x, min(t_max.y, t_max.z));\n\n
if (t_0 > t_1) {\n discard;\n }\n\n // Centers the volume in the box\n vec3
ray_start = (ray_origin + ray_direction * t_0 - full_region_min) /
(full_region_max - full_region_min);\n vec3 ray_stop = (ray_origin +
ray_direction * t_1 - full_region_min) / (full_region_max -
full_region_min);\n\n vec3 ray = ray_stop - ray_start;\n float ray_length =
length(ray);\n //float step_length = length(ssize);\n float step_length =
step_size; //min(step_size.x, min(step_size.y, step_size.z));\n vec3
step_vector = step_length * ray / ray_length;\n float jitter =
gold_noise(gl_FragCoord.xy, 0.9) * 0.5;\n vec3 position = tex_coord_3d +
(step_vector * jitter);\n frag_color = vec4(0);\n while(ray_length > 0 &&
frag_color.a < 1) {\n float intensity = (texture(tex3d, position).r -
colormap_range.x) * colormap_range.y;\n vec4 cmap_color = texture(colormap,
intensity) * color;\n vec3 gradientVec = normalize(vec3(\n texture(tex3d,
position + vec3(step_length, 0.0, 0.0)).r - texture(tex3d, position -
vec3(step_length, 0.0, 0.0)).r,\n texture(tex3d, position + vec3(0.0,
step_length, 0.0)).r - texture(tex3d, position - vec3(0.0, step_length,
0.0)).r,\n texture(tex3d, position + vec3(0.0, 0.0, step_length)).r -
texture(tex3d, position - vec3(0.0, 0.0, step_length)).r\n ));\n\n float
keyDiffuse = max(0.0, -dot(gradientVec, key_light_direction));\n float
fillDiffuse = max(0.0, -dot(gradientVec, fill_light_direction));\n vec3 R =
normalize(reflect(key_light_direction,gradientVec));\n float specular_factor =
pow(max(-dot(R,normalize(ray_direction)),0.0),
key_light_specular_exponent);\n\n vec3 lightColor = keyDiffuse *
key_light_diffuse_color + fillDiffuse * fill_light_diffuse_color +
key_light_specular_color * specular_factor;\n lightColor += cmap_color.rgb *
ambient_color;\n cmap_color *= vec4(lightColor,1);\n\n\n // Accumulate color
and opacity\n frag_color += (1.0 - frag_color.a) * cmap_color;\n\n // Alpha
correction for step sizes other than 0.001\n frag_color.a = 1 - pow(1 -
frag_color.a, step_length / 0.001);\n\n ray_length -= step_length;\n position
+= step_vector;\n if(\n (position.x < 0.0) || (position.x > 1.0) ||\n
(position.y < 0.0) || (position.y > 1.0) ||\n (position.z < 0.0) ||
(position.z > 1.0)\n ) {\n break;\n }\n }\n frag_color += (1.0 - frag_color.a)
* background_color;\n}\n#else\n #ifdef USE_DEPTH_TEXTURE\n // Adjust depth of
each fragment in rendering a texture.\n float xscale = tex_depth_scale.x,
yscale = tex_depth_scale.y, dscale = tex_depth_scale.z;\n float zt =
texture(tex_depth_2d, vec2(0.5+xscale*(tex_coord_2d.x-0.5),
0.5+yscale*(tex_coord_2d.y-0.5))).x;\n zt = (zt == 0 ? 1 : zt); // Depth 0
means unknown depth, change to maximum depth\n float znear =
tex_depth_projection.x, fdfmn = tex_depth_projection.y;\n float zs =
max(znear, zt*dscale);\n gl_FragDepth = min(.99999, fdfmn * (zs - znear) /
zs);\n #endif\n\n #ifdef USE_TEXTURE_2D\n #ifdef USE_COLORMAP\n float tvalue =
(texture(tex2d, tex_coord_2d).r - colormap_range.x) * colormap_range.y;\n vec4
fcolor = texture(colormap, tvalue) * color;\n #else\n vec4 fcolor =
texture(tex2d, tex_coord_2d) * color;\n #endif\n #else\n #ifdef
USE_TEXTURE_3D\n #ifdef USE_COLORMAP\n float tvalue = (texture(tex3d,
tex_coord_3d).r - colormap_range.x) * colormap_range.y;\n vec4 fcolor =
texture(colormap, tvalue) * color;\n #else\n vec4 fcolor = texture(tex3d,
tex_coord_3d) * color;\n #endif\n #else\n #ifdef USE_TEXTURE_CUBEMAP\n vec4
fcolor = texture(texcube, tex_coord_cubemap) * color;\n #else\n #ifdef
USE_ALL_WHITE\n vec4 fcolor = vec4(1,1,1,1);\n #else\n vec4 fcolor = color;\n
#endif\n #endif\n #endif\n #endif\n\n #ifdef USE_TRANSPARENT_ONLY\n if
(fcolor.a >= 0.99)\n discard;\n #endif\n\n #ifdef USE_OPAQUE_ONLY\n if
(fcolor.a < .99)\n discard;\n #endif\n\n #ifdef USE_ALPHA_DEPTH\n gl_FragDepth
= 0.99999 * fcolor.a; // Depth 1 is clipped.\n #endif\n\n #ifdef
USE_LIGHTING\n\n #ifdef USE_LIGHTING_NORMALS\n // Unit normal, with two-sided
lighting.\n vec3 N1 = normalize(N) * (gl_FrontFacing ? 1.0 : -1.0);\n // vec3
N1 = normalize(N); // single-sided lighting\n\n // Unit vector from camera to
surface point.\n vec3 v1 = normalize(v);\n\n float key_factor =
max(-dot(N1,key_light_direction),0.0);\n float fill_factor =
max(-dot(N1,fill_light_direction),0.0);\n vec3 R =
normalize(reflect(key_light_direction,N1));\n float specular_factor =
pow(max(-dot(R,v1),0.0), key_light_specular_exponent);\n #else\n float
key_factor = 1;\n float fill_factor = 1;\n float specular_factor = 0;\n
#endif\n\n #ifdef USE_SHADOW\n float shadow = texture(shadow_map,
shadow_tex_coord);\n #else\n float shadow = 1;\n #endif\n\n // diffuse color,
radiated equally in all directions,\n // strength based on incoming light
direction and surface normal.\n vec3 Idiff = fcolor.rgb *
(key_light_diffuse_color * key_factor * shadow\n + fill_light_diffuse_color *
fill_factor);\n\n // specular color, reflection of incoming light towards the
camera.\n vec3 Ispec = key_light_specular_color * specular_factor *
shadow;\n\n #ifdef USE_MULTISHADOW\n\n float mshadow = 0;\n for (int i = 0 ; i
< shadow_count ; ++i)\n {\n mat4 stf = shadow_transforms[i];\n #ifdef
USE_STEREO_360\n vec3 shadow_tex_coord = (stf*vec4(vshadow,1)).stp;\n #else\n
vec3 shadow_tex_coord = (stf*vec4(v,1)).stp;\n // vec3 shadow_tex_coord =
(stf*vec4(vscene,1)).stp;\n #endif\n #ifdef USE_LIGHTING_NORMALS\n vec3
light_direction = shadow_depth * vec3(stf[0][2], stf[1][2], stf[2][2]);\n
float diffuse = max(-dot(N1,light_direction),0.0);\n \t // float diffuse =
max(-dot(nscene,light_direction),0.0);\n #else\n float diffuse = 0.25;\n
#endif\n mshadow += diffuse * texture(multishadow_map, shadow_tex_coord);\n
}\n mshadow /= 0.25*shadow_count;\n vec3 Iamb = fcolor.rgb * ambient_color *
mshadow;\n\n #else\n\n // ambient color, uniform intensity light from all
surfaces.\n vec3 Iamb = fcolor.rgb * ambient_color;\n\n #endif\n\n // total
color\n vec3 Ifrag = Iamb + Idiff + Ispec;\n\n #ifdef USE_TEXTURE_3D_AMBIENT\n
Ifrag *= texture(tex3d, ambient_tex_coord).r;\n #endif\n\n #else // not
USE_LIGHTING\n\n vec3 Ifrag = fcolor.rgb;\n\n #endif // end USE_LIGHTING\n\n
#ifdef USE_DEPTH_CUE\n float d = -v.z;\t// Distance from eye to fragment.\n
float dim = (depth_cue_range.y - d) / (depth_cue_range.y -
depth_cue_range.x);\n Ifrag = mix(depth_cue_color, Ifrag,
clamp(dim,0.0,1.0));\n #endif\n\n // transparency\n float a = fcolor.a;\n
#ifdef USE_LIGHTING\n #ifdef USE_LIGHTING_NORMALS\n a = (a >= 1 ? 1.0 : 1.0 -
pow(max(1.0-a,0.0), 1.0/max(abs(dot(v1,N1)),0.01)));\n #endif\n #endif\n\n //
final color\n frag_color = vec4(Ifrag, a);\n}\n#endif\n#endif\n'],
GL_FRAGMENT_SHADER)  
  




OpenGL version: 3.3.0 NVIDIA 560.35.05
OpenGL renderer: Quadro P620/PCIe/SSE2
OpenGL vendor: NVIDIA Corporation

Python: 3.11.4
Locale: en_US.UTF-8
Qt version: PyQt6 6.7.1, Qt 6.7.1
Qt runtime version: 6.7.3
Qt platform: xcb

XDG_SESSION_TYPE=x11
DESKTOP_SESSION=gnome
XDG_SESSION_DESKTOP=gnome
XDG_CURRENT_DESKTOP=GNOME
DISPLAY=:1
Manufacturer: Dell Inc.
Model: Precision 7920 Tower
OS: Rocky Linux 9.5
Architecture: 64bit ELF
Virtual Machine: none
CPU: 56 Intel(R) Xeon(R) Gold 6132 CPU @ 2.60GHz
Cache Size: 19712 KB
Memory:
	               total        used        free      shared  buff/cache   available
	Mem:           125Gi       7.3Gi        98Gi       547Mi        20Gi       118Gi
	Swap:           63Gi          0B        63Gi

Graphics:
	03:00.0 VGA compatible controller [0300]: NVIDIA Corporation GP107GL [Quadro P620] [10de:1cb6] (rev a1)	
	Subsystem: Dell Device [1028:1264]	
	Kernel driver in use: nvidia

Installed Packages:
    alabaster: 1.0.0
    anyio: 4.7.0
    appdirs: 1.4.4
    asttokens: 3.0.0
    auditwheel: 6.1.0
    babel: 2.16.0
    beautifulsoup4: 4.12.3
    blockdiag: 3.0.0
    blosc2: 3.0.0
    build: 1.2.1
    certifi: 2024.8.30
    cftime: 1.6.4.post1
    charset-normalizer: 3.4.0
    ChimeraX-AddCharge: 1.5.18
    ChimeraX-AddH: 2.2.6
    ChimeraX-AlignmentAlgorithms: 2.0.2
    ChimeraX-AlignmentHdrs: 3.5
    ChimeraX-AlignmentMatrices: 2.1
    ChimeraX-Alignments: 2.16.1
    ChimeraX-AlphaFold: 1.0.1
    ChimeraX-AltlocExplorer: 1.1.2
    ChimeraX-AmberInfo: 1.0
    ChimeraX-Arrays: 1.1
    ChimeraX-Atomic: 1.58.8
    ChimeraX-AtomicLibrary: 14.1.11
    ChimeraX-AtomSearch: 2.0.1
    ChimeraX-AxesPlanes: 2.4
    ChimeraX-BasicActions: 1.1.2
    ChimeraX-BILD: 1.0
    ChimeraX-BlastProtein: 3.0.0
    ChimeraX-BondRot: 2.0.4
    ChimeraX-BugReporter: 1.0.1
    ChimeraX-BuildStructure: 2.13.1
    ChimeraX-Bumps: 1.0
    ChimeraX-BundleBuilder: 1.4.0
    ChimeraX-ButtonPanel: 1.0.1
    ChimeraX-CageBuilder: 1.0.1
    ChimeraX-CellPack: 1.0
    ChimeraX-Centroids: 1.4
    ChimeraX-ChangeChains: 1.1
    ChimeraX-CheckWaters: 1.4
    ChimeraX-ChemGroup: 2.0.1
    ChimeraX-Clashes: 2.3
    ChimeraX-ColorActions: 1.0.5
    ChimeraX-ColorGlobe: 1.0
    ChimeraX-ColorKey: 1.5.6
    ChimeraX-CommandLine: 1.2.5
    ChimeraX-ConnectStructure: 2.0.1
    ChimeraX-Contacts: 1.0.1
    ChimeraX-Core: 1.9
    ChimeraX-CoreFormats: 1.2
    ChimeraX-coulombic: 1.4.4
    ChimeraX-Crosslinks: 1.0
    ChimeraX-Crystal: 1.0
    ChimeraX-CrystalContacts: 1.0.1
    ChimeraX-DataFormats: 1.2.3
    ChimeraX-Dicom: 1.2.6
    ChimeraX-DistMonitor: 1.4.2
    ChimeraX-DockPrep: 1.1.3
    ChimeraX-Dssp: 2.0
    ChimeraX-EMDB-SFF: 1.0
    ChimeraX-ESMFold: 1.0
    ChimeraX-FileHistory: 1.0.1
    ChimeraX-FunctionKey: 1.0.1
    ChimeraX-Geometry: 1.3
    ChimeraX-gltf: 1.0
    ChimeraX-Graphics: 1.4.1
    ChimeraX-Hbonds: 2.5
    ChimeraX-Help: 1.3
    ChimeraX-HKCage: 1.3
    ChimeraX-IHM: 1.1
    ChimeraX-ImageFormats: 1.2
    ChimeraX-IMOD: 1.0
    ChimeraX-IO: 1.0.3
    ChimeraX-ItemsInspection: 1.0.1
    ChimeraX-IUPAC: 1.0
    ChimeraX-KVFinder: 1.2.1
    ChimeraX-Label: 1.1.14
    ChimeraX-LinuxSupport: 1.0.1
    ChimeraX-ListInfo: 1.2.2
    ChimeraX-Log: 1.2
    ChimeraX-LookingGlass: 1.1
    ChimeraX-Maestro: 1.9.1
    ChimeraX-Map: 1.3
    ChimeraX-MapData: 2.0
    ChimeraX-MapEraser: 1.0.1
    ChimeraX-MapFilter: 2.0.1
    ChimeraX-MapFit: 2.0
    ChimeraX-MapSeries: 2.1.1
    ChimeraX-Markers: 1.0.1
    ChimeraX-Mask: 1.0.2
    ChimeraX-MatchMaker: 2.1.6
    ChimeraX-MCopy: 1.0
    ChimeraX-MDcrds: 2.7.2
    ChimeraX-MedicalToolbar: 1.1
    ChimeraX-Meeting: 1.0.1
    ChimeraX-MLP: 1.1.1
    ChimeraX-mmCIF: 2.14.2
    ChimeraX-MMTF: 2.2
    ChimeraX-ModelArchive: 1.0
    ChimeraX-Modeller: 1.5.18
    ChimeraX-ModelPanel: 1.5
    ChimeraX-ModelSeries: 1.0.1
    ChimeraX-Mol2: 2.0.3
    ChimeraX-Mole: 1.0
    ChimeraX-Morph: 1.0.2
    ChimeraX-MouseModes: 1.2
    ChimeraX-Movie: 1.0
    ChimeraX-MutationScores: 1.0
    ChimeraX-Neuron: 1.0
    ChimeraX-Nifti: 1.2
    ChimeraX-NMRSTAR: 1.0.2
    ChimeraX-NRRD: 1.2
    ChimeraX-Nucleotides: 2.0.3
    ChimeraX-OpenCommand: 1.14
    ChimeraX-OrthoPick: 1.0.1
    ChimeraX-PDB: 2.7.6
    ChimeraX-PDBBio: 1.0.1
    ChimeraX-PDBLibrary: 1.0.4
    ChimeraX-PDBMatrices: 1.0
    ChimeraX-PickBlobs: 1.0.1
    ChimeraX-Positions: 1.0
    ChimeraX-PresetMgr: 1.1.2
    ChimeraX-PubChem: 2.2
    ChimeraX-ReadPbonds: 1.0.1
    ChimeraX-Registration: 1.1.2
    ChimeraX-RemoteControl: 1.0
    ChimeraX-RenderByAttr: 1.6.2
    ChimeraX-RenumberResidues: 1.1
    ChimeraX-ResidueFit: 1.0.1
    ChimeraX-RestServer: 1.3.1
    ChimeraX-RNALayout: 1.0
    ChimeraX-RotamerLibMgr: 4.0
    ChimeraX-RotamerLibsDunbrack: 2.0
    ChimeraX-RotamerLibsDynameomics: 2.0
    ChimeraX-RotamerLibsRichardson: 2.0
    ChimeraX-SaveCommand: 1.5.1
    ChimeraX-SchemeMgr: 1.0
    ChimeraX-SDF: 2.0.2
    ChimeraX-Segger: 1.0
    ChimeraX-Segment: 1.0.1
    ChimeraX-Segmentations: 3.5.6
    ChimeraX-SelInspector: 1.0
    ChimeraX-SeqView: 2.14
    ChimeraX-Shape: 1.0.1
    ChimeraX-Shell: 1.0.1
    ChimeraX-Shortcuts: 1.2.0
    ChimeraX-ShowSequences: 1.0.3
    ChimeraX-SideView: 1.0.1
    ChimeraX-SimilarStructures: 1.0.1
    ChimeraX-Smiles: 2.1.2
    ChimeraX-SmoothLines: 1.0
    ChimeraX-SpaceNavigator: 1.0
    ChimeraX-StdCommands: 1.18.1
    ChimeraX-STL: 1.0.1
    ChimeraX-Storm: 1.0
    ChimeraX-StructMeasure: 1.2.1
    ChimeraX-Struts: 1.0.1
    ChimeraX-Surface: 1.0.1
    ChimeraX-SwapAA: 2.0.1
    ChimeraX-SwapRes: 2.5
    ChimeraX-TapeMeasure: 1.0
    ChimeraX-TaskManager: 1.0
    ChimeraX-Test: 1.0
    ChimeraX-Toolbar: 1.2.3
    ChimeraX-ToolshedUtils: 1.2.4
    ChimeraX-Topography: 1.0
    ChimeraX-ToQuest: 1.0
    ChimeraX-Tug: 1.0.1
    ChimeraX-UI: 1.41
    ChimeraX-Umap: 1.0
    ChimeraX-uniprot: 2.3.1
    ChimeraX-UnitCell: 1.0.1
    ChimeraX-ViewDockX: 1.4.4
    ChimeraX-VIPERdb: 1.0
    ChimeraX-Vive: 1.1
    ChimeraX-VolumeMenu: 1.0.1
    ChimeraX-vrml: 1.0
    ChimeraX-VTK: 1.0
    ChimeraX-WavefrontOBJ: 1.0
    ChimeraX-WebCam: 1.0.2
    ChimeraX-WebServices: 1.1.4
    ChimeraX-Zone: 1.0.1
    colorama: 0.4.6
    comm: 0.2.2
    contourpy: 1.3.1
    cxservices: 1.2.3
    cycler: 0.12.1
    Cython: 3.0.10
    debugpy: 1.8.9
    decorator: 5.1.1
    distro: 1.9.0
    docutils: 0.21.2
    executing: 2.1.0
    filelock: 3.15.4
    fonttools: 4.55.3
    funcparserlib: 2.0.0a0
    glfw: 2.8.0
    grako: 3.16.5
    h11: 0.14.0
    h5py: 3.12.1
    html2text: 2024.2.26
    httpcore: 1.0.7
    httpx: 0.28.1
    idna: 3.10
    ihm: 1.3
    imagecodecs: 2024.6.1
    imagesize: 1.4.1
    ipykernel: 6.29.5
    ipython: 8.26.0
    ipywidgets: 8.1.5
    jedi: 0.19.1
    Jinja2: 3.1.4
    jupyter_client: 8.6.2
    jupyter_core: 5.7.2
    jupyterlab_widgets: 3.0.13
    kiwisolver: 1.4.7
    line_profiler: 4.1.3
    lxml: 5.2.2
    lz4: 4.3.3
    MarkupSafe: 3.0.2
    matplotlib: 3.9.2
    matplotlib-inline: 0.1.7
    msgpack: 1.0.8
    ndindex: 1.9.2
    nest-asyncio: 1.6.0
    netCDF4: 1.6.5
    networkx: 3.3
    nibabel: 5.2.0
    nptyping: 2.5.0
    numexpr: 2.10.2
    numpy: 1.26.4
    openvr: 1.26.701
    packaging: 23.2
    ParmEd: 4.2.2
    parso: 0.8.4
    pep517: 0.13.1
    pexpect: 4.9.0
    pillow: 10.4.0
    pip: 24.2
    pkginfo: 1.11.1
    platformdirs: 4.3.6
    prompt_toolkit: 3.0.48
    psutil: 6.0.0
    ptyprocess: 0.7.0
    pure_eval: 0.2.3
    py-cpuinfo: 9.0.0
    pycollada: 0.8
    pydicom: 2.4.4
    pyelftools: 0.31
    Pygments: 2.18.0
    pynmrstar: 3.3.4
    pynrrd: 1.0.0
    PyOpenGL: 3.1.9
    PyOpenGL-accelerate: 3.1.9
    pyopenxr: 1.0.3401
    pyparsing: 3.2.0
    pyproject_hooks: 1.2.0
    PyQt6-commercial: 6.7.1
    PyQt6-Qt6: 6.7.3
    PyQt6-WebEngine-commercial: 6.7.0
    PyQt6-WebEngine-Qt6: 6.7.3
    PyQt6-WebEngineSubwheel-Qt6: 6.7.3
    PyQt6_sip: 13.8.0
    python-dateutil: 2.9.0.post0
    pytz: 2024.2
    pyzmq: 26.2.0
    qtconsole: 5.5.2
    QtPy: 2.4.2
    qtshim: 1.0
    RandomWords: 0.4.0
    requests: 2.32.3
    scipy: 1.14.0
    setuptools: 72.1.0
    sfftk-rw: 0.8.1
    six: 1.16.0
    sniffio: 1.3.1
    snowballstemmer: 2.2.0
    sortedcontainers: 2.4.0
    soupsieve: 2.6
    Sphinx: 8.0.2
    sphinx-autodoc-typehints: 2.2.3
    sphinxcontrib-applehelp: 2.0.0
    sphinxcontrib-blockdiag: 3.0.0
    sphinxcontrib-devhelp: 2.0.0
    sphinxcontrib-htmlhelp: 2.1.0
    sphinxcontrib-jsmath: 1.0.1
    sphinxcontrib-qthelp: 2.0.0
    sphinxcontrib-serializinghtml: 2.0.0
    stack-data: 0.6.3
    superqt: 0.6.3
    tables: 3.10.1
    tcia_utils: 1.5.1
    tifffile: 2024.7.24
    tinyarray: 1.2.4
    tornado: 6.4.2
    traitlets: 5.14.3
    typing_extensions: 4.12.2
    tzdata: 2024.2
    urllib3: 2.2.3
    wcwidth: 0.2.13
    webcolors: 24.6.0
    wheel: 0.43.0
    wheel-filename: 1.4.1
    widgetsnbextension: 4.0.13

Change History (3)

comment:1 by Eric Pettersen, 9 months ago

Component: UnassignedGraphics
Owner: set to Tom Goddard
Platform: all
Project: ChimeraX
Status: newassigned
Summary: ChimeraX bug report submissionPyOpenGL 3.1.9: Shader compile failure

comment:2 by Tom Goddard, 9 months ago

Cc: Tom Goddard added
Owner: changed from Tom Goddard to Zach Pearson
Summary: PyOpenGL 3.1.9: Shader compile failureVolume raycasting with orthoplanes: Shader compile failure

This is a raycasting code error. The shader is missing symbols trying to use orthoplanes mode when project mode "rays" was used.

The log shows

volume projectionMode rays

and then later the error is generated by

volume #1 region 0,0,0,817,1151,299 step 1 colorMode opaque8 orthoplanes xyz positionPlanes 408,575,149 imageMode orthoplanes

because of missing shader variables.

comment:3 by Zach Pearson, 9 months ago

Resolution: fixed
Status: assignedclosed

I think this is fixed by this commit. As the commit message says:

The default rendering options for Image3d have colormap_on_gpu and
full_region_on_gpu set to false. This works fine for the shaders that
handle planes drawings, but raycast drawings need both options set to
true. One could previously make an Image3d with one of its default Planes
drawings and then switch to the Raycasting mode, and these two options
would be set to true in set_options. However, that function is not
called during initialization, and if they aren't set then the wrong
shader is compiled for an Image3d object trying to create a Raycast
drawing first. The user would get a nasty graphics traceback. This
commit sets those options during _auto_projection_mode, which is called
early enough.

Note: See TracTickets for help on using tickets.