mirror of
https://gitlab.com/kicad/code/kicad.git
synced 2025-09-15 02:33:15 +02:00
Make sure sorts are deterministic.
This commit is contained in:
parent
2be0b98135
commit
f4ac624bb3
@ -1389,8 +1389,12 @@ void RENDER_3D_OPENGL::renderTransparentModels( const glm::mat4 &aCameraViewMatr
|
|||||||
// Sort from back to front
|
// Sort from back to front
|
||||||
std::sort( transparentModelList.begin(), transparentModelList.end(),
|
std::sort( transparentModelList.begin(), transparentModelList.end(),
|
||||||
[&]( std::pair<const MODELTORENDER *, float>& a,
|
[&]( std::pair<const MODELTORENDER *, float>& a,
|
||||||
std::pair<const MODELTORENDER *, float>& b ) {
|
std::pair<const MODELTORENDER *, float>& b )
|
||||||
|
{
|
||||||
|
if( a.second != b.second )
|
||||||
return a.second > b.second;
|
return a.second > b.second;
|
||||||
|
|
||||||
|
return a.first > b.first; // use pointers as a last resort
|
||||||
} );
|
} );
|
||||||
|
|
||||||
// Start rendering calls
|
// Start rendering calls
|
||||||
|
@ -1911,9 +1911,19 @@ void RENDER_3D_RAYTRACE::initializeBlockPositions()
|
|||||||
|
|
||||||
const SFVEC2UI center( m_realBufferSize.x / 2, m_realBufferSize.y / 2 );
|
const SFVEC2UI center( m_realBufferSize.x / 2, m_realBufferSize.y / 2 );
|
||||||
std::sort( m_blockPositions.begin(), m_blockPositions.end(),
|
std::sort( m_blockPositions.begin(), m_blockPositions.end(),
|
||||||
[&]( const SFVEC2UI& a, const SFVEC2UI& b ) {
|
[&]( const SFVEC2UI& a, const SFVEC2UI& b )
|
||||||
|
{
|
||||||
// Sort order: inside out.
|
// Sort order: inside out.
|
||||||
return distance( a, center ) < distance( b, center );
|
float distanceA = distance( a, center );
|
||||||
|
float distanceB = distance( b, center );
|
||||||
|
|
||||||
|
if( distanceA != distanceB )
|
||||||
|
return distanceA < distanceB;
|
||||||
|
|
||||||
|
if( a[0] != b[0] )
|
||||||
|
return a[0] < b[0];
|
||||||
|
|
||||||
|
return a[1] < b[1];
|
||||||
} );
|
} );
|
||||||
|
|
||||||
// Create m_shader buffer
|
// Create m_shader buffer
|
||||||
|
Loading…
x
Reference in New Issue
Block a user