Files
XCEngine/managed/XCEngine.RenderPipelines.Universal/Rendering/Universal/UniversalNativeSceneFeatureController.cs

54 lines
1.3 KiB
C#

using XCEngine;
using XCEngine.Rendering;
namespace XCEngine.Rendering.Universal
{
internal sealed class UniversalNativeSceneFeatureController
{
private readonly NativeSceneFeaturePassId m_featurePassId;
private NativeSceneFeaturePass m_pass;
public UniversalNativeSceneFeatureController(
NativeSceneFeaturePassId featurePassId)
{
m_featurePassId =
featurePassId;
}
public int AppendRuntimeStateHash(
int hash,
RenderPassEvent passEvent)
{
return RuntimeStateHashUtility.Combine(
hash,
(int)passEvent);
}
public void Create(
RenderPassEvent passEvent)
{
if (m_pass == null)
{
m_pass = new NativeSceneFeaturePass(
m_featurePassId,
passEvent);
return;
}
m_pass.Configure(passEvent);
}
public void EnqueuePass(
ScriptableRenderer renderer,
RenderingData renderingData,
RenderPassEvent passEvent)
{
Create(passEvent);
UniversalMainSceneFeatureUtility.EnqueuePass(
renderer,
renderingData,
m_pass);
}
}
}