DRTVWR-542 WIP Fixed Stride

meow-7.2.2
Andrey Kleshchev 2021-07-13 02:14:16 +03:00
parent 833a82f859
commit 66ba1c4c8e
3 changed files with 16 additions and 12 deletions

View File

@ -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

View File

@ -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);

View File

@ -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);