You've already forked godot
mirror of
https://github.com/godotengine/godot.git
synced 2025-11-11 13:10:58 +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:
@@ -2375,12 +2375,12 @@ void Node3DEditorPlugin::edited_scene_changed() {
|
||||
|
||||
void Node3DEditorViewport::_project_settings_changed() {
|
||||
//update shadow atlas if changed
|
||||
int shadowmap_size = ProjectSettings::get_singleton()->get("rendering/shadows/positional_shadow/atlas_size");
|
||||
bool shadowmap_16_bits = ProjectSettings::get_singleton()->get("rendering/shadows/positional_shadow/atlas_16_bits");
|
||||
int atlas_q0 = ProjectSettings::get_singleton()->get("rendering/shadows/positional_shadow/atlas_quadrant_0_subdiv");
|
||||
int atlas_q1 = ProjectSettings::get_singleton()->get("rendering/shadows/positional_shadow/atlas_quadrant_1_subdiv");
|
||||
int atlas_q2 = ProjectSettings::get_singleton()->get("rendering/shadows/positional_shadow/atlas_quadrant_2_subdiv");
|
||||
int atlas_q3 = ProjectSettings::get_singleton()->get("rendering/shadows/positional_shadow/atlas_quadrant_3_subdiv");
|
||||
int shadowmap_size = ProjectSettings::get_singleton()->get("rendering/lights_and_shadows/positional_shadow/atlas_size");
|
||||
bool shadowmap_16_bits = ProjectSettings::get_singleton()->get("rendering/lights_and_shadows/positional_shadow/atlas_16_bits");
|
||||
int atlas_q0 = ProjectSettings::get_singleton()->get("rendering/lights_and_shadows/positional_shadow/atlas_quadrant_0_subdiv");
|
||||
int atlas_q1 = ProjectSettings::get_singleton()->get("rendering/lights_and_shadows/positional_shadow/atlas_quadrant_1_subdiv");
|
||||
int atlas_q2 = ProjectSettings::get_singleton()->get("rendering/lights_and_shadows/positional_shadow/atlas_quadrant_2_subdiv");
|
||||
int atlas_q3 = ProjectSettings::get_singleton()->get("rendering/lights_and_shadows/positional_shadow/atlas_quadrant_3_subdiv");
|
||||
|
||||
viewport->set_positional_shadow_atlas_size(shadowmap_size);
|
||||
viewport->set_positional_shadow_atlas_16_bits(shadowmap_16_bits);
|
||||
@@ -7122,6 +7122,9 @@ void Node3DEditor::_add_environment_to_scene(bool p_already_added_sun) {
|
||||
|
||||
WorldEnvironment *new_env = memnew(WorldEnvironment);
|
||||
new_env->set_environment(preview_environment->get_environment()->duplicate(true));
|
||||
if (GLOBAL_GET("rendering/lights_and_shadows/use_physical_light_units")) {
|
||||
new_env->set_camera_attributes(preview_environment->get_camera_attributes()->duplicate(true));
|
||||
}
|
||||
|
||||
undo_redo->create_action(TTR("Add Preview Environment to Scene"));
|
||||
undo_redo->add_do_method(base, "add_child", new_env, true);
|
||||
@@ -7588,7 +7591,7 @@ void Node3DEditor::_preview_settings_changed() {
|
||||
}
|
||||
|
||||
{ //preview env
|
||||
sky_material->set_sky_energy(environ_energy->get_value());
|
||||
sky_material->set_sky_energy_multiplier(environ_energy->get_value());
|
||||
Color hz_color = environ_sky_color->get_pick_color().lerp(environ_ground_color->get_pick_color(), 0.5).lerp(Color(1, 1, 1), 0.5);
|
||||
sky_material->set_sky_top_color(environ_sky_color->get_pick_color());
|
||||
sky_material->set_sky_horizon_color(hz_color);
|
||||
@@ -8308,6 +8311,10 @@ void fragment() {
|
||||
preview_environment = memnew(WorldEnvironment);
|
||||
environment.instantiate();
|
||||
preview_environment->set_environment(environment);
|
||||
if (GLOBAL_GET("rendering/lights_and_shadows/use_physical_light_units")) {
|
||||
camera_attributes.instantiate();
|
||||
preview_environment->set_camera_attributes(camera_attributes);
|
||||
}
|
||||
Ref<Sky> sky;
|
||||
sky.instantiate();
|
||||
sky_material.instantiate();
|
||||
|
||||
Reference in New Issue
Block a user