diff options
author | RĂ©mi Verschelde <remi@verschelde.fr> | 2022-08-26 16:11:31 +0200 |
---|---|---|
committer | GitHub <noreply@github.com> | 2022-08-26 16:11:31 +0200 |
commit | c54125d17b01c0ba6054f304a324a428c3c44431 (patch) | |
tree | 3a961c4693d832cfb59116e5355b28bd254afc22 | |
parent | ecfff5b75e175a34cf891b4e0547ab761f212d44 (diff) | |
parent | 394d0584207378ecf330dad5cd3bd008ad535b47 (diff) |
Merge pull request #64864 from aaronfranke/noise-texture-2d
-rw-r--r-- | modules/noise/config.py | 2 | ||||
-rw-r--r-- | modules/noise/doc_classes/NoiseTexture2D.xml (renamed from modules/noise/doc_classes/NoiseTexture.xml) | 6 | ||||
-rw-r--r-- | modules/noise/editor/noise_editor_plugin.cpp | 4 | ||||
-rw-r--r-- | modules/noise/noise_texture_2d.cpp (renamed from modules/noise/noise_texture.cpp) | 130 | ||||
-rw-r--r-- | modules/noise/noise_texture_2d.h (renamed from modules/noise/noise_texture.h) | 16 | ||||
-rw-r--r-- | modules/noise/register_types.cpp | 5 |
6 files changed, 82 insertions, 81 deletions
diff --git a/modules/noise/config.py b/modules/noise/config.py index 74db20f2a4..2318d28c53 100644 --- a/modules/noise/config.py +++ b/modules/noise/config.py @@ -10,7 +10,7 @@ def get_doc_classes(): return [ "FastNoiseLite", "Noise", - "NoiseTexture", + "NoiseTexture2D", ] diff --git a/modules/noise/doc_classes/NoiseTexture.xml b/modules/noise/doc_classes/NoiseTexture2D.xml index 62a223b387..9eea2738c5 100644 --- a/modules/noise/doc_classes/NoiseTexture.xml +++ b/modules/noise/doc_classes/NoiseTexture2D.xml @@ -1,14 +1,14 @@ <?xml version="1.0" encoding="UTF-8" ?> -<class name="NoiseTexture" inherits="Texture2D" version="4.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../../doc/class.xsd"> +<class name="NoiseTexture2D" inherits="Texture2D" version="4.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../../doc/class.xsd"> <brief_description> A texture filled with noise generated by a [Noise] object. </brief_description> <description> Uses [FastNoiseLite] or other libraries to fill the texture data of your desired size. - NoiseTexture can also generate normalmap textures. + NoiseTexture2D can also generate normalmap textures. The class uses [Thread]s to generate the texture data internally, so [method Texture2D.get_image] may return [code]null[/code] if the generation process has not completed yet. In that case, you need to wait for the texture to be generated before accessing the image and the generated byte data: [codeblock] - var texture = NoiseTexture.new() + var texture = NoiseTexture2D.new() texture.noise = FastNoiseLite.new() await texture.changed var image = texture.get_image() diff --git a/modules/noise/editor/noise_editor_plugin.cpp b/modules/noise/editor/noise_editor_plugin.cpp index 27a86f45b5..b6f7cbd2f8 100644 --- a/modules/noise/editor/noise_editor_plugin.cpp +++ b/modules/noise/editor/noise_editor_plugin.cpp @@ -35,7 +35,7 @@ #include "editor/editor_scale.h" #include "modules/noise/noise.h" -#include "modules/noise/noise_texture.h" +#include "modules/noise/noise_texture_2d.h" class NoisePreview : public Control { GDCLASS(NoisePreview, Control) @@ -102,7 +102,7 @@ private: void update_preview() { if (MIN(_preview_texture_size.width, _preview_texture_size.height) > 0) { - Ref<NoiseTexture> tex; + Ref<NoiseTexture2D> tex; tex.instantiate(); tex->set_width(_preview_texture_size.width); tex->set_height(_preview_texture_size.height); diff --git a/modules/noise/noise_texture.cpp b/modules/noise/noise_texture_2d.cpp index 923b420581..8d279f9dd3 100644 --- a/modules/noise/noise_texture.cpp +++ b/modules/noise/noise_texture_2d.cpp @@ -1,5 +1,5 @@ /*************************************************************************/ -/* noise_texture.cpp */ +/* noise_texture_2d.cpp */ /*************************************************************************/ /* This file is part of: */ /* GODOT ENGINE */ @@ -28,58 +28,58 @@ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ -#include "noise_texture.h" +#include "noise_texture_2d.h" #include "core/core_string_names.h" #include "noise.h" -NoiseTexture::NoiseTexture() { +NoiseTexture2D::NoiseTexture2D() { noise = Ref<Noise>(); _queue_update(); } -NoiseTexture::~NoiseTexture() { +NoiseTexture2D::~NoiseTexture2D() { if (texture.is_valid()) { RS::get_singleton()->free(texture); } noise_thread.wait_to_finish(); } -void NoiseTexture::_bind_methods() { - ClassDB::bind_method(D_METHOD("_update_texture"), &NoiseTexture::_update_texture); - ClassDB::bind_method(D_METHOD("_generate_texture"), &NoiseTexture::_generate_texture); - ClassDB::bind_method(D_METHOD("_thread_done", "image"), &NoiseTexture::_thread_done); +void NoiseTexture2D::_bind_methods() { + ClassDB::bind_method(D_METHOD("_update_texture"), &NoiseTexture2D::_update_texture); + ClassDB::bind_method(D_METHOD("_generate_texture"), &NoiseTexture2D::_generate_texture); + ClassDB::bind_method(D_METHOD("_thread_done", "image"), &NoiseTexture2D::_thread_done); - ClassDB::bind_method(D_METHOD("set_width", "width"), &NoiseTexture::set_width); - ClassDB::bind_method(D_METHOD("set_height", "height"), &NoiseTexture::set_height); + ClassDB::bind_method(D_METHOD("set_width", "width"), &NoiseTexture2D::set_width); + ClassDB::bind_method(D_METHOD("set_height", "height"), &NoiseTexture2D::set_height); - ClassDB::bind_method(D_METHOD("set_invert", "invert"), &NoiseTexture::set_invert); - ClassDB::bind_method(D_METHOD("get_invert"), &NoiseTexture::get_invert); + ClassDB::bind_method(D_METHOD("set_invert", "invert"), &NoiseTexture2D::set_invert); + ClassDB::bind_method(D_METHOD("get_invert"), &NoiseTexture2D::get_invert); - ClassDB::bind_method(D_METHOD("set_in_3d_space", "enable"), &NoiseTexture::set_in_3d_space); - ClassDB::bind_method(D_METHOD("is_in_3d_space"), &NoiseTexture::is_in_3d_space); + ClassDB::bind_method(D_METHOD("set_in_3d_space", "enable"), &NoiseTexture2D::set_in_3d_space); + ClassDB::bind_method(D_METHOD("is_in_3d_space"), &NoiseTexture2D::is_in_3d_space); - ClassDB::bind_method(D_METHOD("set_generate_mipmaps", "invert"), &NoiseTexture::set_generate_mipmaps); - ClassDB::bind_method(D_METHOD("is_generating_mipmaps"), &NoiseTexture::is_generating_mipmaps); + ClassDB::bind_method(D_METHOD("set_generate_mipmaps", "invert"), &NoiseTexture2D::set_generate_mipmaps); + ClassDB::bind_method(D_METHOD("is_generating_mipmaps"), &NoiseTexture2D::is_generating_mipmaps); - ClassDB::bind_method(D_METHOD("set_seamless", "seamless"), &NoiseTexture::set_seamless); - ClassDB::bind_method(D_METHOD("get_seamless"), &NoiseTexture::get_seamless); + ClassDB::bind_method(D_METHOD("set_seamless", "seamless"), &NoiseTexture2D::set_seamless); + ClassDB::bind_method(D_METHOD("get_seamless"), &NoiseTexture2D::get_seamless); - ClassDB::bind_method(D_METHOD("set_seamless_blend_skirt", "seamless_blend_skirt"), &NoiseTexture::set_seamless_blend_skirt); - ClassDB::bind_method(D_METHOD("get_seamless_blend_skirt"), &NoiseTexture::get_seamless_blend_skirt); + ClassDB::bind_method(D_METHOD("set_seamless_blend_skirt", "seamless_blend_skirt"), &NoiseTexture2D::set_seamless_blend_skirt); + ClassDB::bind_method(D_METHOD("get_seamless_blend_skirt"), &NoiseTexture2D::get_seamless_blend_skirt); - ClassDB::bind_method(D_METHOD("set_as_normal_map", "as_normal_map"), &NoiseTexture::set_as_normal_map); - ClassDB::bind_method(D_METHOD("is_normal_map"), &NoiseTexture::is_normal_map); + ClassDB::bind_method(D_METHOD("set_as_normal_map", "as_normal_map"), &NoiseTexture2D::set_as_normal_map); + ClassDB::bind_method(D_METHOD("is_normal_map"), &NoiseTexture2D::is_normal_map); - ClassDB::bind_method(D_METHOD("set_bump_strength", "bump_strength"), &NoiseTexture::set_bump_strength); - ClassDB::bind_method(D_METHOD("get_bump_strength"), &NoiseTexture::get_bump_strength); + ClassDB::bind_method(D_METHOD("set_bump_strength", "bump_strength"), &NoiseTexture2D::set_bump_strength); + ClassDB::bind_method(D_METHOD("get_bump_strength"), &NoiseTexture2D::get_bump_strength); - ClassDB::bind_method(D_METHOD("set_color_ramp", "gradient"), &NoiseTexture::set_color_ramp); - ClassDB::bind_method(D_METHOD("get_color_ramp"), &NoiseTexture::get_color_ramp); + ClassDB::bind_method(D_METHOD("set_color_ramp", "gradient"), &NoiseTexture2D::set_color_ramp); + ClassDB::bind_method(D_METHOD("get_color_ramp"), &NoiseTexture2D::get_color_ramp); - ClassDB::bind_method(D_METHOD("set_noise", "noise"), &NoiseTexture::set_noise); - ClassDB::bind_method(D_METHOD("get_noise"), &NoiseTexture::get_noise); + ClassDB::bind_method(D_METHOD("set_noise", "noise"), &NoiseTexture2D::set_noise); + ClassDB::bind_method(D_METHOD("get_noise"), &NoiseTexture2D::get_noise); ADD_PROPERTY(PropertyInfo(Variant::INT, "width", PROPERTY_HINT_RANGE, "1,2048,1,or_greater,suffix:px"), "set_width", "get_width"); ADD_PROPERTY(PropertyInfo(Variant::INT, "height", PROPERTY_HINT_RANGE, "1,2048,1,or_greater,suffix:px"), "set_height", "get_height"); @@ -94,7 +94,7 @@ void NoiseTexture::_bind_methods() { ADD_PROPERTY(PropertyInfo(Variant::OBJECT, "noise", PROPERTY_HINT_RESOURCE_TYPE, "Noise"), "set_noise", "get_noise"); } -void NoiseTexture::_validate_property(PropertyInfo &p_property) const { +void NoiseTexture2D::_validate_property(PropertyInfo &p_property) const { if (p_property.name == "bump_strength") { if (!as_normal_map) { p_property.usage = PROPERTY_USAGE_NO_EDITOR; @@ -108,7 +108,7 @@ void NoiseTexture::_validate_property(PropertyInfo &p_property) const { } } -void NoiseTexture::_set_texture_image(const Ref<Image> &p_image) { +void NoiseTexture2D::_set_texture_image(const Ref<Image> &p_image) { image = p_image; if (image.is_valid()) { if (texture.is_valid()) { @@ -121,7 +121,7 @@ void NoiseTexture::_set_texture_image(const Ref<Image> &p_image) { emit_changed(); } -void NoiseTexture::_thread_done(const Ref<Image> &p_image) { +void NoiseTexture2D::_thread_done(const Ref<Image> &p_image) { _set_texture_image(p_image); noise_thread.wait_to_finish(); if (regen_queued) { @@ -130,12 +130,12 @@ void NoiseTexture::_thread_done(const Ref<Image> &p_image) { } } -void NoiseTexture::_thread_function(void *p_ud) { - NoiseTexture *tex = static_cast<NoiseTexture *>(p_ud); +void NoiseTexture2D::_thread_function(void *p_ud) { + NoiseTexture2D *tex = static_cast<NoiseTexture2D *>(p_ud); tex->call_deferred(SNAME("_thread_done"), tex->_generate_texture()); } -void NoiseTexture::_queue_update() { +void NoiseTexture2D::_queue_update() { if (update_queued) { return; } @@ -144,7 +144,7 @@ void NoiseTexture::_queue_update() { call_deferred(SNAME("_update_texture")); } -Ref<Image> NoiseTexture::_generate_texture() { +Ref<Image> NoiseTexture2D::_generate_texture() { // Prevent memdelete due to unref() on other thread. Ref<Noise> ref_noise = noise; @@ -172,7 +172,7 @@ Ref<Image> NoiseTexture::_generate_texture() { return image; } -Ref<Image> NoiseTexture::_modulate_with_gradient(Ref<Image> p_image, Ref<Gradient> p_gradient) { +Ref<Image> NoiseTexture2D::_modulate_with_gradient(Ref<Image> p_image, Ref<Gradient> p_gradient) { int width = p_image->get_width(); int height = p_image->get_height(); @@ -191,7 +191,7 @@ Ref<Image> NoiseTexture::_modulate_with_gradient(Ref<Image> p_image, Ref<Gradien return new_image; } -void NoiseTexture::_update_texture() { +void NoiseTexture2D::_update_texture() { bool use_thread = true; if (first_time) { use_thread = false; @@ -215,25 +215,25 @@ void NoiseTexture::_update_texture() { update_queued = false; } -void NoiseTexture::set_noise(Ref<Noise> p_noise) { +void NoiseTexture2D::set_noise(Ref<Noise> p_noise) { if (p_noise == noise) { return; } if (noise.is_valid()) { - noise->disconnect(CoreStringNames::get_singleton()->changed, callable_mp(this, &NoiseTexture::_queue_update)); + noise->disconnect(CoreStringNames::get_singleton()->changed, callable_mp(this, &NoiseTexture2D::_queue_update)); } noise = p_noise; if (noise.is_valid()) { - noise->connect(CoreStringNames::get_singleton()->changed, callable_mp(this, &NoiseTexture::_queue_update)); + noise->connect(CoreStringNames::get_singleton()->changed, callable_mp(this, &NoiseTexture2D::_queue_update)); } _queue_update(); } -Ref<Noise> NoiseTexture::get_noise() { +Ref<Noise> NoiseTexture2D::get_noise() { return noise; } -void NoiseTexture::set_width(int p_width) { +void NoiseTexture2D::set_width(int p_width) { ERR_FAIL_COND(p_width <= 0); if (p_width == size.x) { return; @@ -242,7 +242,7 @@ void NoiseTexture::set_width(int p_width) { _queue_update(); } -void NoiseTexture::set_height(int p_height) { +void NoiseTexture2D::set_height(int p_height) { ERR_FAIL_COND(p_height <= 0); if (p_height == size.y) { return; @@ -251,7 +251,7 @@ void NoiseTexture::set_height(int p_height) { _queue_update(); } -void NoiseTexture::set_invert(bool p_invert) { +void NoiseTexture2D::set_invert(bool p_invert) { if (p_invert == invert) { return; } @@ -259,22 +259,22 @@ void NoiseTexture::set_invert(bool p_invert) { _queue_update(); } -bool NoiseTexture::get_invert() const { +bool NoiseTexture2D::get_invert() const { return invert; } -void NoiseTexture::set_in_3d_space(bool p_enable) { +void NoiseTexture2D::set_in_3d_space(bool p_enable) { if (p_enable == in_3d_space) { return; } in_3d_space = p_enable; _queue_update(); } -bool NoiseTexture::is_in_3d_space() const { +bool NoiseTexture2D::is_in_3d_space() const { return in_3d_space; } -void NoiseTexture::set_generate_mipmaps(bool p_enable) { +void NoiseTexture2D::set_generate_mipmaps(bool p_enable) { if (p_enable == generate_mipmaps) { return; } @@ -282,11 +282,11 @@ void NoiseTexture::set_generate_mipmaps(bool p_enable) { _queue_update(); } -bool NoiseTexture::is_generating_mipmaps() const { +bool NoiseTexture2D::is_generating_mipmaps() const { return generate_mipmaps; } -void NoiseTexture::set_seamless(bool p_seamless) { +void NoiseTexture2D::set_seamless(bool p_seamless) { if (p_seamless == seamless) { return; } @@ -295,11 +295,11 @@ void NoiseTexture::set_seamless(bool p_seamless) { notify_property_list_changed(); } -bool NoiseTexture::get_seamless() { +bool NoiseTexture2D::get_seamless() { return seamless; } -void NoiseTexture::set_seamless_blend_skirt(real_t p_blend_skirt) { +void NoiseTexture2D::set_seamless_blend_skirt(real_t p_blend_skirt) { ERR_FAIL_COND(p_blend_skirt < 0.05 || p_blend_skirt > 1); if (p_blend_skirt == seamless_blend_skirt) { @@ -308,11 +308,11 @@ void NoiseTexture::set_seamless_blend_skirt(real_t p_blend_skirt) { seamless_blend_skirt = p_blend_skirt; _queue_update(); } -real_t NoiseTexture::get_seamless_blend_skirt() { +real_t NoiseTexture2D::get_seamless_blend_skirt() { return seamless_blend_skirt; } -void NoiseTexture::set_as_normal_map(bool p_as_normal_map) { +void NoiseTexture2D::set_as_normal_map(bool p_as_normal_map) { if (p_as_normal_map == as_normal_map) { return; } @@ -321,11 +321,11 @@ void NoiseTexture::set_as_normal_map(bool p_as_normal_map) { notify_property_list_changed(); } -bool NoiseTexture::is_normal_map() { +bool NoiseTexture2D::is_normal_map() { return as_normal_map; } -void NoiseTexture::set_bump_strength(float p_bump_strength) { +void NoiseTexture2D::set_bump_strength(float p_bump_strength) { if (p_bump_strength == bump_strength) { return; } @@ -335,37 +335,37 @@ void NoiseTexture::set_bump_strength(float p_bump_strength) { } } -float NoiseTexture::get_bump_strength() { +float NoiseTexture2D::get_bump_strength() { return bump_strength; } -void NoiseTexture::set_color_ramp(const Ref<Gradient> &p_gradient) { +void NoiseTexture2D::set_color_ramp(const Ref<Gradient> &p_gradient) { if (p_gradient == color_ramp) { return; } if (color_ramp.is_valid()) { - color_ramp->disconnect(CoreStringNames::get_singleton()->changed, callable_mp(this, &NoiseTexture::_queue_update)); + color_ramp->disconnect(CoreStringNames::get_singleton()->changed, callable_mp(this, &NoiseTexture2D::_queue_update)); } color_ramp = p_gradient; if (color_ramp.is_valid()) { - color_ramp->connect(CoreStringNames::get_singleton()->changed, callable_mp(this, &NoiseTexture::_queue_update)); + color_ramp->connect(CoreStringNames::get_singleton()->changed, callable_mp(this, &NoiseTexture2D::_queue_update)); } _queue_update(); } -Ref<Gradient> NoiseTexture::get_color_ramp() const { +Ref<Gradient> NoiseTexture2D::get_color_ramp() const { return color_ramp; } -int NoiseTexture::get_width() const { +int NoiseTexture2D::get_width() const { return size.x; } -int NoiseTexture::get_height() const { +int NoiseTexture2D::get_height() const { return size.y; } -RID NoiseTexture::get_rid() const { +RID NoiseTexture2D::get_rid() const { if (!texture.is_valid()) { texture = RS::get_singleton()->texture_2d_placeholder_create(); } @@ -373,6 +373,6 @@ RID NoiseTexture::get_rid() const { return texture; } -Ref<Image> NoiseTexture::get_image() const { +Ref<Image> NoiseTexture2D::get_image() const { return image; } diff --git a/modules/noise/noise_texture.h b/modules/noise/noise_texture_2d.h index 83fbcc2d10..8f8e256fb9 100644 --- a/modules/noise/noise_texture.h +++ b/modules/noise/noise_texture_2d.h @@ -1,5 +1,5 @@ /*************************************************************************/ -/* noise_texture.h */ +/* noise_texture_2d.h */ /*************************************************************************/ /* This file is part of: */ /* GODOT ENGINE */ @@ -28,16 +28,16 @@ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ -#ifndef NOISE_TEXTURE_H -#define NOISE_TEXTURE_H +#ifndef NOISE_TEXTURE_2D_H +#define NOISE_TEXTURE_2D_H #include "noise.h" #include "core/object/ref_counted.h" #include "scene/resources/texture.h" -class NoiseTexture : public Texture2D { - GDCLASS(NoiseTexture, Texture2D); +class NoiseTexture2D : public Texture2D { + GDCLASS(NoiseTexture2D, Texture2D); private: Ref<Image> image; @@ -116,8 +116,8 @@ public: virtual Ref<Image> get_image() const override; - NoiseTexture(); - virtual ~NoiseTexture(); + NoiseTexture2D(); + virtual ~NoiseTexture2D(); }; -#endif // NOISE_TEXTURE_H +#endif // NOISE_TEXTURE_2D_H diff --git a/modules/noise/register_types.cpp b/modules/noise/register_types.cpp index d0cfc4e944..c44bf9828f 100644 --- a/modules/noise/register_types.cpp +++ b/modules/noise/register_types.cpp @@ -32,7 +32,7 @@ #include "fastnoise_lite.h" #include "noise.h" -#include "noise_texture.h" +#include "noise_texture_2d.h" #ifdef TOOLS_ENABLED #include "editor/editor_plugin.h" @@ -41,9 +41,10 @@ void initialize_noise_module(ModuleInitializationLevel p_level) { if (p_level == MODULE_INITIALIZATION_LEVEL_SCENE) { - GDREGISTER_CLASS(NoiseTexture); + GDREGISTER_CLASS(NoiseTexture2D); GDREGISTER_ABSTRACT_CLASS(Noise); GDREGISTER_CLASS(FastNoiseLite); + ClassDB::add_compatibility_class("NoiseTexture", "NoiseTexture2D"); } #ifdef TOOLS_ENABLED |