|
@@ -1001,10 +1001,16 @@ LightmapGI::BakeError LightmapGI::bake(Node *p_from_node, String p_image_data_pa
|
|
|
lightmapper->add_directional_light(light->get_bake_mode() == Light3D::BAKE_STATIC, -xf.basis.get_column(Vector3::AXIS_Z).normalized(), linear_color, energy, l->get_param(Light3D::PARAM_SIZE), l->get_param(Light3D::PARAM_SHADOW_BLUR));
|
|
|
} else if (Object::cast_to<OmniLight3D>(light)) {
|
|
|
OmniLight3D *l = Object::cast_to<OmniLight3D>(light);
|
|
|
- lightmapper->add_omni_light(light->get_bake_mode() == Light3D::BAKE_STATIC, xf.origin, linear_color, energy * (1.0 / (Math_PI * 4.0)), l->get_param(Light3D::PARAM_RANGE), l->get_param(Light3D::PARAM_ATTENUATION), l->get_param(Light3D::PARAM_SIZE), l->get_param(Light3D::PARAM_SHADOW_BLUR));
|
|
|
+ if (GLOBAL_GET("rendering/lights_and_shadows/use_physical_light_units")) {
|
|
|
+ energy *= (1.0 / (Math_PI * 4.0));
|
|
|
+ }
|
|
|
+ lightmapper->add_omni_light(light->get_bake_mode() == Light3D::BAKE_STATIC, xf.origin, linear_color, energy, l->get_param(Light3D::PARAM_RANGE), l->get_param(Light3D::PARAM_ATTENUATION), l->get_param(Light3D::PARAM_SIZE), l->get_param(Light3D::PARAM_SHADOW_BLUR));
|
|
|
} else if (Object::cast_to<SpotLight3D>(light)) {
|
|
|
SpotLight3D *l = Object::cast_to<SpotLight3D>(light);
|
|
|
- lightmapper->add_spot_light(light->get_bake_mode() == Light3D::BAKE_STATIC, xf.origin, -xf.basis.get_column(Vector3::AXIS_Z).normalized(), linear_color, energy * (1.0 / Math_PI), l->get_param(Light3D::PARAM_RANGE), l->get_param(Light3D::PARAM_ATTENUATION), l->get_param(Light3D::PARAM_SPOT_ANGLE), l->get_param(Light3D::PARAM_SPOT_ATTENUATION), l->get_param(Light3D::PARAM_SIZE), l->get_param(Light3D::PARAM_SHADOW_BLUR));
|
|
|
+ if (GLOBAL_GET("rendering/lights_and_shadows/use_physical_light_units")) {
|
|
|
+ energy *= (1.0 / Math_PI);
|
|
|
+ }
|
|
|
+ lightmapper->add_spot_light(light->get_bake_mode() == Light3D::BAKE_STATIC, xf.origin, -xf.basis.get_column(Vector3::AXIS_Z).normalized(), linear_color, energy, l->get_param(Light3D::PARAM_RANGE), l->get_param(Light3D::PARAM_ATTENUATION), l->get_param(Light3D::PARAM_SPOT_ANGLE), l->get_param(Light3D::PARAM_SPOT_ATTENUATION), l->get_param(Light3D::PARAM_SIZE), l->get_param(Light3D::PARAM_SHADOW_BLUR));
|
|
|
}
|
|
|
}
|
|
|
for (int i = 0; i < probes_found.size(); i++) {
|
|
@@ -1061,7 +1067,10 @@ LightmapGI::BakeError LightmapGI::bake(Node *p_from_node, String p_image_data_pa
|
|
|
|
|
|
float exposure_normalization = 1.0;
|
|
|
if (camera_attributes.is_valid()) {
|
|
|
- exposure_normalization = camera_attributes->calculate_exposure_normalization() * camera_attributes->get_exposure_multiplier();
|
|
|
+ exposure_normalization = camera_attributes->get_exposure_multiplier();
|
|
|
+ if (GLOBAL_GET("rendering/lights_and_shadows/use_physical_light_units")) {
|
|
|
+ exposure_normalization = camera_attributes->calculate_exposure_normalization();
|
|
|
+ }
|
|
|
}
|
|
|
|
|
|
Lightmapper::BakeError bake_err = lightmapper->bake(Lightmapper::BakeQuality(bake_quality), use_denoiser, bounces, bias, max_texture_size, directional, Lightmapper::GenerateProbes(gen_probes), environment_image, environment_transform, _lightmap_bake_step_function, &bsud, exposure_normalization);
|