Skip to content

Commit d5db5a7

Browse files
committed
Remove unnecessary sorting in ISpatialSpace
1 parent d6b51fa commit d5db5a7

File tree

7 files changed

+13
-49
lines changed

7 files changed

+13
-49
lines changed

src/Layers/xrRenderPC_R1/FStaticRender.cpp

+1-2
Original file line numberDiff line numberDiff line change
@@ -466,8 +466,7 @@ void CRender::Calculate ()
466466
lstRenderables,
467467
ISpatial_DB::O_ORDERED,
468468
STYPE_RENDERABLE + STYPE_PARTICLE + STYPE_LIGHTSOURCE,
469-
ViewBase,
470-
Device.vCameraPosition);//nearest sorting
469+
ViewBase);//nearest sorting
471470

472471
// Determine visibility for dynamic part of scene
473472
set_Object (0);

src/Layers/xrRenderPC_R2/r2_R_render.cpp

+1-2
Original file line numberDiff line numberDiff line change
@@ -60,8 +60,7 @@ void CRender::render_main (bool deffered, bool zfill)
6060
lstRenderablesMain,
6161
ISpatial_DB::O_ORDERED,
6262
STYPE_RENDERABLE + STYPE_RENDERABLESHADOW + STYPE_PARTICLE + STYPE_LIGHTSOURCE,
63-
ViewBase,
64-
Device.vCameraPosition);//nearest sorting
63+
ViewBase);//nearest sorting
6564

6665
// Determine visibility for dynamic part of scene
6766
set_Object (0);

src/Layers/xrRenderPC_R4/r4_R_render.cpp

+1-2
Original file line numberDiff line numberDiff line change
@@ -72,8 +72,7 @@ void CRender::render_main (bool deffered, bool zfill)
7272
lstRenderablesMain,
7373
ISpatial_DB::O_ORDERED,
7474
STYPE_RENDERABLE + STYPE_RENDERABLESHADOW + STYPE_PARTICLE + STYPE_LIGHTSOURCE,
75-
ViewBase,
76-
Device.vCameraPosition);//nearest sorting
75+
ViewBase);//nearest sorting
7776

7877
// Determine visibility for dynamic part of scene
7978
set_Object (0);

src/xrCDB/ISpatial.h

+5-5
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,7 @@
2525
* Should live inside spatial DB
2626
* Should have at least "bounding-sphere" or "bounding-box"
2727
*/
28-
const Fvector3 zero_fvector3 = {0.f,0.f,0.f};
28+
2929
const float c_spatial_min = 8.f;
3030
//////////////////////////////////////////////////////////////////////////
3131
enum
@@ -259,10 +259,10 @@ class XRCDB_API ISpatial_DB
259259
};
260260

261261
// query
262-
void q_ray (xr_vector<ISpatialShared>& R, u32 _o, u32 _mask_and, const Fvector& _start, const Fvector& _dir, float _range, const Fvector& near_sort_origin = zero_fvector3);
263-
void q_box (xr_vector<ISpatialShared>& R, u32 _o, u32 _mask_or, const Fvector& _center, const Fvector& _size, const Fvector& near_sort_origin = zero_fvector3);
264-
void q_sphere (xr_vector<ISpatialShared>& R, u32 _o, u32 _mask_or, const Fvector& _center, const float _radius, const Fvector& near_sort_origin = zero_fvector3);
265-
void q_frustum (xr_vector<ISpatialShared>& R, u32 _o, u32 _mask_or, const CFrustum& _frustum, const Fvector& near_sort_origin = zero_fvector3);
262+
void q_ray (xr_vector<ISpatialShared>& R, u32 _o, u32 _mask_and, const Fvector& _start, const Fvector& _dir, float _range);
263+
void q_box (xr_vector<ISpatialShared>& R, u32 _o, u32 _mask_or, const Fvector& _center, const Fvector& _size);
264+
void q_sphere (xr_vector<ISpatialShared>& R, u32 _o, u32 _mask_or, const Fvector& _center, const float _radius);
265+
void q_frustum (xr_vector<ISpatialShared>& R, u32 _o, u32 _mask_or, const CFrustum& _frustum);
266266
};
267267

268268
XRCDB_API extern ISpatial_DB* g_SpatialSpace ;

src/xrCDB/ISpatial_q_box.cpp

+3-14
Original file line numberDiff line numberDiff line change
@@ -57,7 +57,7 @@ class _MM_ALIGN16 spatial_box_walker
5757
}
5858
};
5959

