|
@@ -1076,6 +1076,36 @@ void Image::shrink_x2() {
|
|
|
}
|
|
|
}
|
|
|
|
|
|
+void Image::normalize() {
|
|
|
+
|
|
|
+ bool used_mipmaps = has_mipmaps();
|
|
|
+ if (used_mipmaps) {
|
|
|
+ clear_mipmaps();
|
|
|
+ }
|
|
|
+
|
|
|
+ lock();
|
|
|
+
|
|
|
+ for (int y = 0; y < height; y++) {
|
|
|
+
|
|
|
+ for (int x = 0; x < width; x++) {
|
|
|
+
|
|
|
+ Color c = get_pixel(x, y);
|
|
|
+ Vector3 v(c.r * 2.0 - 1.0, c.g * 2.0 - 1.0, c.b * 2.0 - 1.0);
|
|
|
+ v.normalize();
|
|
|
+ c.r = v.x * 0.5 + 0.5;
|
|
|
+ c.g = v.y * 0.5 + 0.5;
|
|
|
+ c.b = v.z * 0.5 + 0.5;
|
|
|
+ set_pixel(x, y, c);
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ unlock();
|
|
|
+
|
|
|
+ if (used_mipmaps) {
|
|
|
+ generate_mipmaps(true);
|
|
|
+ }
|
|
|
+}
|
|
|
+
|
|
|
Error Image::generate_mipmaps(bool p_renormalize) {
|
|
|
|
|
|
if (!_can_modify(format)) {
|