Opened 3 years ago

Closed 3 years ago

#7237 closed defect (fixed)

colormapOnGpu shader error

Reported by: ermel@… Owned by: Tom Goddard
Priority: normal Milestone:
Component: Graphics Version:
Keywords: Cc:
Blocked By: Blocking:
Notify when closed: Platform: all
Project: ChimeraX

Description

The following bug report has been submitted:
Platform:        Linux-5.4.0-120-generic-x86_64-with-glibc2.31
ChimeraX Version: 1.4 (2022-06-03 23:39:42 UTC)
Description
Setting a volume's colorMode to a non-transparent type (l8/12/16 or rgb8/12/16) while colormapOnGpu is 'true' and style is 'image' causes an OpenGL error. This happens in both ChimeraX 1.3 and ChimeraX 1.4, on Ubuntu 20.04 (NVIDIA Graphics) and on MacOS 11.6.7 (Intel Iris Plus Graphics). It does not occur with colorModes including a transparency parameter.

To reproduce:

Case 1 (colormapOnGpu before colorMode, crashes):

volume new zeros size 100
volume #1 style image imageMode "tilted slab"
volume #1 colormapOnGpu true
volume #1 colorMode l8

Case 2 (colorMode before colormapOnGpu, crashes):

volume new zeros size 100
volume #1 style image imageMode "tilted slab"
volume #1 colorMode l8
volume #1 colormapOnGpu true

Case 3 (colorMode before colormapOnGpu, does not crash):

volume new zeros size 100
volume #1 style image imageMode "tilted slab"
volume #1 colorMode la8
volume #1 colormapOnGpu true

Log:
> ui tool show Toolbar

UCSF ChimeraX version: 1.4 (2022-06-03)  
© 2016-2022 Regents of the University of California. All rights reserved.  
How to cite UCSF ChimeraX  

> volume new zeros size 100

Opened zeros as #1, grid size 100,100,100, pixel 1, shown at step 1, values
float32  

> volume #1 style image imageMode "tilted slab"

> volume #1 colorMode l8

> volume #1 colormapOnGpu true

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 does not have uniform variable "colormap"  
shader capabilities SHADER_COLORMAP  
  
