2026-04-22 02:23:33 +08:00
|
|
|
using XCEngine;
|
|
|
|
|
using XCEngine.Rendering;
|
|
|
|
|
|
|
|
|
|
namespace XCEngine.Rendering.Universal
|
|
|
|
|
{
|
|
|
|
|
internal sealed class UniversalRenderObjectsFeatureController
|
|
|
|
|
{
|
|
|
|
|
private DrawObjectsPass m_pass;
|
|
|
|
|
|
|
|
|
|
public int AppendRuntimeStateHash(
|
|
|
|
|
int hash,
|
|
|
|
|
RenderObjectsFeatureSettings settings)
|
|
|
|
|
{
|
|
|
|
|
return settings != null
|
|
|
|
|
? settings.AppendRuntimeStateHash(hash)
|
|
|
|
|
: hash;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public void Create(
|
|
|
|
|
RenderObjectsFeatureSettings settings)
|
|
|
|
|
{
|
|
|
|
|
if (settings == null)
|
|
|
|
|
{
|
|
|
|
|
settings = new RenderObjectsFeatureSettings();
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if (m_pass == null)
|
|
|
|
|
{
|
|
|
|
|
m_pass =
|
|
|
|
|
new DrawObjectsPass(
|
|
|
|
|
settings.passEvent,
|
|
|
|
|
settings.rendererListDesc,
|
|
|
|
|
settings.drawingSettings);
|
|
|
|
|
return;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
m_pass.Configure(
|
|
|
|
|
settings.passEvent,
|
|
|
|
|
settings.rendererListDesc,
|
|
|
|
|
settings.drawingSettings);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public void EnqueuePass(
|
|
|
|
|
ScriptableRenderer renderer,
|
2026-04-28 01:25:29 +08:00
|
|
|
RendererPassQueueData passQueueData,
|
2026-04-22 02:23:33 +08:00
|
|
|
RenderObjectsFeatureSettings settings)
|
|
|
|
|
{
|
|
|
|
|
Create(settings);
|
|
|
|
|
UniversalMainSceneFeatureUtility.EnqueuePass(
|
|
|
|
|
renderer,
|
2026-04-28 01:25:29 +08:00
|
|
|
passQueueData,
|
2026-04-22 02:23:33 +08:00
|
|
|
m_pass);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|