Sfoglia il codice sorgente

GLES2 fix octahedral half float unpacking

The strides in _unpack_half_floats() were incorrectly calculated in the case where octahedral normals and tangents were in use.

(cherry picked from commit c6a428b3d6b50e67f33607fad025fcf5f30314e3)
lawnjelly 2 anni fa
parent
commit
672ad5aa94
1 ha cambiato i file con 5 aggiunte e 0 eliminazioni
  1. 5 0
      drivers/gles2/rasterizer_storage_gles2.cpp

+ 5 - 0
drivers/gles2/rasterizer_storage_gles2.cpp

@@ -2120,6 +2120,11 @@ static PoolVector<uint8_t> _unpack_half_floats(const PoolVector<uint8_t> &array,
 					if (!(p_format & VS::ARRAY_COMPRESS_TANGENT && p_format & VS::ARRAY_COMPRESS_NORMAL)) {
 						src_size[VS::ARRAY_NORMAL] = 8;
 						dst_size[VS::ARRAY_NORMAL] = 8;
+
+						// These must be incremented manually,
+						// as we are modifying a previous attribute size.
+						src_stride += 4;
+						dst_stride += 4;
 					}
 					src_size[i] = 0;
 					dst_size[i] = 0;