Traceback (most recent call last):  
File
"/home/uermel/chimerax_plugin/chimerax_1.4/chimerax-1.4/lib/python3.9/site-
packages/chimerax/core/updateloop.py", line 73, in draw_new_frame  
view.draw(check_for_changes = False)  
File
"/home/uermel/chimerax_plugin/chimerax_1.4/chimerax-1.4/lib/python3.9/site-
packages/chimerax/graphics/view.py", line 165, in draw  
self._draw_scene(camera, drawings)  
File
"/home/uermel/chimerax_plugin/chimerax_1.4/chimerax-1.4/lib/python3.9/site-
packages/chimerax/graphics/view.py", line 203, in _draw_scene  
shadow, multishadow = self._compute_shadowmaps(opaque_drawings,
transparent_drawings, camera)  
File
"/home/uermel/chimerax_plugin/chimerax_1.4/chimerax-1.4/lib/python3.9/site-
packages/chimerax/graphics/view.py", line 597, in _compute_shadowmaps  
multishadow_enabled = r.multishadow.use_multishadow_map(shadow_drawings)  
File
"/home/uermel/chimerax_plugin/chimerax_1.4/chimerax-1.4/lib/python3.9/site-
packages/chimerax/graphics/opengl.py", line 1595, in use_multishadow_map  
draw_depth(r, sdrawings, opaque_only = not mat.transparent_cast_shadows)  
File
"/home/uermel/chimerax_plugin/chimerax_1.4/chimerax-1.4/lib/python3.9/site-
packages/chimerax/graphics/drawing.py", line 1550, in draw_depth  
draw_opaque(r, drawings)  
File
"/home/uermel/chimerax_plugin/chimerax_1.4/chimerax-1.4/lib/python3.9/site-
packages/chimerax/graphics/drawing.py", line 1526, in draw_opaque  
_draw_multiple(drawings, renderer, Drawing.OPAQUE_DRAW_PASS)  
File
"/home/uermel/chimerax_plugin/chimerax_1.4/chimerax-1.4/lib/python3.9/site-
packages/chimerax/graphics/drawing.py", line 1539, in _draw_multiple  
d.draw(renderer, draw_pass)  
File
"/home/uermel/chimerax_plugin/chimerax_1.4/chimerax-1.4/lib/python3.9/site-
packages/chimerax/map/image3d.py", line 791, in draw  
self._draw_planes(renderer, draw_pass, dtransp, pd)  
File
"/home/uermel/chimerax_plugin/chimerax_1.4/chimerax-1.4/lib/python3.9/site-
packages/chimerax/map/image3d.py", line 811, in _draw_planes  
drawing.draw(r, draw_pass)  
File
"/home/uermel/chimerax_plugin/chimerax_1.4/chimerax-1.4/lib/python3.9/site-
packages/chimerax/graphics/drawing.py", line 752, in draw  
self.draw_self(renderer, draw_pass)  
File
"/home/uermel/chimerax_plugin/chimerax_1.4/chimerax-1.4/lib/python3.9/site-
packages/chimerax/graphics/drawing.py", line 759, in draw_self  
self._draw_geometry(renderer, opaque_only = any_transp)  
File
"/home/uermel/chimerax_plugin/chimerax_1.4/chimerax-1.4/lib/python3.9/site-
packages/chimerax/graphics/drawing.py", line 790, in _draw_geometry  
shader = r.shader(sopt)  
File
"/home/uermel/chimerax_plugin/chimerax_1.4/chimerax-1.4/lib/python3.9/site-
packages/chimerax/graphics/opengl.py", line 648, in shader  
p = self._opengl_shader(options)  
File
"/home/uermel/chimerax_plugin/chimerax_1.4/chimerax-1.4/lib/python3.9/site-
packages/chimerax/graphics/opengl.py", line 751, in _opengl_shader  
self._use_shader(p)  
File
"/home/uermel/chimerax_plugin/chimerax_1.4/chimerax-1.4/lib/python3.9/site-
packages/chimerax/graphics/opengl.py", line 686, in _use_shader  
shader.set_integer("colormap", self._colormap_texture_unit)  
File
"/home/uermel/chimerax_plugin/chimerax_1.4/chimerax-1.4/lib/python3.9/site-
packages/chimerax/graphics/opengl.py", line 2755, in set_integer  
GL.glUniform1i(self.uniform_id(name), value)  
File
"/home/uermel/chimerax_plugin/chimerax_1.4/chimerax-1.4/lib/python3.9/site-
packages/chimerax/graphics/opengl.py", line 2786, in uniform_id  
raise OpenGLError('Shader does not have uniform variable "%s"\n shader
capabilities %s'  
chimerax.graphics.opengl.OpenGLError: Shader does not have uniform variable
"colormap"  
shader capabilities SHADER_COLORMAP  
  




OpenGL version: 3.3.0 NVIDIA 470.129.06
OpenGL renderer: Quadro P5000/PCIe/SSE2
OpenGL vendor: NVIDIA Corporation

Python: 3.9.11
Locale: en_US.UTF-8
Qt version: PyQt6 6.3.0, Qt 6.3.0
Qt runtime version: 6.3.0
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 3630 Tower
OS: Ubuntu 20.04 focal
Architecture: 64bit ELF
Virtual Machine: none
CPU: 8 Intel(R) Xeon(R) E-2174G CPU @ 3.80GHz
Cache Size: 8192 KB
Memory:
	              total        used        free      shared  buff/cache   available
	Mem:           62Gi        37Gi        11Gi       1.3Gi        14Gi        23Gi
	Swap:            0B          0B          0B

Graphics:
	01:00.0 VGA compatible controller [0300]: NVIDIA Corporation GP104GL [Quadro P5000] [10de:1bb0] (rev a1)	
	Subsystem: Dell GP104GL [Quadro P5000] [1028:11b2]	
	Kernel driver in use: nvidia

Installed Packages:
    alabaster: 0.7.12
    appdirs: 1.4.4
    ArtiaX: 0.1
    Babel: 2.10.1
    backcall: 0.2.0
    blockdiag: 3.0.0
    certifi: 2022.5.18.1
    cftime: 1.6.0
    charset-normalizer: 2.0.12
    ChimeraX-AddCharge: 1.2.3
    ChimeraX-AddH: 2.1.11
    ChimeraX-AlignmentAlgorithms: 2.0
    ChimeraX-AlignmentHdrs: 3.2.1
    ChimeraX-AlignmentMatrices: 2.0
    ChimeraX-Alignments: 2.4.3
    ChimeraX-AlphaFold: 1.0
    ChimeraX-AltlocExplorer: 1.0.2
    ChimeraX-AmberInfo: 1.0
    ChimeraX-Arrays: 1.0
    ChimeraX-Atomic: 1.39.1
    ChimeraX-AtomicLibrary: 7.0
    ChimeraX-AtomSearch: 2.0.1
    ChimeraX-AxesPlanes: 2.1
    ChimeraX-BasicActions: 1.1
    ChimeraX-BILD: 1.0
    ChimeraX-BlastProtein: 2.1.1
    ChimeraX-BondRot: 2.0
    ChimeraX-BugReporter: 1.0
    ChimeraX-BuildStructure: 2.7
    ChimeraX-Bumps: 1.0
    ChimeraX-BundleBuilder: 1.1
    ChimeraX-ButtonPanel: 1.0
    ChimeraX-CageBuilder: 1.0
    ChimeraX-CellPack: 1.0
    ChimeraX-Centroids: 1.2
    ChimeraX-ChemGroup: 2.0
    ChimeraX-Clashes: 2.2.4
    ChimeraX-ColorActions: 1.0
    ChimeraX-ColorGlobe: 1.0
    ChimeraX-ColorKey: 1.5.1
    ChimeraX-CommandLine: 1.2.3
    ChimeraX-ConnectStructure: 2.0.1
    ChimeraX-Contacts: 1.0
    ChimeraX-Core: 1.4
    ChimeraX-CoreFormats: 1.1
    ChimeraX-coulombic: 1.3.2
    ChimeraX-Crosslinks: 1.0
    ChimeraX-Crystal: 1.0
    ChimeraX-CrystalContacts: 1.0
    ChimeraX-DataFormats: 1.2.2
    ChimeraX-Dicom: 1.1
    ChimeraX-DistMonitor: 1.1.5
    ChimeraX-Dssp: 2.0
    ChimeraX-EMDB-SFF: 1.0
    ChimeraX-ExperimentalCommands: 1.0
    ChimeraX-FileHistory: 1.0
    ChimeraX-FunctionKey: 1.0
    ChimeraX-Geometry: 1.2
    ChimeraX-gltf: 1.0
    ChimeraX-Graphics: 1.1
    ChimeraX-Hbonds: 2.1.2
    ChimeraX-Help: 1.2
    ChimeraX-HKCage: 1.3
    ChimeraX-IHM: 1.1
    ChimeraX-ImageFormats: 1.2
    ChimeraX-IMOD: 1.0
    ChimeraX-IO: 1.0.1
    ChimeraX-ItemsInspection: 1.0
    ChimeraX-Label: 1.1.1
    ChimeraX-LinuxSupport: 1.0
    ChimeraX-ListInfo: 1.1.1
    ChimeraX-Log: 1.1.5
    ChimeraX-LookingGlass: 1.1
    ChimeraX-Maestro: 1.8.1
    ChimeraX-Map: 1.1
    ChimeraX-MapData: 2.0
    ChimeraX-MapEraser: 1.0
    ChimeraX-MapFilter: 2.0
    ChimeraX-MapFit: 2.0
    ChimeraX-MapSeries: 2.1
    ChimeraX-Markers: 1.0
    ChimeraX-Mask: 1.0
    ChimeraX-MatchMaker: 2.0.6
    ChimeraX-MDcrds: 2.6
    ChimeraX-MedicalToolbar: 1.0.1
    ChimeraX-Meeting: 1.0
    ChimeraX-MLP: 1.1
    ChimeraX-mmCIF: 2.7
    ChimeraX-MMTF: 2.1
    ChimeraX-Modeller: 1.5.5
    ChimeraX-ModelPanel: 1.3.2
    ChimeraX-ModelSeries: 1.0
    ChimeraX-Mol2: 2.0
    ChimeraX-Morph: 1.0
    ChimeraX-MouseModes: 1.1
    ChimeraX-Movie: 1.0
    ChimeraX-Neuron: 1.0
    ChimeraX-Nucleotides: 2.0.2
    ChimeraX-OpenCommand: 1.9
    ChimeraX-PDB: 2.6.6
    ChimeraX-PDBBio: 1.0
    ChimeraX-PDBLibrary: 1.0.2
    ChimeraX-PDBMatrices: 1.0
    ChimeraX-PickBlobs: 1.0
    ChimeraX-Positions: 1.0
    ChimeraX-PresetMgr: 1.1
    ChimeraX-PubChem: 2.1
    ChimeraX-ReadPbonds: 1.0.1
    ChimeraX-Registration: 1.1
    ChimeraX-RemoteControl: 1.0
    ChimeraX-ResidueFit: 1.0
    ChimeraX-RestServer: 1.1
    ChimeraX-RNALayout: 1.0
    ChimeraX-RotamerLibMgr: 2.0.1
    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
    ChimeraX-Segger: 1.0
    ChimeraX-Segment: 1.0
    ChimeraX-SelInspector: 1.0
    ChimeraX-SeqView: 2.6
    ChimeraX-Shape: 1.0.1
    ChimeraX-Shell: 1.0
    ChimeraX-Shortcuts: 1.1
    ChimeraX-ShowAttr: 1.0
    ChimeraX-ShowSequences: 1.0
    ChimeraX-SideView: 1.0
    ChimeraX-Smiles: 2.1
    ChimeraX-SmoothLines: 1.0
    ChimeraX-SpaceNavigator: 1.0
    ChimeraX-StdCommands: 1.8
    ChimeraX-STL: 1.0
    ChimeraX-Storm: 1.0
    ChimeraX-StructMeasure: 1.0.1
    ChimeraX-Struts: 1.0.1
    ChimeraX-Surface: 1.0
    ChimeraX-SwapAA: 2.0
    ChimeraX-SwapRes: 2.1.1
    ChimeraX-TapeMeasure: 1.0
    ChimeraX-Test: 1.0
    ChimeraX-Toolbar: 1.1.1
    ChimeraX-ToolshedUtils: 1.2.1
    ChimeraX-Tug: 1.0
    ChimeraX-UI: 1.18.3
    ChimeraX-uniprot: 2.2
    ChimeraX-UnitCell: 1.0
    ChimeraX-ViewDockX: 1.1.2
    ChimeraX-VIPERdb: 1.0
    ChimeraX-Vive: 1.1
    ChimeraX-VolumeMenu: 1.0
    ChimeraX-VTK: 1.0
    ChimeraX-WavefrontOBJ: 1.0
    ChimeraX-WebCam: 1.0
    ChimeraX-WebServices: 1.1.0
    ChimeraX-Zone: 1.0
    colorama: 0.4.4
    cxservices: 1.2
    cycler: 0.11.0
    Cython: 0.29.26
    debugpy: 1.6.0
    decorator: 5.1.1
    distro: 1.6.0
    docutils: 0.17.1
    entrypoints: 0.4
    filelock: 3.4.2
    fonttools: 4.33.3
    funcparserlib: 1.0.0
    grako: 3.16.5
    h5py: 3.7.0
    html2text: 2020.1.16
    idna: 3.3
    ihm: 0.27
    imagecodecs: 2021.11.20
    imagesize: 1.3.0
    ipykernel: 6.6.1
    ipython: 7.31.1
    ipython-genutils: 0.2.0
    jedi: 0.18.1
    Jinja2: 3.0.3
    jupyter-client: 7.1.0
    jupyter-core: 4.10.0
    kiwisolver: 1.4.2
    line-profiler: 3.4.0
    lxml: 4.7.1
    lz4: 3.1.10
    MarkupSafe: 2.1.1
    matplotlib: 3.5.1
    matplotlib-inline: 0.1.3
    msgpack: 1.0.3
    nest-asyncio: 1.5.5
    netCDF4: 1.5.8
    networkx: 2.6.3
    numexpr: 2.8.1
    numpy: 1.22.1
    openvr: 1.16.802
    packaging: 21.3
    pandas: 1.4.2
    ParmEd: 3.4.3
    parso: 0.8.3
    pexpect: 4.8.0
    pickleshare: 0.7.5
    Pillow: 9.0.1
    pip: 21.3.1
    pkginfo: 1.8.2
    prompt-toolkit: 3.0.29
    psutil: 5.9.0
    ptyprocess: 0.7.0
    pycollada: 0.7.2
    pydicom: 2.2.2
    Pygments: 2.11.2
    PyOpenGL: 3.1.5
    PyOpenGL-accelerate: 3.1.5
    pyparsing: 3.0.9
    PyQt6-commercial: 6.3.0
    PyQt6-Qt6: 6.3.0
    PyQt6-sip: 13.3.1
    PyQt6-WebEngine-commercial: 6.3.0
    PyQt6-WebEngine-Qt6: 6.3.0
    python-dateutil: 2.8.2
    pytz: 2022.1
    pyzmq: 23.1.0
    qtconsole: 5.3.0
    QtPy: 2.1.0
    RandomWords: 0.3.0
    requests: 2.27.1
    scipy: 1.7.3
    setuptools: 59.8.0
    sfftk-rw: 0.7.2
    six: 1.16.0
    snowballstemmer: 2.2.0
    sortedcontainers: 2.4.0
    Sphinx: 4.3.2
    sphinx-autodoc-typehints: 1.15.2
    sphinxcontrib-applehelp: 1.0.2
    sphinxcontrib-blockdiag: 3.0.0
    sphinxcontrib-devhelp: 1.0.2
    sphinxcontrib-htmlhelp: 2.0.0
    sphinxcontrib-jsmath: 1.0.1
    sphinxcontrib-qthelp: 1.0.3
    sphinxcontrib-serializinghtml: 1.1.5
    starfile: 0.4.11
    suds-community: 1.0.0
    superqt: 0.3.2
    tables: 3.7.0
    tifffile: 2021.11.2
    tinyarray: 1.2.4
    tornado: 6.1
    traitlets: 5.1.1
    typing-extensions: 4.2.0
    urllib3: 1.26.9
    wcwidth: 0.2.5
    webcolors: 1.11.1
    wheel: 0.37.1
    wheel-filename: 1.3.0

Change History (2)

comment:1 by Eric Pettersen, 3 years ago

Component: UnassignedGraphics
Owner: set to Tom Goddard
Platform: all
Project: ChimeraX
Status: newassigned
Summary: ChimeraX bug report submissioncolormapOnGpu shader error

Reported by Utz Ermel

comment:2 by Tom Goddard, 3 years ago

Resolution: fixed
Status: assignedclosed

Fixed in tonight's daily builds (dated July 8).

The error was from computing the shadows when the volume rendering is changed to opaque. When the rendering is transparent, ChimeraX does not cast shadows for transparent models so the shadow calculation was not done. You can work around the problem in your current ChimeraX by switching to simple lighting (command "light simple") which casts no shadows.

Thanks for the detailed steps to produce the bug! It made my work so easy.

Note: See TracTickets for help on using tickets.