Skip to content

Fix HEIC/HEIF HDR extraction via WIC and global SDR White Level UI scaling#96

Open
justnullname wants to merge 1 commit intomainfrom
fix-heic-hdr-and-ui-scale-3002149536282055275
Open

Fix HEIC/HEIF HDR extraction via WIC and global SDR White Level UI scaling#96
justnullname wants to merge 1 commit intomainfrom
fix-heic-hdr-and-ui-scale-3002149536282055275

Conversation

@justnullname
Copy link
Owner

Fixes issue with HEIC/HEIF images being downsampled to 8-bit, implements HDR roll-off to prevent clipping, and scales core UI components correctly in HDR mode.


PR created automatically by Jules for task 3002149536282055275 started by @justnullname

… Tone Mapping

- **WIC High-Precision HDR Decoding**: Modified the WIC fallback path (`LoadToMemory`, `LoadToMemoryPMR`, `LoadToFrame`) to detect `GUID_WICPixelFormat128bppRGBAFloat` (and related FP16/32 formats). If detected, it bypasses the standard 8-bit `32bppPBGRA` downsampling, instead initializing the `IWICFormatConverter` to directly output `128bppRGBAFloat`. This natively extracts 10-bit/12-bit pixel data from HEIC/HEIF files without introducing third-party libraries (e.g., `libheif`).
- **HDR-to-HDR Tone Mapping (Roll-off)**: Added a new DirectCompute shader `HLSL_ToneMapHdrToHdr`. When `m_isAdvancedColor` is active and the image's `contentPeakScRgb` exceeds the display's `displayPeakScRgb`, `RenderEngine::UploadRawFrameToGPU` routes the float texture through this shader. This applies a smooth roll-off curve, preventing hard clipping of highlights.
- **Global SDR White Level UI Scaling**: Cleaned up the creation of UI brushes across `main.cpp`, `CompositionEngine.cpp`, and `UIRenderer.cpp`. Standard UI components (like the Info Grid, Debug HUD, Settings, and Compare Mode indicators) now correctly multiply their base RGB colors by the current display's `hdrWhiteScale`, ensuring the UI does not appear unreadably dim next to bright HDR image content.
- Defer Ultra HDR dual-texture processing to maintain the project's strict zero-bloat/lightweight principles.
@google-labs-jules
Copy link
Contributor

👋 Jules, reporting for duty! I'm here to lend a hand with this pull request.

When you start a review, I'll add a 👀 emoji to each comment to let you know I've read it. I'll focus on feedback directed at me and will do my best to stay out of conversations between you and other bots or reviewers to keep the noise down.

I'll push a commit with your requested changes shortly after. Please note there might be a delay between these steps, but rest assured I'm on the job!

For more direct control, you can switch me to Reactive Mode. When this mode is on, I will only act on comments where you specifically mention me with @jules. You can find this option in the Pull Request section of your global Jules UI settings. You can always switch back!

New to Jules? Learn more at jules.google/docs.


For security, I will only act on instructions from the user who triggered this task.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant