diff options
Diffstat (limited to 'servers/visual')
-rw-r--r-- | servers/visual/rasterizer.h | 5 | ||||
-rw-r--r-- | servers/visual/visual_server_raster.cpp | 2 | ||||
-rw-r--r-- | servers/visual/visual_server_raster.h | 3 | ||||
-rw-r--r-- | servers/visual/visual_server_scene.cpp | 6 | ||||
-rw-r--r-- | servers/visual/visual_server_viewport.cpp | 2 |
5 files changed, 16 insertions, 2 deletions
diff --git a/servers/visual/rasterizer.h b/servers/visual/rasterizer.h index 21f7f0769f..dd22986865 100644 --- a/servers/visual/rasterizer.h +++ b/servers/visual/rasterizer.h @@ -432,6 +432,9 @@ public: virtual void gi_probe_set_energy(RID p_probe,float p_range)=0; virtual float gi_probe_get_energy(RID p_probe) const=0; + virtual void gi_probe_set_bias(RID p_probe,float p_range)=0; + virtual float gi_probe_get_bias(RID p_probe) const=0; + virtual void gi_probe_set_propagation(RID p_probe,float p_range)=0; virtual float gi_probe_get_propagation(RID p_probe) const=0; @@ -519,6 +522,8 @@ public: virtual bool has_os_feature(const String& p_feature) const=0; + virtual void update_dirty_resources()=0; + static RasterizerStorage*base_signleton; RasterizerStorage(); virtual ~RasterizerStorage() {} diff --git a/servers/visual/visual_server_raster.cpp b/servers/visual/visual_server_raster.cpp index 8f87425212..3a5ffda8f5 100644 --- a/servers/visual/visual_server_raster.cpp +++ b/servers/visual/visual_server_raster.cpp @@ -28,7 +28,7 @@ /*************************************************************************/ #include "visual_server_raster.h" #include "os/os.h" -#include "globals.h" +#include "global_config.h" #include "default_mouse_cursor.xpm" #include "sort.h" #include "io/marshalls.h" diff --git a/servers/visual/visual_server_raster.h b/servers/visual/visual_server_raster.h index ad0cb664c5..7d547e1862 100644 --- a/servers/visual/visual_server_raster.h +++ b/servers/visual/visual_server_raster.h @@ -825,6 +825,9 @@ public: BIND2(gi_probe_set_energy,RID,float) BIND1RC(float,gi_probe_get_energy,RID) + BIND2(gi_probe_set_bias,RID,float) + BIND1RC(float,gi_probe_get_bias,RID) + BIND2(gi_probe_set_propagation,RID,float) BIND1RC(float,gi_probe_get_propagation,RID) diff --git a/servers/visual/visual_server_scene.cpp b/servers/visual/visual_server_scene.cpp index c54f3dbca5..6f7b2e3aed 100644 --- a/servers/visual/visual_server_scene.cpp +++ b/servers/visual/visual_server_scene.cpp @@ -1556,9 +1556,11 @@ void VisualServerScene::_light_instance_update_shadow(Instance *p_instance,const cull_count--; SWAP(instance_shadow_cull_result[j],instance_shadow_cull_result[cull_count]); j--; + continue; } + instance->transformed_aabb.project_range_in_plane(Plane(z_vec,0),min,max); if (max>z_max) z_max=max; @@ -3475,6 +3477,7 @@ void VisualServerScene::_update_dirty_instance(Instance *p_instance) { } else if (p_instance->base_type==VS::INSTANCE_MULTIMESH) { RID mesh = VSG::storage->multimesh_get_mesh(p_instance->base); if (mesh.is_valid()) { + bool cast_shadows=false; int sc = VSG::storage->mesh_get_surface_count(mesh); @@ -3491,6 +3494,7 @@ void VisualServerScene::_update_dirty_instance(Instance *p_instance) { cast_shadows=true; break; } + } if (!cast_shadows) { @@ -3538,6 +3542,8 @@ void VisualServerScene::_update_dirty_instance(Instance *p_instance) { void VisualServerScene::update_dirty_instances() { + VSG::storage->update_dirty_resources(); + while(_instance_update_list.first()) { _update_dirty_instance( _instance_update_list.first()->self() ); diff --git a/servers/visual/visual_server_viewport.cpp b/servers/visual/visual_server_viewport.cpp index d2ee32f9cc..d32c4dd6bf 100644 --- a/servers/visual/visual_server_viewport.cpp +++ b/servers/visual/visual_server_viewport.cpp @@ -2,7 +2,7 @@ #include "visual_server_global.h" #include "visual_server_canvas.h" #include "visual_server_scene.h" -#include "globals.h" +#include "global_config.h" |