HDR / WCG / SDR shader effect development & debugging tool
A WinUI 3 desktop application (C++/WinRT) for developing, testing, and debugging Direct2D shader effects with full HDR and wide color gamut support.
Release builds ship as unsigned MSIX packages — no signing certificate needed, but Developer Mode must be on.
- Enable Developer Mode: Settings → Privacy & security → For developers → Developer Mode.
- Download the architecture-matched zip from the GitHub Releases page:
ShaderLab-<version>-x64.zipfor AMD64 / IntelShaderLab-<version>-arm64.zipfor ARM64 (Snapdragon X / Surface Pro)
- Extract and run:
.\Install.ps1
- Launch ShaderLab from the Start menu.
Install.ps1 calls Add-AppxPackage -AllowUnsigned, which installs unsigned MSIX packages on systems with Developer Mode enabled (Windows 10 1903+ / Windows 11). The script installs the bundled dependency packages (Microsoft VCLibs, Windows App Runtime) for the host architecture first, then ShaderLab itself.
The release manifest carries the special OID 2.25.311729368913984317654407730594956997722=1 (Windows' "unsigned namespace") that allows -AllowUnsigned. The OID is injected by the release workflow only — the in-repo manifest stays plain CN=ShaderLab so signed F5 deploys keep working locally.
The project ships without a code-signing certificate. On first build, MSBuild auto-runs:
scripts/EnsureDevCert.ps1— generates a self-signed cert (CN=ShaderLab) and imports it intoTrustedPeoplefor F5 deploy.scripts/EnsureExprTk.ps1— downloadsexprtk.hpp(single-header math expression parser, MIT-licensed) intothird_party/exprtk/.
After that, F5 (Debug | x64, startup project = ShaderLab) deploys and launches the packaged app.
For a one-shot setup on a fresh clone:
.\Bootstrap.ps1 # cert + ExprTk + NuGet restore (no build)
.\Bootstrap.ps1 -Build # the above + Debug|x64 smoke buildSee docs/development/build.md for full prerequisites, configurations, and the dependency map.
The deep technical reference lives under docs/, organized by audience.
| Area | Highlights |
|---|---|
| Architecture | System overview, threading model (UI thread + render worker), pipeline format, effect graph model, D2D/D3D11 hybrid compute, engine/host split |
| Effects | Built-in catalog, Effect Designer, parameter / numeric / property-binding mechanics, working space |
| UI / UX | Graph editor, multi-output windows, animation, conditional parameter visibility |
| Hosts | ShaderLabHeadless console host, MCP server for AI agent integration |
| Development | Build instructions, project structure |
| History | Decision log (architectural choices with rationale) |
CHANGELOG.md tracks every release. The decision log tracks architectural choices independently of release boundaries.
ShaderLab is a testbed for HDR / WCG / SDR pixel-effect development. The pipeline is always scRGB FP16 linear light (DXGI_FORMAT_R16G16B16A16_FLOAT, DXGI_COLOR_SPACE_RGB_FULL_G10_NONE_P709) — no pipeline format switching; DWM/ACM handles the final display conversion.
Core capabilities:
- Live effect graph with D2D + D3D11 compute custom effects, dirty-gated re-evaluation, JSON serialization (
Windows.Data.Json). - Effect Designer for authoring custom pixel & compute shaders with live HLSL compile + reflection-driven property generation.
- Analysis viewers (Luminance / Channel / Chromaticity Statistics, CIE Histogram + Plot, Gamut Coverage, Luminance Heatmap, etc.) — all share the same compute-bridge architecture and route their outputs as SRVs to downstream consumers when possible.
- Tone-mapping suite (D2D
HDR Tone Map, ICtCp Tone Map, ICtCp Inverse Tone Map, ICtCp Gamut Map, etc.) operating in scRGB FP16 with PQ / HLG / sRGB transfer functions. - HDR / WCG aware — DXGI adapter-change tracking, ICC profile parsing, monitor primaries piped into Custom-gamut analysis effects via the Working Space node.
- MCP server + headless host for AI-agent and CI integration; the MCP route layer lives in
ShaderLabEngine.dllso headless and GUI hosts share the route implementations.
Build: Visual Studio 2022 17.8+, Windows 10 SDK 10.0.26100+, C++/WinRT only (no C#).
See LICENSE for the project license and the GitHub repository for issues / PRs.