diff options
author | Juan Linietsky <reduzio@gmail.com> | 2020-04-16 23:52:00 -0300 |
---|---|---|
committer | Juan Linietsky <reduzio@gmail.com> | 2020-04-17 12:35:41 -0300 |
commit | 0e1c66d9fced8f9d3a8fbd87ddfd2c29a9ed2679 (patch) | |
tree | 20628329f16f74383806fecf9e3135816636e6fb /scene/3d/visual_instance_3d.h | |
parent | 30ab5c9baae1cad3e157d906395a4eb8cef77e42 (diff) | |
download | redot-engine-0e1c66d9fced8f9d3a8fbd87ddfd2c29a9ed2679.tar.gz |
Implement global and per instance shader uniforms.
Adds two keywords to shader language for uniforms:
-'global'
-'instance'
This allows them to reference values outside the material.
Diffstat (limited to 'scene/3d/visual_instance_3d.h')
-rw-r--r-- | scene/3d/visual_instance_3d.h | 12 |
1 files changed, 12 insertions, 0 deletions
diff --git a/scene/3d/visual_instance_3d.h b/scene/3d/visual_instance_3d.h index 9476c28848..cc5f92066f 100644 --- a/scene/3d/visual_instance_3d.h +++ b/scene/3d/visual_instance_3d.h @@ -108,9 +108,18 @@ private: float lod_min_hysteresis; float lod_max_hysteresis; + mutable HashMap<StringName, Variant> instance_uniforms; + mutable HashMap<StringName, StringName> instance_uniform_property_remap; + float extra_cull_margin; + const StringName *_instance_uniform_get_remap(const StringName p_name) const; + protected: + bool _set(const StringName &p_name, const Variant &p_value); + bool _get(const StringName &p_name, Variant &r_ret) const; + void _get_property_list(List<PropertyInfo> *p_list) const; + void _notification(int p_what); static void _bind_methods(); @@ -139,6 +148,9 @@ public: void set_extra_cull_margin(float p_margin); float get_extra_cull_margin() const; + void set_shader_instance_uniform(const StringName &p_uniform, const Variant &p_value); + Variant get_shader_instance_uniform(const StringName &p_uniform) const; + void set_custom_aabb(AABB aabb); GeometryInstance3D(); |