Repository navigation
fix(#18): HDRP sample washed out — Neutral tonemapping + physically derived exposure - #19
Merged
Merged
Conversation
…erived exposure The scene volume fixed exposure at 12.7 EV100 (~1.6 stops over for the 100,000 lux sun) and the default profile tonemapped with ACES, which flattened and desaturated the over-exposed result. - DefaultSettingsVolumeProfile: Tonemapping ACES (2) -> Neutral (1). - Sky and Fog Settings: Exposure stays Fixed, 12.696428 -> 14.3 EV100, derived so an 18% grey surface on the crate's sunlit faces (~75k lux: sun 100k lux at ~50 deg elevation + sky) maps to 0.18 scene-linear: 2^EV = E / (pi * 1.2) = 75000 / 3.77 -> EV100 = 14.28. Nothing else changed (lighting, colour space, colour buffer untouched). Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
dfattal
marked this pull request as ready for review
October 2, 2026 08:57
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Fixes #18 — the HDRP sample's washed-out look. A same-build A/B (pre-fix vs DisplayXR/displayxr-unity#348 DLL) showed the 3D scene unchanged, so this is the sample's HDRP tuning. It is not a plugin or runtime colour bug (DisplayXR/displayxr-unity#347).
Changes (two one-line YAML edits)
Assets/HDRPDefaultResources/DefaultSettingsVolumeProfile.assetTonemapping.mode(override on)2= ACES1= NeutralAssets/CubeTest/Sky and Fog Settings.asset(scene global volume, weight 1, priority 0)Exposure.fixedExposure(override on;modestays0= Fixed)12.69642814.3Nothing else was changed: no lighting rebalance, no colour-space change, and the R11G11B10 colour buffer is kept.
Why Neutral (not None)
ACES has a strong filmic curve that desaturates the bright end. On an over-exposed sunlit crate it flattens everything, which is the look we saw. Neutral is a gentle curve: it keeps hue and saturation through the midtones and still rolls off highlights. The direct sun is 100,000 lux, so the specular and sunlit highlights go well past 1.0. With None those would hard-clip to white, which is ugly. Fall back to None only if the panel check shows Neutral still looks flat.
Why Fixed 14.3 EV100 (not Automatic)
For a test sample, exposure should stay put. With Fixed, panel and atlas-capture A/Bs are reproducible pixel for pixel. Auto-exposure would breathe as the cube rotates, and it would meter on the large sky area. The value comes from the scene's own lights:
Directional Light, 100,000 lux (m_LightUnit: 2= Lux), colour temp 6570 K. Rotation ≈ (50°, -30°), so the light direction is ≈ (-0.32, -0.77, 0.56).PhysicallyBasedSky, default (Exposure intensity mode, exposure 0, multiplier 1). Its illuminance comes from the sun, roughly 10–20k lux on a horizontal surface.1 / (1.2 · 2^EV). An 18% grey Lambertian surface under E lux has luminance0.18 · E / π. Setting that to 0.18 scene-linear (mid-grey):2^EV = E / (π · 1.2) = 75000 / 3.77 ≈ 19,900→ EV100 ≈ 14.28 → 14.3(The range across the two faces is 14.0–14.6. Sunny-16 at full sun+sky gives ≈ 15. The Main Camera's physical settings, ISO 200, 1/200 s, f/16, give 14.6.)
Verification
unity_build.bat, exit 0) with the normal pin#upm/v2.19.2. Both assets import cleanly.HDRenderPipelineGlobalSettings.asset(the build filled inm_RuntimeSettings.m_List) andXR/Settings/OpenXR Package Settings.asset(line endings only).Do not merge until the panel check is done. If Neutral at 14.3 reads too dark or too flat, the knobs are
fixedExposure(±0.5 EV steps) andTonemapping.mode.🤖 Generated with Claude Code