Skip to content

Commit

Permalink
Get rid of unnecessary parallel frustum tests.
Browse files Browse the repository at this point in the history
  • Loading branch information
holance committed May 30, 2023
1 parent 28d5186 commit cbb5e2d
Show file tree
Hide file tree
Showing 2 changed files with 1 addition and 53 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -44,8 +44,6 @@ public partial class DefaultRenderHost : DX11RenderHostBase
private AsyncActionWaitable asyncTask;
private AsyncActionWaitable getTriangleCountTask;
private AsyncActionWaitable getPostEffectCoreTask;
private OrderablePartitioner<Tuple<int, int>> opaquePartitioner;
private OrderablePartitioner<Tuple<int, int>> transparentPartitioner;
private Action FrustumTestAction;
private int numRendered = 0;
private readonly AsyncActionThread parallelThread = new AsyncActionThread();
Expand Down Expand Up @@ -186,8 +184,6 @@ private void SeparateRenderables(RenderContext context, bool invalidateSceneGrap
}
particleNodes.Sort();
}
opaquePartitioner = opaqueNodes.Count > 0 ? Partitioner.Create(0, opaqueNodes.Count, FrustumPartitionSize) : null;
transparentPartitioner = transparentNodes.Count > 0 ? Partitioner.Create(0, transparentNodes.Count, FrustumPartitionSize) : null;
SetupFrustumTestFunctions();
}
else
Expand Down Expand Up @@ -536,14 +532,7 @@ protected void SetupFrustumTestFunctions()
}
else
{
if (opaqueNodes.Count < FrustumPartitionSize && transparentNodes.Count < FrustumPartitionSize)
{
FrustumTestAction = FrustumTestDefault;
}
else
{
FrustumTestAction = FrustumTestParallel;
}
FrustumTestAction = FrustumTestDefault;
}
}

Expand Down Expand Up @@ -573,45 +562,6 @@ private void FrustumTestDefault()
}
}
}

private void FrustumTestParallel()
{
var frustum = renderContext.BoundingFrustum;
if (opaquePartitioner != null)
{
Parallel.ForEach(opaquePartitioner, (range) =>
{
for (var i = range.Item1; i < range.Item2; ++i)
{
opaqueNodes.Items[i].IsInFrustum = opaqueNodes.Items[i].TestViewFrustum(ref frustum);
}
});
for (var i = 0; i < opaqueNodes.Count; ++i)
{
if (opaqueNodes.Items[i].IsInFrustum)
{
opaqueNodesInFrustum.Add(opaqueNodes.Items[i]);
}
}
}
if (transparentPartitioner != null)
{
Parallel.ForEach(transparentPartitioner, (range) =>
{
for (var i = range.Item1; i < range.Item2; ++i)
{
transparentNodes.Items[i].IsInFrustum = transparentNodes.Items[i].TestViewFrustum(ref frustum);
}
});
for (var i = 0; i < transparentNodes.Count; ++i)
{
if (transparentNodes.Items[i].IsInFrustum)
{
transparentNodesInFrustum.Add(transparentNodes.Items[i]);
}
}
}
}
#endregion
}
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -195,8 +195,6 @@ public sealed override FastList<SceneNode> PerFrameNodesWithPostEffect
return nodesWithPostEffect;
}
}

public const int FrustumPartitionSize = 500;
#endregion
}
}
Expand Down

0 comments on commit cbb5e2d

Please sign in to comment.