@@ -58,32 +58,7 @@ static Vector<uint8_t> basis_universal_packer(const Ref<Image> &p_image, Image::
5858 if (image->get_format () != Image::FORMAT_RGBA8 ) {
5959 image->convert (Image::FORMAT_RGBA8 );
6060 }
61- if (!image->has_mipmaps ()) {
62- basisu::image buimg (image->get_width (), image->get_height ());
63- Vector<uint8_t > vec = image->get_data ();
64- const uint8_t *r = vec.ptr ();
65- memcpy (buimg.get_ptr (), r, vec.size ());
66- params.m_source_images .push_back (buimg);
67- } else {
68- {
69- Ref<Image> base_image = image->get_image_from_mipmap (0 );
70- Vector<uint8_t > image_vec = base_image->get_data ();
71- basisu::image buimg_image (base_image->get_width (), base_image->get_height ());
72- const uint8_t *r = image_vec.ptr ();
73- memcpy (buimg_image.get_ptr (), r, image_vec.size ());
74- params.m_source_images .push_back (buimg_image);
75- }
76- basisu::vector<basisu::image> images;
77- for (int32_t mip_map_i = 1 ; mip_map_i <= image->get_mipmap_count (); mip_map_i++) {
78- Ref<Image> mip_map = image->get_image_from_mipmap (mip_map_i);
79- Vector<uint8_t > mip_map_vec = mip_map->get_data ();
80- basisu::image buimg_mipmap (mip_map->get_width (), mip_map->get_height ());
81- const uint8_t *r = mip_map_vec.ptr ();
82- memcpy (buimg_mipmap.get_ptr (), r, mip_map_vec.size ());
83- images.push_back (buimg_mipmap);
84- }
85- params.m_source_mipmap_images .push_back (images);
86- }
61+
8762 params.m_uastc = true ;
8863 params.m_quality_level = basisu::BASISU_QUALITY_MIN ;
8964
@@ -117,6 +92,7 @@ static Vector<uint8_t> basis_universal_packer(const Ref<Image> &p_image, Image::
11792 } break ;
11893 case Image::USED_CHANNELS_RG : {
11994#ifdef USE_RG_AS_RGBA
95+ params.m_force_alpha = true ;
12096 image->convert_rg_to_ra_rgba8 ();
12197 decompress_format = BASIS_DECOMPRESS_RG_AS_RA ;
12298#else
@@ -133,6 +109,33 @@ static Vector<uint8_t> basis_universal_packer(const Ref<Image> &p_image, Image::
133109 } break ;
134110 }
135111
112+ if (!image->has_mipmaps ()) {
113+ basisu::image buimg (image->get_width (), image->get_height ());
114+ Vector<uint8_t > vec = image->get_data ();
115+ const uint8_t *r = vec.ptr ();
116+ memcpy (buimg.get_ptr (), r, vec.size ());
117+ params.m_source_images .push_back (buimg);
118+ } else {
119+ {
120+ Ref<Image> base_image = image->get_image_from_mipmap (0 );
121+ Vector<uint8_t > image_vec = base_image->get_data ();
122+ basisu::image buimg_image (base_image->get_width (), base_image->get_height ());
123+ const uint8_t *r = image_vec.ptr ();
124+ memcpy (buimg_image.get_ptr (), r, image_vec.size ());
125+ params.m_source_images .push_back (buimg_image);
126+ }
127+ basisu::vector<basisu::image> images;
128+ for (int32_t mip_map_i = 1 ; mip_map_i <= image->get_mipmap_count (); mip_map_i++) {
129+ Ref<Image> mip_map = image->get_image_from_mipmap (mip_map_i);
130+ Vector<uint8_t > mip_map_vec = mip_map->get_data ();
131+ basisu::image buimg_mipmap (mip_map->get_width (), mip_map->get_height ());
132+ const uint8_t *r = mip_map_vec.ptr ();
133+ memcpy (buimg_mipmap.get_ptr (), r, mip_map_vec.size ());
134+ images.push_back (buimg_mipmap);
135+ }
136+ params.m_source_mipmap_images .push_back (images);
137+ }
138+
136139 basisu::basis_compressor c;
137140 c.init (params);
138141
0 commit comments