refactor(srp): move final color policy into request seam

This commit is contained in:
2026-04-21 22:34:40 +08:00
parent 808335126f
commit d75bd95e89
13 changed files with 380 additions and 136 deletions

View File

@@ -98,6 +98,26 @@ namespace XCEngine.Rendering
(int)value);
}
public void SetResolvedFinalColorPolicy(
FinalColorSettings settings,
bool hasPipelineDefaults,
bool hasCameraOverrides)
{
InternalCalls
.Rendering_CameraRenderRequestContext_SetResolvedFinalColorPolicy(
m_nativeHandle,
ref settings,
hasPipelineDefaults,
hasCameraOverrides);
}
public void ClearFinalColorPolicy()
{
InternalCalls
.Rendering_CameraRenderRequestContext_ClearFinalColorPolicy(
m_nativeHandle);
}
internal ulong nativeHandle =>
m_nativeHandle;
}

View File

@@ -0,0 +1,76 @@
using System.Runtime.InteropServices;
using XCEngine;
namespace XCEngine.Rendering
{
[StructLayout(LayoutKind.Sequential)]
public struct FinalColorOverrideSettings
{
[MarshalAs(UnmanagedType.I1)]
public bool overrideOutputTransferMode;
public FinalColorOutputTransferMode outputTransferMode;
[MarshalAs(UnmanagedType.I1)]
public bool overrideExposureMode;
public FinalColorExposureMode exposureMode;
[MarshalAs(UnmanagedType.I1)]
public bool overrideExposureValue;
public float exposureValue;
[MarshalAs(UnmanagedType.I1)]
public bool overrideToneMappingMode;
public FinalColorToneMappingMode toneMappingMode;
[MarshalAs(UnmanagedType.I1)]
public bool overrideFinalColorScale;
public Vector4 finalColorScale;
public bool HasOverrides()
{
return overrideOutputTransferMode ||
overrideExposureMode ||
overrideExposureValue ||
overrideToneMappingMode ||
overrideFinalColorScale;
}
public void ApplyTo(ref FinalColorSettings settings)
{
if (overrideOutputTransferMode)
{
settings.outputTransferMode =
outputTransferMode;
}
if (overrideExposureMode)
{
settings.exposureMode =
exposureMode;
}
if (overrideExposureValue)
{
settings.exposureValue =
exposureValue;
}
if (overrideToneMappingMode)
{
settings.toneMappingMode =
toneMappingMode;
}
if (overrideFinalColorScale)
{
settings.finalColorScale =
finalColorScale;
}
}
}
}

View File

@@ -72,17 +72,6 @@ namespace XCEngine.Rendering
return FinalColorSettings.CreateDefault();
}
private protected virtual bool UsesNativeCameraFramePlanBaseline()
{
return false;
}
private protected virtual bool UsesNativeCameraFramePlanBaselineContextual(
int rendererIndex)
{
return UsesNativeCameraFramePlanBaseline();
}
protected virtual void ReleaseRuntimeResources()
{
}