From 29a4c0be7b002f554c521b5f207acf2bfba68d48 Mon Sep 17 00:00:00 2001 From: stm <14291421+stephanmeesters@users.noreply.github.com> Date: Sat, 20 Jun 2026 20:35:32 +0200 Subject: [PATCH 1/3] perf: Skip z-sorting for nodes without bounding info in SortingRenderer --- .../Source/WWVegas/WW3D2/dx8polygonrenderer.h | 2 +- .../Source/WWVegas/WW3D2/dynamesh.cpp | 4 +- .../Source/WWVegas/WW3D2/ringobj.cpp | 2 +- .../Source/WWVegas/WW3D2/seglinerenderer.cpp | 2 +- .../Source/WWVegas/WW3D2/sortingrenderer.cpp | 45 ++++++++++++------- .../Source/WWVegas/WW3D2/sortingrenderer.h | 2 +- .../Source/WWVegas/WW3D2/sphereobj.cpp | 2 +- .../Source/WWVegas/WW3D2/streakRender.cpp | 2 +- Core/Tools/W3DView/ScreenCursor.cpp | 2 +- 9 files changed, 38 insertions(+), 25 deletions(-) diff --git a/Core/Libraries/Source/WWVegas/WW3D2/dx8polygonrenderer.h b/Core/Libraries/Source/WWVegas/WW3D2/dx8polygonrenderer.h index 0d9a7a716ac..cfa8fdf6a23 100644 --- a/Core/Libraries/Source/WWVegas/WW3D2/dx8polygonrenderer.h +++ b/Core/Libraries/Source/WWVegas/WW3D2/dx8polygonrenderer.h @@ -143,7 +143,7 @@ inline void DX8PolygonRendererClass::Render_Sorted(/*const Matrix3D & tm,*/int b DX8Wrapper::Set_Index_Buffer_Index_Offset(base_vertex_offset); SortingRendererClass::Insert_Triangles( - bounding_sphere, + &bounding_sphere, index_offset, index_count/3, min_vertex_index, diff --git a/Core/Libraries/Source/WWVegas/WW3D2/dynamesh.cpp b/Core/Libraries/Source/WWVegas/WW3D2/dynamesh.cpp index 03412bce96b..8d4af3d938c 100644 --- a/Core/Libraries/Source/WWVegas/WW3D2/dynamesh.cpp +++ b/Core/Libraries/Source/WWVegas/WW3D2/dynamesh.cpp @@ -329,7 +329,7 @@ void DynamicMeshModel::Render(RenderInfoClass & rinfo) // If no texture, shader or material arrays for this pass just draw and go to next pass if (!texture_array0 && !texture_array1 && !material_array && !shader_array) { if (buffer_type==BUFFER_TYPE_DYNAMIC_SORTING) { - SortingRendererClass::Insert_Triangles(sphere,0, DynamicMeshPNum, 0, DynamicMeshVNum); + SortingRendererClass::Insert_Triangles(&sphere,0, DynamicMeshPNum, 0, DynamicMeshVNum); } else { DX8Wrapper::Draw_Triangles(0, DynamicMeshPNum, 0, DynamicMeshVNum); @@ -365,7 +365,7 @@ void DynamicMeshModel::Render(RenderInfoClass & rinfo) if (done || texture_changed || material_changed || shader_changed) { if (buffer_type==BUFFER_TYPE_DYNAMIC_SORTING) { SortingRendererClass::Insert_Triangles( - sphere, + &sphere, (start_tri_idx * 3), (1 + cur_tri_idx - start_tri_idx), min_vert_idx, diff --git a/Core/Libraries/Source/WWVegas/WW3D2/ringobj.cpp b/Core/Libraries/Source/WWVegas/WW3D2/ringobj.cpp index 84b80c13a98..6e120804b9b 100644 --- a/Core/Libraries/Source/WWVegas/WW3D2/ringobj.cpp +++ b/Core/Libraries/Source/WWVegas/WW3D2/ringobj.cpp @@ -590,7 +590,7 @@ void RingRenderObjClass::render_ring(RenderInfoClass & rinfo,const Vector3 & cen DX8Wrapper::Set_Index_Buffer(ib,0); if (sort) { - SortingRendererClass::Insert_Triangles(Get_Bounding_Sphere(), 0, ring.face_ct, 0, ring.Vertex_ct); + SortingRendererClass::Insert_Triangles(&Get_Bounding_Sphere(), 0, ring.face_ct, 0, ring.Vertex_ct); } else { DX8Wrapper::Draw_Triangles(0, ring.face_ct, 0, ring.Vertex_ct); } diff --git a/Core/Libraries/Source/WWVegas/WW3D2/seglinerenderer.cpp b/Core/Libraries/Source/WWVegas/WW3D2/seglinerenderer.cpp index 9b5970062ee..193d3ca9dc2 100644 --- a/Core/Libraries/Source/WWVegas/WW3D2/seglinerenderer.cpp +++ b/Core/Libraries/Source/WWVegas/WW3D2/seglinerenderer.cpp @@ -1181,7 +1181,7 @@ void SegLineRendererClass::Render DX8Wrapper::Set_Shader(shader); if (sorting) { - SortingRendererClass::Insert_Triangles(obj_sphere,0,tidx,0,vnum); + SortingRendererClass::Insert_Triangles(&obj_sphere,0,tidx,0,vnum); } else { DX8Wrapper::Draw_Triangles(0,tidx,0,vnum); } diff --git a/Core/Libraries/Source/WWVegas/WW3D2/sortingrenderer.cpp b/Core/Libraries/Source/WWVegas/WW3D2/sortingrenderer.cpp index 51aa8a7f141..36c08c7c08a 100644 --- a/Core/Libraries/Source/WWVegas/WW3D2/sortingrenderer.cpp +++ b/Core/Libraries/Source/WWVegas/WW3D2/sortingrenderer.cpp @@ -158,8 +158,6 @@ class SortingNodeStruct public: RenderStateStruct sorting_state; - SphereClass bounding_sphere; - Vector3 transformed_center; unsigned short start_index; // First index used in the ib unsigned short polygon_count; // Polygon count to process (3 indices = one polygon) @@ -169,6 +167,7 @@ class SortingNodeStruct typedef std::list SortingNodeStructList; static SortingNodeStructList sorted_list; +static SortingNodeStructList splicing_list; static SortingNodeStructList clean_list; static unsigned total_sorting_vertices; @@ -210,7 +209,7 @@ static TempIndexStruct* Get_Temp_Index_Array(unsigned count) // ---------------------------------------------------------------------------- void SortingRendererClass::Insert_Triangles( - const SphereClass& bounding_sphere, + const SphereClass *bounding_sphere, unsigned short start_index, unsigned short polygon_count, unsigned short min_vertex_index, @@ -236,22 +235,30 @@ void SortingRendererClass::Insert_Triangles( (state->sorting_state.vertex_buffer_types[0]==BUFFER_TYPE_SORTING || state->sorting_state.vertex_buffer_types[0]==BUFFER_TYPE_DYNAMIC_SORTING))); - state->bounding_sphere=bounding_sphere; state->start_index=start_index; state->polygon_count=polygon_count; state->min_vertex_index=min_vertex_index; state->vertex_count=vertex_count; - D3DXMATRIX mtx=(D3DXMATRIX&)state->sorting_state.world*(D3DXMATRIX&)state->sorting_state.view; - D3DXVECTOR3 vec=(D3DXVECTOR3&)state->bounding_sphere.Center; - D3DXVECTOR4 transformed_vec; - D3DXVec3Transform( - &transformed_vec, - &vec, - &mtx); - state->transformed_center=Vector3(transformed_vec[0],transformed_vec[1],transformed_vec[2]); - - Insert_To_Sorted_List(state); + if (bounding_sphere) + { + D3DXMATRIX mtx=(D3DXMATRIX&)state->sorting_state.world*(D3DXMATRIX&)state->sorting_state.view; + D3DXVECTOR3 vec=(D3DXVECTOR3&)bounding_sphere->Center; + D3DXVECTOR4 transformed_vec; + D3DXVec3Transform( + &transformed_vec, + &vec, + &mtx); + state->transformed_center=Vector3(transformed_vec[0],transformed_vec[1],transformed_vec[2]); + + Insert_To_Sorted_List(state); + } + else + { + // TheSuperHackers @perf stephanmeesters 04/07/2026 Nodes without bounding information do not require initial node sorting. + state->transformed_center = Vector3(0.0f, 0.0f, 0.0f); + splicing_list.push_back(state); + } #ifdef WWDEBUG SortingVertexBufferClass* vertex_buffer=static_cast(state->sorting_state.vertex_buffers[0]); @@ -289,8 +296,7 @@ void SortingRendererClass::Insert_Triangles( unsigned short min_vertex_index, unsigned short vertex_count) { - SphereClass sphere(Vector3(0.0f,0.0f,0.0f),0.0f); - Insert_Triangles(sphere,start_index,polygon_count,min_vertex_index,vertex_count); + Insert_Triangles(nullptr,start_index,polygon_count,min_vertex_index,vertex_count); } // ---------------------------------------------------------------------------- @@ -600,6 +606,13 @@ void SortingRendererClass::Flush() DX8Wrapper::Get_Transform(D3DTS_VIEW,old_view); DX8Wrapper::Get_Transform(D3DTS_WORLD,old_world); + // TheSuperHackers @perf stephanmeesters 04/07/2026 Splice nodes that have no bounding information (Z=0.0) into the sorted list. + SortingNodeStructList::iterator node = sorted_list.begin(); + while (node != sorted_list.end() && (*node)->transformed_center.Z <= 0.0f) { + ++node; + } + sorted_list.splice(node, splicing_list); + while (!sorted_list.empty()) { SortingNodeStruct* state = sorted_list.front(); sorted_list.pop_front(); diff --git a/Core/Libraries/Source/WWVegas/WW3D2/sortingrenderer.h b/Core/Libraries/Source/WWVegas/WW3D2/sortingrenderer.h index 6e304f0da7d..724ccf11419 100644 --- a/Core/Libraries/Source/WWVegas/WW3D2/sortingrenderer.h +++ b/Core/Libraries/Source/WWVegas/WW3D2/sortingrenderer.h @@ -33,7 +33,7 @@ class SortingRendererClass public: static void Insert_Triangles( - const SphereClass& bounding_sphere, + const SphereClass* bounding_sphere, unsigned short start_index, unsigned short polygon_count, unsigned short min_vertex_index, diff --git a/Core/Libraries/Source/WWVegas/WW3D2/sphereobj.cpp b/Core/Libraries/Source/WWVegas/WW3D2/sphereobj.cpp index e3e927e86b0..1c32ac0da20 100644 --- a/Core/Libraries/Source/WWVegas/WW3D2/sphereobj.cpp +++ b/Core/Libraries/Source/WWVegas/WW3D2/sphereobj.cpp @@ -521,7 +521,7 @@ void SphereRenderObjClass::render_sphere() DX8Wrapper::Set_Index_Buffer(ib,0); if (sort) { - SortingRendererClass::Insert_Triangles(Get_Bounding_Sphere(), 0, mesh.face_ct, 0, mesh.Vertex_ct); + SortingRendererClass::Insert_Triangles(&Get_Bounding_Sphere(), 0, mesh.face_ct, 0, mesh.Vertex_ct); } else { DX8Wrapper::Draw_Triangles(0,mesh.face_ct,0,mesh.Vertex_ct); } diff --git a/Core/Libraries/Source/WWVegas/WW3D2/streakRender.cpp b/Core/Libraries/Source/WWVegas/WW3D2/streakRender.cpp index b03eafb7c74..1b502a1606f 100644 --- a/Core/Libraries/Source/WWVegas/WW3D2/streakRender.cpp +++ b/Core/Libraries/Source/WWVegas/WW3D2/streakRender.cpp @@ -1379,7 +1379,7 @@ void StreakRendererClass::RenderStreak if (sorting) { - SortingRendererClass::Insert_Triangles(obj_sphere,0,triangleIndex,0,vnum); + SortingRendererClass::Insert_Triangles(&obj_sphere,0,triangleIndex,0,vnum); } else { diff --git a/Core/Tools/W3DView/ScreenCursor.cpp b/Core/Tools/W3DView/ScreenCursor.cpp index 32eb640dcc0..69d0a433c96 100644 --- a/Core/Tools/W3DView/ScreenCursor.cpp +++ b/Core/Tools/W3DView/ScreenCursor.cpp @@ -307,7 +307,7 @@ ScreenCursorClass::Render (RenderInfoClass &rinfo) Get_Obj_Space_Bounding_Sphere(sphere); SortingRendererClass::Insert_Triangles( - sphere, + &sphere, 0, FACE_COUNT*3, 0, From 78c0aa2fbdd0131fa109553b0b75adde1c2a7980 Mon Sep 17 00:00:00 2001 From: stm <14291421+stephanmeesters@users.noreply.github.com> Date: Sun, 5 Jul 2026 00:00:15 +0200 Subject: [PATCH 2/3] Splice at the right location --- Core/Libraries/Source/WWVegas/WW3D2/sortingrenderer.cpp | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/Core/Libraries/Source/WWVegas/WW3D2/sortingrenderer.cpp b/Core/Libraries/Source/WWVegas/WW3D2/sortingrenderer.cpp index 36c08c7c08a..721c66d7004 100644 --- a/Core/Libraries/Source/WWVegas/WW3D2/sortingrenderer.cpp +++ b/Core/Libraries/Source/WWVegas/WW3D2/sortingrenderer.cpp @@ -606,9 +606,10 @@ void SortingRendererClass::Flush() DX8Wrapper::Get_Transform(D3DTS_VIEW,old_view); DX8Wrapper::Get_Transform(D3DTS_WORLD,old_world); - // TheSuperHackers @perf stephanmeesters 04/07/2026 Splice nodes that have no bounding information (Z=0.0) into the sorted list. + // TheSuperHackers @perf stephanmeesters 04/07/2026 + // Splice nodes that have no bounding information (Z=0.0) at the correct location into the sorted list. SortingNodeStructList::iterator node = sorted_list.begin(); - while (node != sorted_list.end() && (*node)->transformed_center.Z <= 0.0f) { + while (node != sorted_list.end() && (*node)->transformed_center.Z > 0.0f) { ++node; } sorted_list.splice(node, splicing_list); From de08b2b17c71d905ffbee83a930a0de25ca4bc62 Mon Sep 17 00:00:00 2001 From: stm <14291421+stephanmeesters@users.noreply.github.com> Date: Sun, 5 Jul 2026 11:38:58 +0200 Subject: [PATCH 3/3] Check for <=0 sphere radius, rename list, add cleanup in Deinit --- .../Source/WWVegas/WW3D2/dx8polygonrenderer.h | 2 +- .../Source/WWVegas/WW3D2/dynamesh.cpp | 4 +-- .../Source/WWVegas/WW3D2/ringobj.cpp | 2 +- .../Source/WWVegas/WW3D2/seglinerenderer.cpp | 2 +- .../Source/WWVegas/WW3D2/sortingrenderer.cpp | 33 ++++++++++++------- .../Source/WWVegas/WW3D2/sortingrenderer.h | 2 +- .../Source/WWVegas/WW3D2/sphereobj.cpp | 2 +- .../Source/WWVegas/WW3D2/streakRender.cpp | 2 +- Core/Tools/W3DView/ScreenCursor.cpp | 2 +- 9 files changed, 30 insertions(+), 21 deletions(-) diff --git a/Core/Libraries/Source/WWVegas/WW3D2/dx8polygonrenderer.h b/Core/Libraries/Source/WWVegas/WW3D2/dx8polygonrenderer.h index cfa8fdf6a23..0d9a7a716ac 100644 --- a/Core/Libraries/Source/WWVegas/WW3D2/dx8polygonrenderer.h +++ b/Core/Libraries/Source/WWVegas/WW3D2/dx8polygonrenderer.h @@ -143,7 +143,7 @@ inline void DX8PolygonRendererClass::Render_Sorted(/*const Matrix3D & tm,*/int b DX8Wrapper::Set_Index_Buffer_Index_Offset(base_vertex_offset); SortingRendererClass::Insert_Triangles( - &bounding_sphere, + bounding_sphere, index_offset, index_count/3, min_vertex_index, diff --git a/Core/Libraries/Source/WWVegas/WW3D2/dynamesh.cpp b/Core/Libraries/Source/WWVegas/WW3D2/dynamesh.cpp index 8d4af3d938c..03412bce96b 100644 --- a/Core/Libraries/Source/WWVegas/WW3D2/dynamesh.cpp +++ b/Core/Libraries/Source/WWVegas/WW3D2/dynamesh.cpp @@ -329,7 +329,7 @@ void DynamicMeshModel::Render(RenderInfoClass & rinfo) // If no texture, shader or material arrays for this pass just draw and go to next pass if (!texture_array0 && !texture_array1 && !material_array && !shader_array) { if (buffer_type==BUFFER_TYPE_DYNAMIC_SORTING) { - SortingRendererClass::Insert_Triangles(&sphere,0, DynamicMeshPNum, 0, DynamicMeshVNum); + SortingRendererClass::Insert_Triangles(sphere,0, DynamicMeshPNum, 0, DynamicMeshVNum); } else { DX8Wrapper::Draw_Triangles(0, DynamicMeshPNum, 0, DynamicMeshVNum); @@ -365,7 +365,7 @@ void DynamicMeshModel::Render(RenderInfoClass & rinfo) if (done || texture_changed || material_changed || shader_changed) { if (buffer_type==BUFFER_TYPE_DYNAMIC_SORTING) { SortingRendererClass::Insert_Triangles( - &sphere, + sphere, (start_tri_idx * 3), (1 + cur_tri_idx - start_tri_idx), min_vert_idx, diff --git a/Core/Libraries/Source/WWVegas/WW3D2/ringobj.cpp b/Core/Libraries/Source/WWVegas/WW3D2/ringobj.cpp index 6e120804b9b..84b80c13a98 100644 --- a/Core/Libraries/Source/WWVegas/WW3D2/ringobj.cpp +++ b/Core/Libraries/Source/WWVegas/WW3D2/ringobj.cpp @@ -590,7 +590,7 @@ void RingRenderObjClass::render_ring(RenderInfoClass & rinfo,const Vector3 & cen DX8Wrapper::Set_Index_Buffer(ib,0); if (sort) { - SortingRendererClass::Insert_Triangles(&Get_Bounding_Sphere(), 0, ring.face_ct, 0, ring.Vertex_ct); + SortingRendererClass::Insert_Triangles(Get_Bounding_Sphere(), 0, ring.face_ct, 0, ring.Vertex_ct); } else { DX8Wrapper::Draw_Triangles(0, ring.face_ct, 0, ring.Vertex_ct); } diff --git a/Core/Libraries/Source/WWVegas/WW3D2/seglinerenderer.cpp b/Core/Libraries/Source/WWVegas/WW3D2/seglinerenderer.cpp index 193d3ca9dc2..9b5970062ee 100644 --- a/Core/Libraries/Source/WWVegas/WW3D2/seglinerenderer.cpp +++ b/Core/Libraries/Source/WWVegas/WW3D2/seglinerenderer.cpp @@ -1181,7 +1181,7 @@ void SegLineRendererClass::Render DX8Wrapper::Set_Shader(shader); if (sorting) { - SortingRendererClass::Insert_Triangles(&obj_sphere,0,tidx,0,vnum); + SortingRendererClass::Insert_Triangles(obj_sphere,0,tidx,0,vnum); } else { DX8Wrapper::Draw_Triangles(0,tidx,0,vnum); } diff --git a/Core/Libraries/Source/WWVegas/WW3D2/sortingrenderer.cpp b/Core/Libraries/Source/WWVegas/WW3D2/sortingrenderer.cpp index 721c66d7004..7de76b29115 100644 --- a/Core/Libraries/Source/WWVegas/WW3D2/sortingrenderer.cpp +++ b/Core/Libraries/Source/WWVegas/WW3D2/sortingrenderer.cpp @@ -167,7 +167,7 @@ class SortingNodeStruct typedef std::list SortingNodeStructList; static SortingNodeStructList sorted_list; -static SortingNodeStructList splicing_list; +static SortingNodeStructList unsorted_list; static SortingNodeStructList clean_list; static unsigned total_sorting_vertices; @@ -209,7 +209,7 @@ static TempIndexStruct* Get_Temp_Index_Array(unsigned count) // ---------------------------------------------------------------------------- void SortingRendererClass::Insert_Triangles( - const SphereClass *bounding_sphere, + const SphereClass& bounding_sphere, unsigned short start_index, unsigned short polygon_count, unsigned short min_vertex_index, @@ -240,10 +240,16 @@ void SortingRendererClass::Insert_Triangles( state->min_vertex_index=min_vertex_index; state->vertex_count=vertex_count; - if (bounding_sphere) + if (bounding_sphere.Radius <= 0.0) + { + // TheSuperHackers @perf stephanmeesters 04/07/2026 Nodes without bounding information do not require sorting. + state->transformed_center = Vector3(0.0f, 0.0f, 0.0f); + unsorted_list.push_back(state); + } + else { D3DXMATRIX mtx=(D3DXMATRIX&)state->sorting_state.world*(D3DXMATRIX&)state->sorting_state.view; - D3DXVECTOR3 vec=(D3DXVECTOR3&)bounding_sphere->Center; + D3DXVECTOR3 vec=(D3DXVECTOR3&)bounding_sphere.Center; D3DXVECTOR4 transformed_vec; D3DXVec3Transform( &transformed_vec, @@ -253,12 +259,6 @@ void SortingRendererClass::Insert_Triangles( Insert_To_Sorted_List(state); } - else - { - // TheSuperHackers @perf stephanmeesters 04/07/2026 Nodes without bounding information do not require initial node sorting. - state->transformed_center = Vector3(0.0f, 0.0f, 0.0f); - splicing_list.push_back(state); - } #ifdef WWDEBUG SortingVertexBufferClass* vertex_buffer=static_cast(state->sorting_state.vertex_buffers[0]); @@ -296,7 +296,8 @@ void SortingRendererClass::Insert_Triangles( unsigned short min_vertex_index, unsigned short vertex_count) { - Insert_Triangles(nullptr,start_index,polygon_count,min_vertex_index,vertex_count); + SphereClass sphere(Vector3(0.0f,0.0f,0.0f),0.0f); + Insert_Triangles(sphere,start_index,polygon_count,min_vertex_index,vertex_count); } // ---------------------------------------------------------------------------- @@ -612,7 +613,7 @@ void SortingRendererClass::Flush() while (node != sorted_list.end() && (*node)->transformed_center.Z > 0.0f) { ++node; } - sorted_list.splice(node, splicing_list); + sorted_list.splice(node, unsorted_list); while (!sorted_list.empty()) { SortingNodeStruct* state = sorted_list.front(); @@ -661,6 +662,14 @@ void SortingRendererClass::Deinit() sorted_list.pop_front(); } + // + // Flush the unsorted list + // + while (!unsorted_list.empty()) { + delete unsorted_list.front(); + unsorted_list.pop_front(); + } + // // Flush the clean list // diff --git a/Core/Libraries/Source/WWVegas/WW3D2/sortingrenderer.h b/Core/Libraries/Source/WWVegas/WW3D2/sortingrenderer.h index 724ccf11419..6e304f0da7d 100644 --- a/Core/Libraries/Source/WWVegas/WW3D2/sortingrenderer.h +++ b/Core/Libraries/Source/WWVegas/WW3D2/sortingrenderer.h @@ -33,7 +33,7 @@ class SortingRendererClass public: static void Insert_Triangles( - const SphereClass* bounding_sphere, + const SphereClass& bounding_sphere, unsigned short start_index, unsigned short polygon_count, unsigned short min_vertex_index, diff --git a/Core/Libraries/Source/WWVegas/WW3D2/sphereobj.cpp b/Core/Libraries/Source/WWVegas/WW3D2/sphereobj.cpp index 1c32ac0da20..e3e927e86b0 100644 --- a/Core/Libraries/Source/WWVegas/WW3D2/sphereobj.cpp +++ b/Core/Libraries/Source/WWVegas/WW3D2/sphereobj.cpp @@ -521,7 +521,7 @@ void SphereRenderObjClass::render_sphere() DX8Wrapper::Set_Index_Buffer(ib,0); if (sort) { - SortingRendererClass::Insert_Triangles(&Get_Bounding_Sphere(), 0, mesh.face_ct, 0, mesh.Vertex_ct); + SortingRendererClass::Insert_Triangles(Get_Bounding_Sphere(), 0, mesh.face_ct, 0, mesh.Vertex_ct); } else { DX8Wrapper::Draw_Triangles(0,mesh.face_ct,0,mesh.Vertex_ct); } diff --git a/Core/Libraries/Source/WWVegas/WW3D2/streakRender.cpp b/Core/Libraries/Source/WWVegas/WW3D2/streakRender.cpp index 1b502a1606f..b03eafb7c74 100644 --- a/Core/Libraries/Source/WWVegas/WW3D2/streakRender.cpp +++ b/Core/Libraries/Source/WWVegas/WW3D2/streakRender.cpp @@ -1379,7 +1379,7 @@ void StreakRendererClass::RenderStreak if (sorting) { - SortingRendererClass::Insert_Triangles(&obj_sphere,0,triangleIndex,0,vnum); + SortingRendererClass::Insert_Triangles(obj_sphere,0,triangleIndex,0,vnum); } else { diff --git a/Core/Tools/W3DView/ScreenCursor.cpp b/Core/Tools/W3DView/ScreenCursor.cpp index 69d0a433c96..32eb640dcc0 100644 --- a/Core/Tools/W3DView/ScreenCursor.cpp +++ b/Core/Tools/W3DView/ScreenCursor.cpp @@ -307,7 +307,7 @@ ScreenCursorClass::Render (RenderInfoClass &rinfo) Get_Obj_Space_Bounding_Sphere(sphere); SortingRendererClass::Insert_Triangles( - &sphere, + sphere, 0, FACE_COUNT*3, 0,