summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAndrey Kleshchev <andreykproductengine@lindenlab.com>2021-07-13 02:14:16 +0300
committerAndrey Kleshchev <andreykproductengine@lindenlab.com>2021-07-13 02:19:57 +0300
commit66ba1c4c8e840bb5e9da23e2b5772cd24b23714f (patch)
treeda166848027f1051d075c656013a1f7f4004af08
parent833a82f8593c513b12b59c489760f77d5a806668 (diff)
DRTVWR-542 WIP Fixed Stride
-rw-r--r--indra/llmeshoptimizer/llmeshoptimizer.cpp19
-rw-r--r--indra/llmeshoptimizer/llmeshoptimizer.h7
-rw-r--r--indra/newview/llmodelpreview.cpp2
3 files changed, 16 insertions, 12 deletions
diff --git a/indra/llmeshoptimizer/llmeshoptimizer.cpp b/indra/llmeshoptimizer/llmeshoptimizer.cpp
index 0ddaa82c3d..09fa7cb235 100644
--- a/indra/llmeshoptimizer/llmeshoptimizer.cpp
+++ b/indra/llmeshoptimizer/llmeshoptimizer.cpp
@@ -44,18 +44,17 @@ void LLMeshOptimizer::generateShadowIndexBuffer(U16 *destination,
const U16 *indices,
U64 index_count,
const LLVector4a *vertex_positions,
- U64 vertex_count
+ U64 vertex_count,
+ U64 vertex_positions_stride
)
{
- const size_t vertex_stride = 4; // should be either 0 or 4
-
meshopt_generateShadowIndexBuffer<unsigned short>(destination,
indices,
index_count,
(const float*)vertex_positions, // verify that it is correct to convert to float
vertex_count,
sizeof(LLVector4a),
- vertex_stride
+ vertex_positions_stride
);
}
@@ -65,19 +64,19 @@ U64 LLMeshOptimizer::simplify(U16 *destination,
U64 index_count,
const LLVector4a *vertex_positions,
U64 vertex_count,
+ U64 vertex_positions_stride,
U64 target_index_count,
F32 target_error,
F32* result_error
)
{
- const size_t vertex_stride = 4; // should be either 0 or 4
return meshopt_simplify<unsigned short>(destination,
indices,
index_count,
- (const float*)vertex_positions, // verify that it is correct to convert to float
+ (const float*)vertex_positions,
vertex_count,
- vertex_stride,
+ vertex_positions_stride,
target_index_count,
target_error,
result_error
@@ -90,18 +89,18 @@ U64 LLMeshOptimizer::simplifySloppy(U16 *destination,
U64 index_count,
const LLVector4a *vertex_positions,
U64 vertex_count,
+ U64 vertex_positions_stride,
U64 target_index_count,
F32 target_error,
F32* result_error
)
{
- const size_t vertex_stride = 4; // should be either 0 or 4
return meshopt_simplifySloppy<unsigned short>(destination,
indices,
index_count,
- (const float*)vertex_positions, // verify that it is correct to convert to float
+ (const float*)vertex_positions,
vertex_count,
- vertex_stride,
+ vertex_positions_stride,
target_index_count,
target_error,
result_error
diff --git a/indra/llmeshoptimizer/llmeshoptimizer.h b/indra/llmeshoptimizer/llmeshoptimizer.h
index 744856361c..1aa02372fa 100644
--- a/indra/llmeshoptimizer/llmeshoptimizer.h
+++ b/indra/llmeshoptimizer/llmeshoptimizer.h
@@ -36,12 +36,13 @@ public:
LLMeshOptimizer();
~LLMeshOptimizer();
- static void LLMeshOptimizer::generateShadowIndexBuffer(
+ static void generateShadowIndexBuffer(
U16 *destination,
const U16 *indices,
U64 index_count,
const LLVector4a *vertex_positions,
- U64 vertex_count);
+ U64 vertex_count,
+ U64 vertex_positions_stride);
// returns amount of indices in destiantion
// result_error returns how far from original the model is in % if not NULL
@@ -51,6 +52,7 @@ public:
U64 index_count,
const LLVector4a *vertex_positions,
U64 vertex_count,
+ U64 vertex_positions_stride,
U64 target_index_count,
F32 target_error,
F32* result_error);
@@ -63,6 +65,7 @@ public:
U64 index_count,
const LLVector4a *vertex_positions,
U64 vertex_count,
+ U64 vertex_positions_stride,
U64 target_index_count,
F32 target_error,
F32* result_error);
diff --git a/indra/newview/llmodelpreview.cpp b/indra/newview/llmodelpreview.cpp
index 471b29d850..aa065edf92 100644
--- a/indra/newview/llmodelpreview.cpp
+++ b/indra/newview/llmodelpreview.cpp
@@ -1869,6 +1869,7 @@ void LLModelPreview::genMeshOptimizerLODs(S32 which_lod, U32 decimation, bool en
num_indices,
face.mPositions,
face.mNumVertices,
+ LLVertexBuffer::sTypeSize[LLVertexBuffer::TYPE_VERTEX],
target_indices,
lod_error_threshold,
&result_code);
@@ -1882,6 +1883,7 @@ void LLModelPreview::genMeshOptimizerLODs(S32 which_lod, U32 decimation, bool en
num_indices,
face.mPositions,
face.mNumVertices,
+ LLVertexBuffer::sTypeSize[LLVertexBuffer::TYPE_VERTEX],
target_indices,
lod_error_threshold,
&result_code);