60-
void ISpatial_DB::q_box(xr_vector<ISpatialShared>& R, u32 _o, u32 _mask, const Fvector& _center, const Fvector& _size, const Fvector& near_sort_origin)
60+
void ISpatial_DB::q_box(xr_vector<ISpatialShared>& R, u32 _o, u32 _mask, const Fvector& _center, const Fvector& _size)
6161
{
6262
PROF_EVENT("ISpatial_DB::q_frustum");
6363
xrSRWLockGuard guard(&db_lock, true);
@@ -69,21 +69,10 @@ void ISpatial_DB::q_box(xr_vector<ISpatialShared>& R, u32 _o, u32 _mask, const F
6969
spatial_box_walker W(this, _mask, _center, _size);
7070
W.bFirst = !!(_o&O_ONLYFIRST);
7171
W.walk(R, m_root, m_center, m_bounds);
72-
73-
if (&near_sort_origin != &zero_fvector3)//nearest sorting
74-
{
75-
std::sort(R.begin(), R.end(),
76-
[&near_sort_origin](ISpatialShared& _1, ISpatialShared& _2)
77-
{
78-
float d1 = _1.get() ? _1->spatial.sphere.P.distance_to_sqr(near_sort_origin) : EPS_L;
79-
float d2 = _1.get() ? _2->spatial.sphere.P.distance_to_sqr(near_sort_origin) : EPS;
80-
return d1 < d2;
81-
});
82-
}
8372
}
8473

85-
void ISpatial_DB::q_sphere(xr_vector<ISpatialShared>& R, u32 _o, u32 _mask, const Fvector& _center, const float _radius, const Fvector& near_sort_origin)
74+
void ISpatial_DB::q_sphere(xr_vector<ISpatialShared>& R, u32 _o, u32 _mask, const Fvector& _center, const float _radius)
8675
{
8776
Fvector _size = { _radius,_radius,_radius };
88-
q_box(R, _o, _mask, _center, _size, near_sort_origin);
77+
q_box(R, _o, _mask, _center, _size);
8978
}

src/xrCDB/ISpatial_q_frustum.cpp

+1-12
Original file line numberDiff line numberDiff line change
@@ -59,7 +59,7 @@ class _MM_ALIGN16 spatial_frustum_walker
5959
}
6060
};
6161

62-
void ISpatial_DB::q_frustum(xr_vector<ISpatialShared>& R, u32 _o, u32 _mask, const CFrustum& _frustum, const Fvector& near_sort_origin)
62+
void ISpatial_DB::q_frustum(xr_vector<ISpatialShared>& R, u32 _o, u32 _mask, const CFrustum& _frustum)
6363
{
6464
PROF_EVENT("ISpatial_DB::q_frustum")
6565
xrSRWLockGuard guard(&db_lock, true);
@@ -70,15 +70,4 @@ void ISpatial_DB::q_frustum(xr_vector<ISpatialShared>& R, u32 _o, u32 _mask, con
7070

7171
spatial_frustum_walker W(this,_mask,&_frustum);
7272
W.walk(R,m_root,m_center,m_bounds,_frustum.getMask());
73-
74-
if (&near_sort_origin != &zero_fvector3)//nearest sorting
75-
{
76-
std::sort(R.begin(), R.end(),
77-
[&near_sort_origin](ISpatialShared& _1, ISpatialShared& _2)
78-
{
79-
float d1 = _1.get() ? _1->spatial.sphere.P.distance_to_sqr(near_sort_origin) : EPS_L;
80-
float d2 = _1.get() ? _2->spatial.sphere.P.distance_to_sqr(near_sort_origin) : EPS;
81-
return d1 < d2;
82-
});
83-
}
8473
}

src/xrCDB/ISpatial_q_ray.cpp

+1-12
Original file line numberDiff line numberDiff line change
@@ -89,7 +89,7 @@ class _MM_ALIGN16 spatial_ray_walker
8989
}
9090
};
9191

92-
void ISpatial_DB::q_ray(xr_vector<ISpatialShared>& R, u32 _o, u32 _mask_and, const Fvector& _start, const Fvector& _dir, float _range, const Fvector& near_sort_origin)
92+
void ISpatial_DB::q_ray(xr_vector<ISpatialShared>& R, u32 _o, u32 _mask_and, const Fvector& _start, const Fvector& _dir, float _range)
9393
{
9494
PROF_EVENT("ISpatial_DB::q_ray")
9595
xrSRWLockGuard guard(&db_lock, true);
@@ -101,15 +101,4 @@ void ISpatial_DB::q_ray(xr_vector<ISpatialShared>& R, u32 _o, u32 _mask_and, con
101101
spatial_ray_walker W(CPU::ID.hasFeature(CPUFeature::SSE), !!(_o&O_ONLYFIRST), !!(_o&O_ONLYNEAREST));
102102
W._init(this, _mask_and, _start, _dir, _range);
103103
W.walk(R, m_root, m_center, m_bounds);
104-
105-
if (&near_sort_origin != &zero_fvector3)//nearest sorting
106-
{
107-
std::sort(R.begin(), R.end(),
108-
[&near_sort_origin](ISpatialShared& _1, ISpatialShared& _2)
109-
{
110-
float d1 = _1.get() ? _1->spatial.sphere.P.distance_to_sqr(near_sort_origin) : EPS_L;
111-
float d2 = _1.get() ? _2->spatial.sphere.P.distance_to_sqr(near_sort_origin) : EPS;
112-
return d1 < d2;
113-
});
114-
}
115104
}

0 commit comments

Comments
 (0)