You've already forked godot
mirror of
https://github.com/godotengine/godot.git
synced 2025-11-09 12:50:35 +00:00
Merge pull request #9230 from supagu/normals-fix
Fixed decompression of normals
This commit is contained in:
@@ -463,7 +463,7 @@ Error VisualServer::_surface_set_data(Array p_arrays, uint32_t p_format, uint32_
|
|||||||
|
|
||||||
for (int i = 0; i < p_vertex_array_len; i++) {
|
for (int i = 0; i < p_vertex_array_len; i++) {
|
||||||
|
|
||||||
uint8_t vector[4] = {
|
int8_t vector[4] = {
|
||||||
CLAMP(src[i].x * 127, -128, 127),
|
CLAMP(src[i].x * 127, -128, 127),
|
||||||
CLAMP(src[i].y * 127, -128, 127),
|
CLAMP(src[i].y * 127, -128, 127),
|
||||||
CLAMP(src[i].z * 127, -128, 127),
|
CLAMP(src[i].z * 127, -128, 127),
|
||||||
@@ -1231,11 +1231,12 @@ Array VisualServer::_get_array_from_surface(uint32_t p_format, PoolVector<uint8_
|
|||||||
if (p_format & ARRAY_COMPRESS_NORMAL) {
|
if (p_format & ARRAY_COMPRESS_NORMAL) {
|
||||||
|
|
||||||
PoolVector<Vector3>::Write w = arr.write();
|
PoolVector<Vector3>::Write w = arr.write();
|
||||||
|
const float multiplier = 1.f / 127.f;
|
||||||
|
|
||||||
for (int j = 0; j < p_vertex_len; j++) {
|
for (int j = 0; j < p_vertex_len; j++) {
|
||||||
|
|
||||||
const uint8_t *v = (const uint8_t *)&r[j * total_elem_size + offsets[i]];
|
const int8_t *v = (const int8_t *)&r[j * total_elem_size + offsets[i]];
|
||||||
w[j] = Vector3(float(v[0] / 255.0) * 2.0 - 1.0, float(v[1] / 255.0) * 2.0 - 1.0, float(v[2] / 255.0) * 2.0 - 1.0);
|
w[j] = Vector3(float(v[0]) * multiplier, float(v[1]) * multiplier, float(v[2]) * multiplier);
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
PoolVector<Vector3>::Write w = arr.write();
|
PoolVector<Vector3>::Write w = arr.write();
|
||||||
@@ -1291,7 +1292,7 @@ Array VisualServer::_get_array_from_surface(uint32_t p_format, PoolVector<uint8_
|
|||||||
for (int j = 0; j < p_vertex_len; j++) {
|
for (int j = 0; j < p_vertex_len; j++) {
|
||||||
|
|
||||||
const uint8_t *v = (const uint8_t *)&r[j * total_elem_size + offsets[i]];
|
const uint8_t *v = (const uint8_t *)&r[j * total_elem_size + offsets[i]];
|
||||||
w[j] = Color(float(v[0] / 255.0) * 2.0 - 1.0, float(v[1] / 255.0) * 2.0 - 1.0, float(v[2] / 255.0) * 2.0 - 1.0, float(v[3] / 255.0) * 2.0 - 1.0);
|
w[j] = Color(float(v[0] / 255.0), float(v[1] / 255.0), float(v[2] / 255.0), float(v[3] / 255.0));
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
PoolVector<Color>::Write w = arr.write();
|
PoolVector<Color>::Write w = arr.write();
|
||||||
|
|||||||
Reference in New Issue
Block a user