diff options
Diffstat (limited to 'scene/resources/material.h')
-rw-r--r-- | scene/resources/material.h | 26 |
1 files changed, 20 insertions, 6 deletions
diff --git a/scene/resources/material.h b/scene/resources/material.h index 2c297cda41..f43d240a53 100644 --- a/scene/resources/material.h +++ b/scene/resources/material.h @@ -92,6 +92,8 @@ protected: virtual bool _can_do_next_pass() const; + void _shader_changed(); + public: void set_shader(const Ref<Shader> &p_shader); Ref<Shader> get_shader() const; @@ -181,6 +183,7 @@ public: FLAG_SRGB_VERTEX_COLOR, FLAG_USE_POINT_SIZE, FLAG_FIXED_SIZE, + FLAG_BILLBOARD_KEEP_SCALE, FLAG_UV1_USE_TRIPLANAR, FLAG_UV2_USE_TRIPLANAR, FLAG_TRIPLANAR_USE_WORLD, @@ -188,6 +191,9 @@ public: FLAG_EMISSION_ON_UV2, FLAG_USE_ALPHA_SCISSOR, FLAG_ALBEDO_TEXTURE_FORCE_SRGB, + FLAG_DONT_RECEIVE_SHADOWS, + FLAG_ENSURE_CORRECT_NORMALS, + FLAG_DISABLE_AMBIENT_LIGHT, FLAG_MAX }; @@ -227,6 +233,13 @@ public: EMISSION_OP_MULTIPLY }; + enum DistanceFadeMode { + DISTANCE_FADE_DISABLED, + DISTANCE_FADE_PIXEL_ALPHA, + DISTANCE_FADE_PIXEL_DITHER, + DISTANCE_FADE_OBJECT_DITHER, + }; + private: union MaterialKey { @@ -236,7 +249,7 @@ private: uint64_t blend_mode : 2; uint64_t depth_draw_mode : 2; uint64_t cull_mode : 2; - uint64_t flags : 14; + uint64_t flags : 18; uint64_t detail_blend_mode : 2; uint64_t diffuse_mode : 3; uint64_t specular_mode : 2; @@ -245,7 +258,7 @@ private: uint64_t billboard_mode : 2; uint64_t grow : 1; uint64_t proximity_fade : 1; - uint64_t distance_fade : 1; + uint64_t distance_fade : 2; uint64_t emission_op : 1; }; @@ -290,7 +303,7 @@ private: mk.deep_parallax = deep_parallax ? 1 : 0; mk.grow = grow_enabled; mk.proximity_fade = proximity_fade_enabled; - mk.distance_fade = distance_fade_enabled; + mk.distance_fade = distance_fade; mk.emission_op = emission_op; return mk; @@ -396,7 +409,7 @@ private: bool proximity_fade_enabled; float proximity_fade_distance; - bool distance_fade_enabled; + DistanceFadeMode distance_fade; float distance_fade_max_distance; float distance_fade_min_distance; @@ -577,8 +590,8 @@ public: void set_proximity_fade_distance(float p_distance); float get_proximity_fade_distance() const; - void set_distance_fade(bool p_enable); - bool is_distance_fade_enabled() const; + void set_distance_fade(DistanceFadeMode p_mode); + DistanceFadeMode get_distance_fade() const; void set_distance_fade_max_distance(float p_distance); float get_distance_fade_max_distance() const; @@ -624,6 +637,7 @@ VARIANT_ENUM_CAST(SpatialMaterial::SpecularMode) VARIANT_ENUM_CAST(SpatialMaterial::BillboardMode) VARIANT_ENUM_CAST(SpatialMaterial::TextureChannel) VARIANT_ENUM_CAST(SpatialMaterial::EmissionOperator) +VARIANT_ENUM_CAST(SpatialMaterial::DistanceFadeMode) ////////////////////// |