Skip to content

Commit 9786857

Browse files
committed
Merge pull request #107194 from aaronfranke/gltf-no-zero-byte-offset
GLTF: Don't save unnecessary zero "byteOffset" on export
2 parents c535f56 + 902e7cc commit 9786857

File tree

1 file changed

+8
-4
lines changed

1 file changed

+8
-4
lines changed

modules/gltf/gltf_document.cpp

Lines changed: 8 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -858,7 +858,9 @@ Error GLTFDocument::_encode_buffer_views(Ref<GLTFState> p_state) {
858858
d["buffer"] = buffer_view->buffer;
859859
d["byteLength"] = buffer_view->byte_length;
860860

861-
d["byteOffset"] = buffer_view->byte_offset;
861+
if (buffer_view->byte_offset > 0) {
862+
d["byteOffset"] = buffer_view->byte_offset;
863+
}
862864

863865
if (buffer_view->byte_stride != -1) {
864866
d["byteStride"] = buffer_view->byte_stride;
@@ -937,7 +939,9 @@ Error GLTFDocument::_encode_accessors(Ref<GLTFState> p_state) {
937939
d["min"] = accessor->min;
938940
if (accessor->buffer_view != -1) {
939941
// bufferView may be omitted to zero-initialize the buffer. When this happens, byteOffset MUST also be omitted.
940-
d["byteOffset"] = accessor->byte_offset;
942+
if (accessor->byte_offset > 0) {
943+
d["byteOffset"] = accessor->byte_offset;
944+
}
941945
d["bufferView"] = accessor->buffer_view;
942946
}
943947

@@ -948,15 +952,15 @@ Error GLTFDocument::_encode_accessors(Ref<GLTFState> p_state) {
948952
Dictionary si;
949953
si["bufferView"] = accessor->sparse_indices_buffer_view;
950954
si["componentType"] = accessor->sparse_indices_component_type;
951-
if (accessor->sparse_indices_byte_offset != -1) {
955+
if (accessor->sparse_indices_byte_offset > 0) {
952956
si["byteOffset"] = accessor->sparse_indices_byte_offset;
953957
}
954958
ERR_FAIL_COND_V(!si.has("bufferView") || !si.has("componentType"), ERR_PARSE_ERROR);
955959
s["indices"] = si;
956960

957961
Dictionary sv;
958962
sv["bufferView"] = accessor->sparse_values_buffer_view;
959-
if (accessor->sparse_values_byte_offset != -1) {
963+
if (accessor->sparse_values_byte_offset > 0) {
960964
sv["byteOffset"] = accessor->sparse_values_byte_offset;
961965
}
962966
ERR_FAIL_COND_V(!sv.has("bufferView"), ERR_PARSE_ERROR);

0 commit comments

Comments
 (0)