diff --git a/servers/rendering/renderer_rd/storage_rd/texture_storage.cpp b/servers/rendering/renderer_rd/storage_rd/texture_storage.cpp index 3706eb3779b..4804ee3f955 100644 --- a/servers/rendering/renderer_rd/storage_rd/texture_storage.cpp +++ b/servers/rendering/renderer_rd/storage_rd/texture_storage.cpp @@ -481,9 +481,10 @@ TextureStorage::TextureStorage() { tformat.usage_bits = RD::TEXTURE_USAGE_COLOR_ATTACHMENT_BIT | RD::TEXTURE_USAGE_SAMPLING_BIT | RD::TEXTURE_USAGE_STORAGE_BIT | RD::TEXTURE_USAGE_CAN_UPDATE_BIT | (vrs_supported ? RD::TEXTURE_USAGE_VRS_ATTACHMENT_BIT : 0); tformat.texture_type = RD::TEXTURE_TYPE_2D; + uint32_t pixel_size = RD::get_image_format_pixel_size(tformat.format); Vector pv; - pv.resize(4 * 4); - for (int i = 0; i < 4 * 4; i++) { + pv.resize(4 * 4 * pixel_size); + for (int i = 0; i < pv.size(); i++) { pv.set(i, 0); } diff --git a/servers/rendering/rendering_device_commons.h b/servers/rendering/rendering_device_commons.h index c8124a1d972..5db5b4c35dd 100644 --- a/servers/rendering/rendering_device_commons.h +++ b/servers/rendering/rendering_device_commons.h @@ -987,7 +987,6 @@ protected: static const uint32_t TEXTURE_SAMPLES_COUNT[TEXTURE_SAMPLES_MAX]; - static uint32_t get_image_format_pixel_size(DataFormat p_format); static void get_compressed_image_format_block_dimensions(DataFormat p_format, uint32_t &r_w, uint32_t &r_h); uint32_t get_compressed_image_format_block_byte_size(DataFormat p_format) const; static uint32_t get_compressed_image_format_pixel_rshift(DataFormat p_format); @@ -1009,6 +1008,12 @@ protected: static uint32_t get_format_vertex_size(DataFormat p_format); public: + /*****************/ + /**** TEXTURE ****/ + /*****************/ + + static uint32_t get_image_format_pixel_size(DataFormat p_format); + /****************/ /**** SHADER ****/ /****************/