EEVEE-Next: Light-Probe: Make volume probe display relative

This avoid overlap of data spheres when density changes.
This commit is contained in:
Clément Foucault
2024-04-23 21:47:31 +02:00
parent 0023d850e3
commit 3e9796c7c3

View File

@@ -98,8 +98,14 @@ void LightProbeModule::sync_volume(const Object *ob, ObjectHandle &handle)
grid.dilation_radius = lightprobe->grid_dilation_radius;
grid.intensity = lightprobe->intensity;
grid.viewport_display = lightprobe->flag & LIGHTPROBE_FLAG_SHOW_DATA;
grid.viewport_display_size = lightprobe->data_display_size;
const bool has_valid_cache = grid.cache && grid.cache->grid_static_cache;
grid.viewport_display = has_valid_cache && (lightprobe->flag & LIGHTPROBE_FLAG_SHOW_DATA);
if (grid.viewport_display) {
int3 cache_size = grid.cache->grid_static_cache->size;
float3 scale = math::transform_direction(ob->object_to_world(),
1.0f / float3(cache_size + 1));
grid.viewport_display_size = math::reduce_min(scale) * lightprobe->data_display_size;
}
/* Force reupload. */
inst_.volume_probes.bricks_free(grid.bricks);