Add agx_white, agx_contrast and HDR support to the AgX tonemapper.

Also optimize all tonemappers to perform less calculations per-pixel.

Note: unlike `white`, `agx_white` is limited to a minimum of `2.0` and defaults to `16.29`. When using a RGB10A2 render buffer, `agx_white` will be ignored and a value of `2.0` will be used instead to ensure good behavior on the Mobile renderer.
This commit is contained in:
Allen Pestaluky 2025-05-29 12:19:00 -04:00
parent 7a228b4b91
commit 628df323e2
24 changed files with 546 additions and 241 deletions

View file

@ -373,8 +373,20 @@ float RendererSceneRender::environment_get_exposure(RID p_env) const {
return environment_storage.environment_get_exposure(p_env);
}
float RendererSceneRender::environment_get_white(RID p_env) const {
return environment_storage.environment_get_white(p_env);
float RendererSceneRender::environment_get_white(RID p_env, bool p_limit_agx_white) const {
return environment_storage.environment_get_white(p_env, p_limit_agx_white);
}
void RendererSceneRender::environment_set_tonemap_agx_contrast(RID p_env, float p_agx_contrast) {
environment_storage.environment_set_tonemap_agx_contrast(p_env, p_agx_contrast);
}
float RendererSceneRender::environment_get_tonemap_agx_contrast(RID p_env) const {
return environment_storage.environment_get_tonemap_agx_contrast(p_env);
}
RendererEnvironmentStorage::TonemapParameters RendererSceneRender::environment_get_tonemap_parameters(RID p_env, bool p_limit_agx_white) const {
return environment_storage.environment_get_tonemap_parameters(p_env, p_limit_agx_white);
}
// Fog