diff options
author | Hugo Locurcio <hugo.locurcio@hugo.pro> | 2022-05-28 12:48:49 +0200 |
---|---|---|
committer | Hugo Locurcio <hugo.locurcio@hugo.pro> | 2023-02-13 22:01:49 +0100 |
commit | 8b1de103a88e4298b94f2f3b63ce1469ef660684 (patch) | |
tree | d2194a1003e292421e28bd5e22262b18b2f5baa6 | |
parent | 853c36ca0b6a4b8982215115b1fb1b62b58f2d98 (diff) |
Clamp Decal size to positive values
This prevents using negative size, while also preventing
error messages from being spammed if one of the decal's dimensions
is set to exactly 0.
-rw-r--r-- | doc/classes/Decal.xml | 3 | ||||
-rw-r--r-- | scene/3d/decal.cpp | 2 |
2 files changed, 3 insertions, 2 deletions
diff --git a/doc/classes/Decal.xml b/doc/classes/Decal.xml index b63f6e7252..75974664a7 100644 --- a/doc/classes/Decal.xml +++ b/doc/classes/Decal.xml @@ -87,7 +87,8 @@ [b]Note:[/b] Setting [member normal_fade] to a value greater than [code]0.0[/code] has a small performance cost due to the added normal angle computations. </member> <member name="size" type="Vector3" setter="set_size" getter="get_size" default="Vector3(2, 2, 2)"> - Sets the size of the [AABB] used by the decal. The AABB goes from [code]-size/2[/code] to [code]size/2[/code]. + Sets the size of the [AABB] used by the decal. All dimensions must be set to a value greater than zero (they will be clamped to [code]0.001[/code] if this is not the case). The AABB goes from [code]-size/2[/code] to [code]size/2[/code]. + [b]Note:[/b] To improve culling efficiency of "hard surface" decals, set their [member upper_fade] and [member lower_fade] to [code]0.0[/code] and set the Y component of the [member size] as low as possible. This will reduce the decals' AABB size without affecting their appearance. </member> <member name="texture_albedo" type="Texture2D" setter="set_texture" getter="get_texture"> [Texture2D] with the base [Color] of the Decal. Either this or the [member texture_emission] must be set for the Decal to be visible. Use the alpha channel like a mask to smoothly blend the edges of the decal with the underlying object. diff --git a/scene/3d/decal.cpp b/scene/3d/decal.cpp index e122adcc8c..6f2717fd41 100644 --- a/scene/3d/decal.cpp +++ b/scene/3d/decal.cpp @@ -31,7 +31,7 @@ #include "decal.h" void Decal::set_size(const Vector3 &p_size) { - size = p_size; + size = Vector3(MAX(0.001, p_size.x), MAX(0.001, p_size.y), MAX(0.001, p_size.z)); RS::get_singleton()->decal_set_size(decal, p_size); update_gizmos(); } |