1
0
mirror of https://github.com/godotengine/godot.git synced 2025-11-05 12:10:55 +00:00

Implement Physical Light Units as an optional setting.

This allows light sources to be specified in physical light units in addition to the regular energy multiplier. In order to avoid loss of precision at high values, brightness values are premultiplied by an exposure normalization value.

In support of Physical Light Units this PR also renames CameraEffects to CameraAttributes.
This commit is contained in:
clayjohn
2022-07-31 16:20:24 -07:00
parent 736632ee7e
commit 385ee5c70b
131 changed files with 2692 additions and 1283 deletions

View File

@@ -224,8 +224,8 @@ void RendererSceneRender::environment_set_bg_color(RID p_env, const Color &p_col
environment_storage.environment_set_bg_color(p_env, p_color);
}
void RendererSceneRender::environment_set_bg_energy(RID p_env, float p_energy) {
environment_storage.environment_set_bg_energy(p_env, p_energy);
void RendererSceneRender::environment_set_bg_energy(RID p_env, float p_multiplier, float p_exposure_value) {
environment_storage.environment_set_bg_energy(p_env, p_multiplier, p_exposure_value);
}
void RendererSceneRender::environment_set_canvas_max_layer(RID p_env, int p_max_layer) {
@@ -256,8 +256,12 @@ Color RendererSceneRender::environment_get_bg_color(RID p_env) const {
return environment_storage.environment_get_bg_color(p_env);
}
float RendererSceneRender::environment_get_bg_energy(RID p_env) const {
return environment_storage.environment_get_bg_energy(p_env);
float RendererSceneRender::environment_get_bg_energy_multiplier(RID p_env) const {
return environment_storage.environment_get_bg_energy_multiplier(p_env);
}
float RendererSceneRender::environment_get_bg_intensity(RID p_env) const {
return environment_storage.environment_get_bg_intensity(p_env);
}
int RendererSceneRender::environment_get_canvas_max_layer(RID p_env) const {
@@ -286,8 +290,8 @@ RS::EnvironmentReflectionSource RendererSceneRender::environment_get_reflection_
// Tonemap
void RendererSceneRender::environment_set_tonemap(RID p_env, RS::EnvironmentToneMapper p_tone_mapper, float p_exposure, float p_white, bool p_auto_exposure, float p_min_luminance, float p_max_luminance, float p_auto_exp_speed, float p_auto_exp_scale) {
environment_storage.environment_set_tonemap(p_env, p_tone_mapper, p_exposure, p_white, p_auto_exposure, p_min_luminance, p_max_luminance, p_auto_exp_speed, p_auto_exp_scale);
void RendererSceneRender::environment_set_tonemap(RID p_env, RS::EnvironmentToneMapper p_tone_mapper, float p_exposure, float p_white) {
environment_storage.environment_set_tonemap(p_env, p_tone_mapper, p_exposure, p_white);
}
RS::EnvironmentToneMapper RendererSceneRender::environment_get_tone_mapper(RID p_env) const {
@@ -302,30 +306,6 @@ float RendererSceneRender::environment_get_white(RID p_env) const {
return environment_storage.environment_get_white(p_env);
}
bool RendererSceneRender::environment_get_auto_exposure(RID p_env) const {
return environment_storage.environment_get_auto_exposure(p_env);
}
float RendererSceneRender::environment_get_min_luminance(RID p_env) const {
return environment_storage.environment_get_min_luminance(p_env);
}
float RendererSceneRender::environment_get_max_luminance(RID p_env) const {
return environment_storage.environment_get_max_luminance(p_env);
}
float RendererSceneRender::environment_get_auto_exp_speed(RID p_env) const {
return environment_storage.environment_get_auto_exp_speed(p_env);
}
float RendererSceneRender::environment_get_auto_exp_scale(RID p_env) const {
return environment_storage.environment_get_auto_exp_scale(p_env);
}
uint64_t RendererSceneRender::environment_get_auto_exposure_version(RID p_env) const {
return environment_storage.environment_get_auto_exposure_version(p_env);
}
// Fog
void RendererSceneRender::environment_set_fog(RID p_env, bool p_enable, const Color &p_light_color, float p_light_energy, float p_sun_scatter, float p_density, float p_height, float p_height_density, float p_aerial_perspective) {