@@ -58,32 +58,7 @@ static Vector<uint8_t> basis_universal_packer(const Ref<Image> &p_image, Image::
58
58
if (image->get_format () != Image::FORMAT_RGBA8) {
59
59
image->convert (Image::FORMAT_RGBA8);
60
60
}
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
+
87
62
params.m_uastc = true ;
88
63
params.m_quality_level = basisu::BASISU_QUALITY_MIN;
89
64
@@ -117,6 +92,7 @@ static Vector<uint8_t> basis_universal_packer(const Ref<Image> &p_image, Image::
117
92
} break ;
118
93
case Image::USED_CHANNELS_RG: {
119
94
#ifdef USE_RG_AS_RGBA
95
+ params.m_force_alpha = true ;
120
96
image->convert_rg_to_ra_rgba8 ();
121
97
decompress_format = BASIS_DECOMPRESS_RG_AS_RA;
122
98
#else
@@ -133,6 +109,33 @@ static Vector<uint8_t> basis_universal_packer(const Ref<Image> &p_image, Image::
133
109
} break ;
134
110
}
135
111
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
+
136
139
basisu::basis_compressor c;
137
140
c.init (params);
138
141
0 commit comments