Add HDR output manual page#11548
Conversation
|
Maybe I should have a section dedicated to explaining how sRGB is used with HDR? If I write about this, I should probably also write that Godot uses the Rec. 709 colour gamut (which is the colour gamut used by sRGB.) |
|
Is there a way to preview the manual in document form? I'd certainly be interested in perusing the instructions for HDR. |
|
I have an HTML build that I could save as a PDF and upload somewhere... but it would become outdated pretty quickly. There is a small bit of markup in the file that I have added in this PR, but it's likely easiest and best to simply view the raw file that I added in this PR's changed files list. Edit: oh, you can tap “View file” on the desktop webpage (but not the mobile app) to get something that is pretty close to the final HTML appearance: |
|
I've addressed the specific items that were mentioned in AThousandShips' review. There are still more references that need to be added and other formatting is probably needed. Also I discovered I didn't have the pre-commit hooks set up on this computer, so that's fixed now too. Images still aren't done yet. Most importantly, I've removed sections that need to have the demo project merged first so that this page may be added sooner rather than later and not blocked by the demo project. These sections have been moved to the "Additional text drafts" section of this PR's description text so they can be included in a followup PR. |
3e950ce to
b384b5d
Compare
c44f5ff to
4c48753
Compare
|
I've finished my work on this new manual page and it's ready for review! I went overboard with the class/member references, so these will likely need to be trimmed back, but I'm not sure what the conventions are for this sort of thing. |
DarkKilauea
left a comment
There was a problem hiding this comment.
Left a few notes, but I'm generally happy with this as an initial version.
One thing I'd like to see is a section walking through setup for 2D games, showing how they could use tonemapping OR handle everything with output_max_linear_value as you describe below. I think 2D games are much more likely to forgo the effects pipeline so will be completely dependent on using output_max_linear_value to control their effects.
Likewise, maybe the rest of the content that seems more applicable towards 3D could be in a 3D section? Leading to an outline like:
- Getting Started
- Basic instructions for how to turn on HDR support.
- Fundamentals
- Describe how Godot uses EDR and the theory behind HDR output.
- Setup for 2D Games
- How to setup if you are using effects already vs how to use
output_max_linear_valueon its own.
- How to setup if you are using effects already vs how to use
- Setup for 3D Games
- How to setup for 3D games using World Environment primarily with
output_max_linear_valuefor some effects.
- How to setup for 3D games using World Environment primarily with
- Technical Details
- Luminance and screen considerations
However I'm perfectly happy with this so far, just something to consider to see if we can make this easier to ingest for a less technical reader.
|
I found a couple areas in the docs that may need updates:
|
4c48753 to
6630b3d
Compare
|
Thanks for the review @DarkKilauea! Those comments were very helpful.
I believe this will be more like 50/50 between the two approaches: I expect maybe even the majority of 2D game developers that are interested in using HDR output will be those that use 2D lighting with the WorldEnvironment for a glow effect. Conversely, it's likely that
Oh, yeah, this entire section is full of outdated and incorrect information. I've removed it entirely. For those reviewing this PR, the behaviour of HDR screens making content appear washed out applies to all operating systems including Mac OS and Windows. This washed out color affects both HDR and SDR content. This behaviour is caused by the screen and not by the operating system. When presenting sRGB content to an SDR screen, the mismatching transfer function encoding and "decoding" with a 2.2 power function provides glare compensation. When presenting either HDR or SDR content on an HDR screen, glare compensation must be applied by the screen. Screens that do not provide some form of glare compensation have colours that appear washed out. You will have a hard time finding this written on the internet because most people writing about this topic have not read the historical in-depth technical literature on the subject of colour rendering on displays or even simply plugged a Mac into an external display like they would with Windows. The concept of the sRGB standard baking in veiling glare compensation into its mismatching transfer function is mentioned in Charles Poynton's book: Digital Video and HD: Algorithms and Interfaces.
This needs a separate PR; it's not a part of this repo.
Fixed.
Fixed. More work is needed on this page, but that's outside of the scope of this PR. Thanks for doing a search of the rest of the docs and giving me the list of places that must be updated! That was really helpful. I've also replaced the Reinhard |
6630b3d to
14a73f3
Compare
14a73f3 to
bf3666c
Compare
|
I've addressed all review comments; I'll squash to a single commit once this has been approved. |
Co-authored-by: A Thousand Ships <96648715+AThousandShips@users.noreply.github.com>
bf3666c to
481ea5b
Compare
|
Thanks for the reviews and help, everyone! I've squashed the line breaks to one commit, so this is now ready for merging. |
|
Amazing work, and thanks for the reviews everyone :) Merged. |
|
@AMouri Thanks for the great blog post that you shared with us on the Android HDR PR thread. I linked it in our HDR output manual page, which you can view in its final form at this URL: https://docs.godotengine.org/en/latest/tutorials/rendering/hdr_output.html The short-and-simple recommendations in your blog post are a great resource for someone approaching the topic for the first time. I especially like how you ended with "Resist this temptation!" -- Good advice! :) |
Thanks! :) I do also want to signal boost the preceding blog post my colleague @jreck wrote https://android-developers.googleblog.com/2025/08/what-is-hdr.html which is a great intro on some fundamentals and what HDR isn’t |
Btw the hdr output manual is fantastic. It’s a really good intro to EDR + tonemapping |

HDR output is planned for Godot 4.7. Along with its release, we should provide an new manual page describing how to use it. This PR is my attempt at this sort of a manual page.
You can try out the HDR output PR with my demo project to get a better understanding of the concepts shared in this manual page.
Notes to reviewers
Additional text for followup PRs
In the spirit of getting this merged sooner rather than later, I've removed a couple of non-critical sections that may be added later when I or someone else have the time. Here are my draft notes for these additional sections.
Additional text drafts
First steps
This section may be added after the demo project has been merged.
Optional player settings
This should be added to the list of steps to enable HDR output in your project. It should link to the demo once its been merged.
Changing reference white luminance
Calibrating max luminance
This section somewhat depends on the demo project to give an example of how you can let your players calibrate their max luminance through a settings menu.
Troubleshooting
This troubleshooting section would obviously be nice to have, and again, it depends somewhat on the demo project because this demo project should be the first thing that users try out when troubleshooting.