diff options
author | Dave Parks <davep@lindenlab.com> | 2022-04-25 15:27:39 -0500 |
---|---|---|
committer | Dave Parks <davep@lindenlab.com> | 2022-04-25 15:27:39 -0500 |
commit | 55179387c7481d3b4ae34f3a53e0256d2705733b (patch) | |
tree | 1759bdae97f9c797e895cbac755ee282decb87a7 | |
parent | ffdc04f5d2b2d952ace912a473b11f4305e9d057 (diff) |
SL-17236 For real this time, maintain legacy draw order of alpha rigged meshes, batching be damned.
-rw-r--r-- | indra/newview/llvovolume.cpp | 13 |
1 files changed, 5 insertions, 8 deletions
diff --git a/indra/newview/llvovolume.cpp b/indra/newview/llvovolume.cpp index 35c415f9db..126a25115d 100644 --- a/indra/newview/llvovolume.cpp +++ b/indra/newview/llvovolume.cpp @@ -5943,7 +5943,6 @@ void LLVolumeGeometryManager::rebuildGeom(LLSpatialGroup* group) // for rigged set, add weights and disable alpha sorting (rigged items use depth buffer) extra_mask |= LLVertexBuffer::MAP_WEIGHT4; - alpha_sort = FALSE; rigged = TRUE; } @@ -6198,8 +6197,11 @@ U32 LLVolumeGeometryManager::genDrawInfo(LLSpatialGroup* group, U32 mask, LLFace if (rigged) { - //sort faces by things that break batches, including avatar and mesh id - std::sort(faces, faces + face_count, CompareBatchBreakerRigged()); + if (!distance_sort) // <--- alpha "sort" rigged faces by maintaining original draw order + { + //sort faces by things that break batches, including avatar and mesh id + std::sort(faces, faces + face_count, CompareBatchBreakerRigged()); + } } else if (!distance_sort) { @@ -6234,11 +6236,6 @@ U32 LLVolumeGeometryManager::genDrawInfo(LLSpatialGroup* group, U32 mask, LLFace texture_index_channels = gDeferredAlphaProgram.mFeatures.mIndexedTextureChannels; } - if (rigged) - { //don't attempt distance sorting on rigged meshes, not likely to succeed and breaks batches - distance_sort = FALSE; - } - if (distance_sort) { buffer_index = -1; |