feat(srp): add render queue range authoring
- add a core RenderQueueRange helper for managed scene draw filtering - let FilteringSettings and RenderObjectsRendererFeature consume queue ranges directly - wire the new authoring path into probes and project-side usage
This commit is contained in:
@@ -5,8 +5,6 @@ namespace XCEngine.Rendering
|
||||
[StructLayout(LayoutKind.Sequential)]
|
||||
public struct FilteringSettings
|
||||
{
|
||||
private const int kTransparentRenderQueue = 3000;
|
||||
|
||||
public int renderQueueMin;
|
||||
public int renderQueueMax;
|
||||
|
||||
@@ -16,24 +14,44 @@ namespace XCEngine.Rendering
|
||||
[MarshalAs(UnmanagedType.I1)]
|
||||
public bool requireRenderObjectId;
|
||||
|
||||
public RenderQueueRange renderQueueRange
|
||||
{
|
||||
get
|
||||
{
|
||||
return new RenderQueueRange(
|
||||
renderQueueMin,
|
||||
renderQueueMax);
|
||||
}
|
||||
set
|
||||
{
|
||||
renderQueueMin = value.lowerBound;
|
||||
renderQueueMax = value.upperBound;
|
||||
}
|
||||
}
|
||||
|
||||
public static FilteringSettings Create(
|
||||
RenderQueueRange renderQueueRange)
|
||||
{
|
||||
return new FilteringSettings
|
||||
{
|
||||
renderQueueRange = renderQueueRange
|
||||
};
|
||||
}
|
||||
|
||||
public static FilteringSettings CreateDefault(
|
||||
RendererListType rendererListType)
|
||||
{
|
||||
FilteringSettings filteringSettings =
|
||||
new FilteringSettings
|
||||
{
|
||||
renderQueueMin = int.MinValue,
|
||||
renderQueueMax = int.MaxValue
|
||||
};
|
||||
Create(RenderQueueRange.All);
|
||||
switch (rendererListType)
|
||||
{
|
||||
case RendererListType.Opaque:
|
||||
filteringSettings.renderQueueMax =
|
||||
kTransparentRenderQueue - 1;
|
||||
filteringSettings.renderQueueRange =
|
||||
RenderQueueRange.Opaque;
|
||||
break;
|
||||
case RendererListType.Transparent:
|
||||
filteringSettings.renderQueueMin =
|
||||
kTransparentRenderQueue;
|
||||
filteringSettings.renderQueueRange =
|
||||
RenderQueueRange.Transparent;
|
||||
break;
|
||||
case RendererListType.ShadowCaster:
|
||||
filteringSettings.requireShadowCasting = true;
|
||||
|
||||
@@ -0,0 +1,33 @@
|
||||
namespace XCEngine.Rendering
|
||||
{
|
||||
public struct RenderQueueRange
|
||||
{
|
||||
private const int kTransparentRenderQueue = 3000;
|
||||
|
||||
public int lowerBound;
|
||||
public int upperBound;
|
||||
|
||||
public RenderQueueRange(
|
||||
int lowerBound,
|
||||
int upperBound)
|
||||
{
|
||||
this.lowerBound = lowerBound;
|
||||
this.upperBound = upperBound;
|
||||
}
|
||||
|
||||
public static RenderQueueRange All =>
|
||||
new RenderQueueRange(
|
||||
int.MinValue,
|
||||
int.MaxValue);
|
||||
|
||||
public static RenderQueueRange Opaque =>
|
||||
new RenderQueueRange(
|
||||
int.MinValue,
|
||||
kTransparentRenderQueue - 1);
|
||||
|
||||
public static RenderQueueRange Transparent =>
|
||||
new RenderQueueRange(
|
||||
kTransparentRenderQueue,
|
||||
int.MaxValue);
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user