Optimize data format for OpenSimplex images
The previous RGBA format included unused RGB data. Using the LA8 format removes the need to store the extra data. The Docs have been updated to reflect the format changes.
This commit is contained in:
parent
41e9028868
commit
041fe20f64
2 changed files with 8 additions and 16 deletions
|
|
@ -104,7 +104,7 @@ void OpenSimplexNoise::set_lacunarity(float p_lacunarity) {
|
|||
|
||||
Ref<Image> OpenSimplexNoise::get_image(int p_width, int p_height) const {
|
||||
Vector<uint8_t> data;
|
||||
data.resize(p_width * p_height * 4);
|
||||
data.resize(p_width * p_height);
|
||||
|
||||
uint8_t *wd8 = data.ptrw();
|
||||
|
||||
|
|
@ -112,21 +112,17 @@ Ref<Image> OpenSimplexNoise::get_image(int p_width, int p_height) const {
|
|||
for (int j = 0; j < p_width; j++) {
|
||||
float v = get_noise_2d(j, i);
|
||||
v = v * 0.5 + 0.5; // Normalize [0..1]
|
||||
uint8_t value = uint8_t(CLAMP(v * 255.0, 0, 255));
|
||||
wd8[(i * p_width + j) * 4 + 0] = value;
|
||||
wd8[(i * p_width + j) * 4 + 1] = value;
|
||||
wd8[(i * p_width + j) * 4 + 2] = value;
|
||||
wd8[(i * p_width + j) * 4 + 3] = 255;
|
||||
wd8[(i * p_width + j)] = uint8_t(CLAMP(v * 255.0, 0, 255));
|
||||
}
|
||||
}
|
||||
|
||||
Ref<Image> image = memnew(Image(p_width, p_height, false, Image::FORMAT_RGBA8, data));
|
||||
Ref<Image> image = memnew(Image(p_width, p_height, false, Image::FORMAT_L8, data));
|
||||
return image;
|
||||
}
|
||||
|
||||
Ref<Image> OpenSimplexNoise::get_seamless_image(int p_size) const {
|
||||
Vector<uint8_t> data;
|
||||
data.resize(p_size * p_size * 4);
|
||||
data.resize(p_size * p_size);
|
||||
|
||||
uint8_t *wd8 = data.ptrw();
|
||||
|
||||
|
|
@ -147,15 +143,11 @@ Ref<Image> OpenSimplexNoise::get_seamless_image(int p_size) const {
|
|||
float v = get_noise_4d(x, y, z, w);
|
||||
|
||||
v = v * 0.5 + 0.5; // Normalize [0..1]
|
||||
uint8_t value = uint8_t(CLAMP(v * 255.0, 0, 255));
|
||||
wd8[(i * p_size + j) * 4 + 0] = value;
|
||||
wd8[(i * p_size + j) * 4 + 1] = value;
|
||||
wd8[(i * p_size + j) * 4 + 2] = value;
|
||||
wd8[(i * p_size + j) * 4 + 3] = 255;
|
||||
wd8[(i * p_size + j)] = uint8_t(CLAMP(v * 255.0, 0, 255));
|
||||
}
|
||||
}
|
||||
|
||||
Ref<Image> image = memnew(Image(p_size, p_size, false, Image::FORMAT_RGBA8, data));
|
||||
Ref<Image> image = memnew(Image(p_size, p_size, false, Image::FORMAT_L8, data));
|
||||
return image;
|
||||
}
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue