From 0c5cb8ee5f3852202886cfb5a99729131610db5f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=91=D1=80=D0=B0=D0=BD=D0=B8=D0=BC=D0=B8=D1=80=20=D0=9A?= =?UTF-8?q?=D0=B0=D1=80=D0=B0=D1=9F=D0=B8=D1=9B?= Date: Tue, 3 Sep 2019 07:09:01 -0700 Subject: [PATCH] Updated meshoptimizer. --- 3rdparty/meshoptimizer/Makefile | 2 +- 3rdparty/meshoptimizer/js/meshopt_decoder.js | 10 +++--- 3rdparty/meshoptimizer/src/clusterizer.cpp | 10 +++--- 3rdparty/meshoptimizer/tools/cgltf.h | 6 ++-- 3rdparty/meshoptimizer/tools/gltfpack.cpp | 35 ++++++++++++-------- 5 files changed, 35 insertions(+), 28 deletions(-) diff --git a/3rdparty/meshoptimizer/Makefile b/3rdparty/meshoptimizer/Makefile index 9febf7953..c9391c527 100644 --- a/3rdparty/meshoptimizer/Makefile +++ b/3rdparty/meshoptimizer/Makefile @@ -72,7 +72,7 @@ gltfpack: $(GLTFPACK_OBJECTS) $(LIBRARY) js/meshopt_decoder.js: src/vertexcodec.cpp src/indexcodec.cpp @mkdir -p build - emcc $(filter %.cpp,$^) -O3 -DNDEBUG -s EXPORTED_FUNCTIONS='["_meshopt_decodeVertexBuffer", "_meshopt_decodeIndexBuffer"]' -s ALLOW_MEMORY_GROWTH=1 -s TOTAL_STACK=32768 -s TOTAL_MEMORY=65536 -o build/meshopt_decoder.wasm + emcc $(filter %.cpp,$^) -O3 -DNDEBUG -s EXPORTED_FUNCTIONS='["_meshopt_decodeVertexBuffer", "_meshopt_decodeIndexBuffer"]' -s ALLOW_MEMORY_GROWTH=1 -s TOTAL_STACK=24576 -s TOTAL_MEMORY=65536 -o build/meshopt_decoder.wasm sed -i "s#\(var wasm = \)\".*\";#\\1\"$$(cat build/meshopt_decoder.wasm | base64 -w 0)\";#" $@ $(EXECUTABLE): $(DEMO_OBJECTS) $(LIBRARY) diff --git a/3rdparty/meshoptimizer/js/meshopt_decoder.js b/3rdparty/meshoptimizer/js/meshopt_decoder.js index fa63e7a5c..9f8c981fc 100644 --- a/3rdparty/meshoptimizer/js/meshopt_decoder.js +++ b/3rdparty/meshoptimizer/js/meshopt_decoder.js @@ -2,7 +2,7 @@ // Copyright (C) 2016-2019, by Arseny Kapoulkine (arseny.kapoulkine@gmail.com) var MeshoptDecoder = (function() { "use strict"; - var wasm = "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"; + var wasm = "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"; var memory = new WebAssembly.Memory({ initial: 1 @@ -23,7 +23,7 @@ var MeshoptDecoder = (function() { var imports = { env: { memory: memory, - _emscripten_memcpy_big: function(d, s, n) { + emscripten_memcpy_big: function(d, s, n) { heap.set(heap.subarray(s, s + n), d); }, } @@ -53,10 +53,10 @@ var MeshoptDecoder = (function() { return { ready: promise, decodeVertexBuffer: function(target, count, size, source) { - decode(instance.exports["_meshopt_decodeVertexBuffer"], target, count, size, source); + decode(instance.exports["meshopt_decodeVertexBuffer"], target, count, size, source); }, decodeIndexBuffer: function(target, count, size, source) { - decode(instance.exports["_meshopt_decodeIndexBuffer"], target, count, size, source); + decode(instance.exports["meshopt_decodeIndexBuffer"], target, count, size, source); } } })(); @@ -68,4 +68,4 @@ else if (typeof define === 'function' && define['amd']) return MeshoptDecoder; }); else if (typeof exports === 'object') - exports["MeshoptDecoder"] = MeshoptDecoder; \ No newline at end of file + exports["MeshoptDecoder"] = MeshoptDecoder; diff --git a/3rdparty/meshoptimizer/src/clusterizer.cpp b/3rdparty/meshoptimizer/src/clusterizer.cpp index eb3cec227..f7d88c513 100644 --- a/3rdparty/meshoptimizer/src/clusterizer.cpp +++ b/3rdparty/meshoptimizer/src/clusterizer.cpp @@ -190,9 +190,9 @@ meshopt_Bounds meshopt_computeClusterBounds(const unsigned int* indices, size_t // compute triangle normals and gather triangle corners float normals[256][3]; float corners[256][3][3]; - unsigned int triangles = 0; + size_t triangles = 0; - for (unsigned int i = 0; i < index_count; i += 3) + for (size_t i = 0; i < index_count; i += 3) { unsigned int a = indices[i + 0], b = indices[i + 1], c = indices[i + 2]; assert(a < vertex_count && b < vertex_count && c < vertex_count); @@ -251,7 +251,7 @@ meshopt_Bounds meshopt_computeClusterBounds(const unsigned int* indices, size_t // compute a tight cone around all normals, mindp = cos(angle/2) float mindp = 1.f; - for (unsigned int i = 0; i < triangles; ++i) + for (size_t i = 0; i < triangles; ++i) { float dp = normals[i][0] * axis[0] + normals[i][1] * axis[1] + normals[i][2] * axis[2]; @@ -277,7 +277,7 @@ meshopt_Bounds meshopt_computeClusterBounds(const unsigned int* indices, size_t float maxt = 0; // we need to find the point on center-t*axis ray that lies in negative half-space of all triangles - for (unsigned int i = 0; i < triangles; ++i) + for (size_t i = 0; i < triangles; ++i) { // dot(center-t*axis-corner, trinormal) = 0 // dot(center-corner, trinormal) - t * dot(axis, trinormal) = 0 @@ -334,7 +334,7 @@ meshopt_Bounds meshopt_computeMeshletBounds(const meshopt_Meshlet* meshlet, cons unsigned int indices[sizeof(meshlet->indices) / sizeof(meshlet->indices[0][0])]; - for (unsigned int i = 0; i < meshlet->triangle_count; ++i) + for (size_t i = 0; i < meshlet->triangle_count; ++i) { unsigned int a = meshlet->vertices[meshlet->indices[i][0]]; unsigned int b = meshlet->vertices[meshlet->indices[i][1]]; diff --git a/3rdparty/meshoptimizer/tools/cgltf.h b/3rdparty/meshoptimizer/tools/cgltf.h index d63944952..c0775fcef 100644 --- a/3rdparty/meshoptimizer/tools/cgltf.h +++ b/3rdparty/meshoptimizer/tools/cgltf.h @@ -1,7 +1,7 @@ /** * cgltf - a single-file glTF 2.0 parser written in C99. * - * Version: 1.2 + * Version: 1.3 * * Website: https://github.com/jkuhlmann/cgltf * @@ -423,7 +423,7 @@ typedef struct cgltf_light { cgltf_float spot_outer_cone_angle; } cgltf_light; -typedef struct cgltf_node { +struct cgltf_node { char* name; cgltf_node* parent; cgltf_node** children; @@ -443,7 +443,7 @@ typedef struct cgltf_node { cgltf_float scale[3]; cgltf_float matrix[16]; cgltf_extras extras; -} cgltf_node; +}; typedef struct cgltf_scene { char* name; diff --git a/3rdparty/meshoptimizer/tools/gltfpack.cpp b/3rdparty/meshoptimizer/tools/gltfpack.cpp index 19877eb0b..cf295e1b7 100644 --- a/3rdparty/meshoptimizer/tools/gltfpack.cpp +++ b/3rdparty/meshoptimizer/tools/gltfpack.cpp @@ -801,6 +801,15 @@ void reindexMesh(Mesh& mesh) } } +const Stream* getPositionStream(const Mesh& mesh) +{ + for (size_t i = 0; i < mesh.streams.size(); ++i) + if (mesh.streams[i].type == cgltf_attribute_type_position) + return &mesh.streams[i]; + + return 0; +} + void optimizeMesh(Mesh& mesh) { size_t vertex_count = mesh.streams[0].data.size(); @@ -816,33 +825,31 @@ void optimizeMesh(Mesh& mesh) meshopt_remapIndexBuffer(&mesh.indices[0], &mesh.indices[0], mesh.indices.size(), &remap[0]); for (size_t i = 0; i < mesh.streams.size(); ++i) + { + assert(mesh.streams[i].data.size() == vertex_count); + meshopt_remapVertexBuffer(&mesh.streams[i].data[0], &mesh.streams[i].data[0], vertex_count, sizeof(Attr), &remap[0]); + } } void sortPointMesh(Mesh& mesh) { - size_t positions = 0; + const Stream* positions = getPositionStream(mesh); + if (!positions) + return; - for (size_t i = 0; i < mesh.streams.size(); ++i) - if (mesh.streams[i].type == cgltf_attribute_type_position) - { - positions = i; - break; - } - - assert(mesh.streams[positions].type == cgltf_attribute_type_position); assert(mesh.indices.empty()); - size_t total_vertices = mesh.streams[positions].data.size(); + size_t vertex_count = mesh.streams[0].data.size(); - std::vector remap(total_vertices); - meshopt_spatialSortRemap(&remap[0], mesh.streams[positions].data[0].f, total_vertices, sizeof(Attr)); + std::vector remap(vertex_count); + meshopt_spatialSortRemap(&remap[0], positions->data[0].f, vertex_count, sizeof(Attr)); for (size_t i = 0; i < mesh.streams.size(); ++i) { - assert(mesh.streams[i].data.size() == total_vertices); + assert(mesh.streams[i].data.size() == vertex_count); - meshopt_remapVertexBuffer(&mesh.streams[i].data[0], &mesh.streams[i].data[0], total_vertices, sizeof(Attr), &remap[0]); + meshopt_remapVertexBuffer(&mesh.streams[i].data[0], &mesh.streams[i].data[0], vertex_count, sizeof(Attr), &remap[0]); } }