Skip to content

iOS Rendering Error: Failed to load OES_texture_float_linear. Texture filtering is not available for *32F internal formats. #765

Description

@davramov

I am attempting to run the itk-vtk-viewer on an iPad, however, I am encountering a rendering issue where all I see is a solid box:

Image

It works on Mac and Linux just fine. I also tried setting setImageInterpolationEnabled(false), but that did not solve the issue.

I found some related bugs:
Kitware/vtk-js#3206
Kitware/vtk-js#3194
Kitware/vtk-js#3027


Later in the afternoon, I updated the following things with some success. The dataset loads, but is unresponsive to inputs. The HTML/CSS UI is still usable (although the visualization does not update). Works fine on Mac on multiple browsers.

  • iPad to the latest version
  • vtk.js : 32.14.0
  • imjoy-core : 0.14.5

Image

Mobile Devices Tested:
iPhone 16 PRO Max -- non-interactive
iPad M1 -- initial load, but then non-interactive. black screen on refresh

iPad resource stats:
1.17 GB of Memory
238.4% CPU
Image

Looking at the iPad Safari console via my Macbook, I see this error:

[Error] WebGL: context lost.
    getContext
    (anonymous function) (itkVtkViewer.js:2:1889829)
    ...
    a (itkVtkViewer.js:2:881355)
[Error] Unhandled Promise Rejection: TypeError: Argument 1 ('shader') to WebGL2RenderingContext.shaderSource must be an instance of WebGLShader

additional notes:

I am building from this repo
https://github.com/davramov/itk-vtk-viewer/tree/iframe

Using this Dockerfile:

FROM continuumio/miniconda3:25.1.1-2

# Install system dependencies and Node.js 20.x
RUN apt-get update && \
    apt-get install -y git curl build-essential socat && \
    curl -fsSL https://deb.nodesource.com/setup_20.x | bash - && \
    apt-get install -y nodejs && \
    apt-get clean && \
    rm -rf /var/lib/apt/lists/*

# Verify versions
RUN node --version && npm --version

# Puppeteer config to avoid Chromium downloads
ENV PUPPETEER_SKIP_CHROMIUM_DOWNLOAD=true
ENV PUPPETEER_SKIP_DOWNLOAD=true

# Clone itk-vtk-viewer
WORKDIR /tmp
RUN git clone -b iframe https://github.com/als-computing/itk-vtk-viewer.git

# Update package.json to use newer vtk.js version with better mobile support
WORKDIR /tmp/itk-vtk-viewer
RUN sed -i 's/"@kitware\/vtk.js": "\^29.4.6"/"@kitware\/vtk.js": "32.14.0"/g' package.json && \
    sed -i 's/"vtk.js": "\^29.4.6"/"vtk.js": "32.14.0"/g' package.json & \
    sed -i 's/"imjoy-core": "\^0.13.74"/"imjoy-core": "0.14.5"/g' package.json

# Remove puppeteer dependency and build
RUN sed -i 's/"puppeteer":.*,//' package.json && \
    npm install && \
    npm run build && \
    npm link


EXPOSE 8082
CMD ["npx", "itk-vtk-viewer", "--port", "8082"]

iPad M4 iPad (April 21 test)

  • Works on Safari, but very choppy (3-5 seconds to rotate/interact). Can not handle zooming into the volume.
  • Does not work on Chrome at all

Any help is appreciated!

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Fields

    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions