Viewline is a modern GPU-accelerated media viewer for animation, VFX, and OpenUSD workflows. It provides high-performance playback of video files, image sequences, and OpenUSD scenes through a unified OpenGL-based viewer.
Supported formats:
Video
- MP4
- MOV
- AVI
Image Sequences
- PNG
- JPEG
- EXR
3D Scene
- USD
- USDA
- USDC
- USDZ
Color Management
Viewline integrates OpenColorIO (OCIO) for consistent color management across all supported media types.
Features
- OpenColorIO integration
- ACES workflow architecture
- Input color space selection
- Display transform selection
Recommended Configuration
ACES 1.3 OCIO Config
System Architecture
Media Source
(Video / Image Sequence / OpenUSD)
│
▼
Media Reader
│
┌─────────────┴─────────────┐
│ │
▼ ▼
Video / Image Pipeline OpenUSD Pipeline
│ │
▼ ▼
GPU Upload Hydra Renderer
│ │
▼ ▼
GLTexture Render Delegate
│ │
▼ ▼
GLShader GLScreen
│ │
└─────────────┬─────────────┘
▼
GLScreen
│
▼
QOpenGLWidget
│
▼
Display Output / Interactive 3D View
Rendering Architecture
Viewline uses a fully GPU-based rendering architecture where each rendering component has a dedicated responsibility.
Core Components
QOpenGLWidget
- Creates the OpenGL context
- Handles resize events
- Displays the rendered output
- Processes user interaction
GLScreen
- Responsible for:
- Render pass management
- Frame presentation
- Viewport updates
- GPU resource coordination
GLTexture
- Responsible for:
- GPU texture allocation
- Texture uploads
- Texture updates
- Texture lifecycle management
GLShader
- Responsible for:
- Shader compilation
- Color processing
- OpenColorIO transforms
- GPU rendering
Viewer Settings
Video / Image
Display Settings
- Exposure
- Gamma
- Brightness
- Contrast
- Saturation
- Hue
- Gain
- Offset
- Overlay
Style Settings
- Sepia
- Negative
- Posterize
- Gradient
- Cartoon
Filter Settings
- Sharpen
- Blur
- Motion Blur
- Noise
- Denoiser
OpenUSD Viewer
Display Settings
Shading Mode
- Shaded Smooth
- Shaded Flat
- Wireframe
- Wireframe on Surface
- Points
- Geom Only
- Geom Smooth
- Geom Flat
Complexity
- Low
- Medium
- High
- Very High
Display Purposes
- Guide
- Proxy
- Render
Enable Scene Materials
Camera
- Default Camera
- Stage Cameras
Rendering Backends
| Media Type | Reader | GPU Backend |
|---|---|---|
| Video | PyAV | Hardware Decode → OpenGL |
| Image Sequence | OpenImageIO | OpenGL Texture Rendering |
| OpenUSD | OpenUSD | Hydra Rendering |
Python Requirements
Python-3.10.10 or +
Dependencies
Library Purpose PySide6 UI framework PyOpenGL OpenGL rendering NumPy Image buffer processing PyAV Video decoding OpenImageIO Image sequence reading OpenColorIO Color management OpenUSD 3D Objects
Required Libraries
requests: 2.32.2
certifi: 2024.2.2 or +
idna: 3.7 or +
urllib3: 2.2.1 or +
charset-normalizer: 3.3.2 or +
PySide6: 6.9.0 or +
shiboken6: 6.9.0 or +
PySide6-Essentials: 6.9.0 or +
PySide6-Addons: 6.9.0 or +
pyqtdarktheme: 2.1.0 or +
darkdetect: 0.7.1 or +
OpenImageIO: 3.0.4.0 or +
PyOpenGL: 3.1.9 or +
opencolorio: 2.5.0 or +
av: 17.0.0 or +
OpenUSD: 26.05
numpy: 1.26.4 or +
Recommended OCIO Config ACES 1.3
Official repository:
https://github.com/AcademySoftwareFoundation/OpenColorIO-Config-ACES
Open EXR Support
The player currently supports:
- Single-layer EXR
- Multi-layer EXR
- RGB layer extraction
- Basic AOV switching
The EXR reader automatically searches for valid RGB layers.
Example supported channel patterns:
R G B
beauty.R beauty.G beauty.B
rgba.R rgba.G rgba.B
Ci.R Ci.G Ci.B
Current Limitations
This project is currently an early playback framework.
Known limitations:
- No threaded decoding
- Image decoding may load many frames into memory
- EXR playback currently converts float images into uint8 previews
- No HDR display pipeline yet
Design Notes
- Fully GPU-based rendering pipeline.
- Unified viewer for video, image sequences, and OpenUSD.
- Modular rendering architecture.
- OpenGL shaders used throughout the rendering pipeline.
- Hydra-based rendering for OpenUSD scenes.
- OpenColorIO integration for color-managed workflows.
- No legacy glDrawPixels() rendering.
- Extensible architecture for future rendering backends.
© Support, subing85@gmail.com.