diff options
author | reduz <reduzio@gmail.com> | 2021-07-05 22:40:29 -0300 |
---|---|---|
committer | reduz <reduzio@gmail.com> | 2021-07-07 10:57:56 -0300 |
commit | d41e3f9aebf294ccb6238795b8cfb3c815ea3a93 (patch) | |
tree | 01fd4469b3de3f20e2d96c224c764ec0d2931d32 /scene/3d | |
parent | 8cd1b59ea78f5145eae1762e2b1311c1a1b92cbc (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.cpp | 7 |
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); + } } } |