ソースを参照

Remove unexposed ProxyTexture, mark AnimatedTexture as deprecated

According to reduz:

> [AnimatedTexture] should be removed together with ProxyTexture, its just
> not efficient at all in Vulkan and causes invalidation of all descriptor
> sets depending on it
> it was needed mostly for animated tilemaps, but nowadays there is not a lot
> of reason for it

Marking AnimatedTexture as deprecated accordingly, until we reach consensus
for removing it completely.
Rémi Verschelde 2 年 前
コミット
1075931c64
3 ファイル変更2 行追加91 行削除
  1. 2 1
      doc/classes/AnimatedTexture.xml
  2. 0 67
      scene/resources/texture.cpp
  3. 0 23
      scene/resources/texture.h

+ 2 - 1
doc/classes/AnimatedTexture.xml

@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="UTF-8" ?>
 <?xml version="1.0" encoding="UTF-8" ?>
-<class name="AnimatedTexture" inherits="Texture2D" version="4.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../class.xsd">
+<class name="AnimatedTexture" inherits="Texture2D" is_deprecated="true" version="4.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../class.xsd">
 	<brief_description>
 	<brief_description>
 		Proxy texture for simple frame-based animations.
 		Proxy texture for simple frame-based animations.
 	</brief_description>
 	</brief_description>
@@ -8,6 +8,7 @@
 		The playback of the animation is controlled by the [member speed_scale] property, as well as each frame's duration (see [method set_frame_duration]). The animation loops, i.e. it will restart at frame 0 automatically after playing the last frame.
 		The playback of the animation is controlled by the [member speed_scale] property, as well as each frame's duration (see [method set_frame_duration]). The animation loops, i.e. it will restart at frame 0 automatically after playing the last frame.
 		[AnimatedTexture] currently requires all frame textures to have the same size, otherwise the bigger ones will be cropped to match the smallest one.
 		[AnimatedTexture] currently requires all frame textures to have the same size, otherwise the bigger ones will be cropped to match the smallest one.
 		[b]Note:[/b] AnimatedTexture doesn't support using [AtlasTexture]s. Each frame needs to be a separate [Texture2D].
 		[b]Note:[/b] AnimatedTexture doesn't support using [AtlasTexture]s. Each frame needs to be a separate [Texture2D].
+		[b]Warning:[/b] AnimatedTexture is deprecated, and might be removed in a future release. Its current implementation is not efficient for the modern renderers.
 	</description>
 	</description>
 	<tutorials>
 	<tutorials>
 	</tutorials>
 	</tutorials>

+ 0 - 67
scene/resources/texture.cpp

@@ -2566,73 +2566,6 @@ void GradientTexture2D::_bind_methods() {
 
 
 //////////////////////////////////////
 //////////////////////////////////////
 
 
-void ProxyTexture::set_base(const Ref<Texture2D> &p_texture) {
-	ERR_FAIL_COND(p_texture == this);
-
-	base = p_texture;
-	if (base.is_valid()) {
-		ERR_FAIL_NULL(RenderingServer::get_singleton());
-		if (proxy_ph.is_valid()) {
-			RS::get_singleton()->texture_proxy_update(proxy, base->get_rid());
-			RS::get_singleton()->free(proxy_ph);
-			proxy_ph = RID();
-		} else if (proxy.is_valid()) {
-			RS::get_singleton()->texture_proxy_update(proxy, base->get_rid());
-		} else {
-			proxy = RS::get_singleton()->texture_proxy_create(base->get_rid());
-		}
-	}
-}
-
-Ref<Texture2D> ProxyTexture::get_base() const {
-	return base;
-}
-
-int ProxyTexture::get_width() const {
-	if (base.is_valid()) {
-		return base->get_width();
-	}
-	return 1;
-}
-
-int ProxyTexture::get_height() const {
-	if (base.is_valid()) {
-		return base->get_height();
-	}
-	return 1;
-}
-
-RID ProxyTexture::get_rid() const {
-	if (proxy.is_null()) {
-		proxy_ph = RS::get_singleton()->texture_2d_placeholder_create();
-		proxy = RS::get_singleton()->texture_proxy_create(proxy_ph);
-	}
-	return proxy;
-}
-
-bool ProxyTexture::has_alpha() const {
-	if (base.is_valid()) {
-		return base->has_alpha();
-	}
-	return false;
-}
-
-ProxyTexture::ProxyTexture() {
-	//proxy = RS::get_singleton()->texture_create();
-}
-
-ProxyTexture::~ProxyTexture() {
-	ERR_FAIL_NULL(RenderingServer::get_singleton());
-	if (proxy_ph.is_valid()) {
-		RS::get_singleton()->free(proxy_ph);
-	}
-	if (proxy.is_valid()) {
-		RS::get_singleton()->free(proxy);
-	}
-}
-
-//////////////////////////////////////////////
-
 void AnimatedTexture::_update_proxy() {
 void AnimatedTexture::_update_proxy() {
 	RWLockRead r(rw_lock);
 	RWLockRead r(rw_lock);
 
 

+ 0 - 23
scene/resources/texture.h

@@ -892,29 +892,6 @@ public:
 VARIANT_ENUM_CAST(GradientTexture2D::Fill);
 VARIANT_ENUM_CAST(GradientTexture2D::Fill);
 VARIANT_ENUM_CAST(GradientTexture2D::Repeat);
 VARIANT_ENUM_CAST(GradientTexture2D::Repeat);
 
 
-class ProxyTexture : public Texture2D {
-private:
-	mutable RID proxy_ph;
-	mutable RID proxy;
-	Ref<Texture2D> base;
-
-protected:
-	static void _bind_methods();
-
-public:
-	void set_base(const Ref<Texture2D> &p_texture);
-	Ref<Texture2D> get_base() const;
-
-	virtual int get_width() const override;
-	virtual int get_height() const override;
-	virtual RID get_rid() const override;
-
-	virtual bool has_alpha() const override;
-
-	ProxyTexture();
-	~ProxyTexture();
-};
-
 class AnimatedTexture : public Texture2D {
 class AnimatedTexture : public Texture2D {
 	GDCLASS(AnimatedTexture, Texture2D);
 	GDCLASS(AnimatedTexture, Texture2D);