summaryrefslogtreecommitdiff
path: root/scene/3d
diff options
context:
space:
mode:
authorreduz <reduzio@gmail.com>2021-07-05 22:40:29 -0300
committerreduz <reduzio@gmail.com>2021-07-07 10:57:56 -0300
commitd41e3f9aebf294ccb6238795b8cfb3c815ea3a93 (patch)
tree01fd4469b3de3f20e2d96c224c764ec0d2931d32 /scene/3d
parent8cd1b59ea78f5145eae1762e2b1311c1a1b92cbc (diff)
Fix Command Queue Crash
* No longer allow sending an object (texture) to the server as material parameter * Keep a parameter cache locally in ShaderMaterial
Diffstat (limited to 'scene/3d')
-rw-r--r--scene/3d/visual_instance_3d.cpp7
1 files changed, 6 insertions, 1 deletions
diff --git a/scene/3d/visual_instance_3d.cpp b/scene/3d/visual_instance_3d.cpp
index 471dc03d62..c0ba2292eb 100644
--- a/scene/3d/visual_instance_3d.cpp
+++ b/scene/3d/visual_instance_3d.cpp
@@ -293,7 +293,12 @@ void GeometryInstance3D::set_shader_instance_uniform(const StringName &p_uniform
instance_uniforms.erase(p_value);
} else {
instance_uniforms[p_uniform] = p_value;
- RS::get_singleton()->instance_geometry_set_shader_parameter(get_instance(), p_uniform, p_value);
+ if (p_value.get_type() == Variant::OBJECT) {
+ RID tex_id = p_value;
+ RS::get_singleton()->instance_geometry_set_shader_parameter(get_instance(), p_uniform, tex_id);
+ } else {
+ RS::get_singleton()->instance_geometry_set_shader_parameter(get_instance(), p_uniform, p_value);
+ }
}
}