refactor(srp): move final color policy into request seam
This commit is contained in:
@@ -1,3 +1,5 @@
|
||||
using XCEngine.Rendering;
|
||||
|
||||
namespace XCEngine
|
||||
{
|
||||
public sealed class Camera : Component
|
||||
@@ -166,5 +168,23 @@ namespace XCEngine
|
||||
|
||||
public Color skyboxBottomColor =>
|
||||
SkyboxBottomColor;
|
||||
|
||||
public bool HasFinalColorOverrides =>
|
||||
InternalCalls
|
||||
.Camera_GetHasFinalColorOverrides(
|
||||
GameObjectUUID);
|
||||
|
||||
public bool hasFinalColorOverrides =>
|
||||
HasFinalColorOverrides;
|
||||
|
||||
public FinalColorOverrideSettings
|
||||
GetFinalColorOverrideSettings()
|
||||
{
|
||||
InternalCalls
|
||||
.Camera_GetFinalColorOverrideSettings(
|
||||
GameObjectUUID,
|
||||
out FinalColorOverrideSettings value);
|
||||
return value;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -282,6 +282,14 @@ namespace XCEngine
|
||||
[MethodImpl(MethodImplOptions.InternalCall)]
|
||||
internal static extern void Camera_GetSkyboxBottomColor(ulong gameObjectUUID, out Color value);
|
||||
|
||||
[MethodImpl(MethodImplOptions.InternalCall)]
|
||||
internal static extern bool Camera_GetHasFinalColorOverrides(ulong gameObjectUUID);
|
||||
|
||||
[MethodImpl(MethodImplOptions.InternalCall)]
|
||||
internal static extern void Camera_GetFinalColorOverrideSettings(
|
||||
ulong gameObjectUUID,
|
||||
out Rendering.FinalColorOverrideSettings settings);
|
||||
|
||||
[MethodImpl(MethodImplOptions.InternalCall)]
|
||||
internal static extern float Light_GetIntensity(ulong gameObjectUUID);
|
||||
|
||||
@@ -944,6 +952,19 @@ namespace XCEngine
|
||||
ulong nativeHandle,
|
||||
int clearFlags);
|
||||
|
||||
[MethodImpl(MethodImplOptions.InternalCall)]
|
||||
internal static extern void
|
||||
Rendering_CameraRenderRequestContext_SetResolvedFinalColorPolicy(
|
||||
ulong nativeHandle,
|
||||
ref Rendering.FinalColorSettings settings,
|
||||
bool hasPipelineDefaults,
|
||||
bool hasCameraOverrides);
|
||||
|
||||
[MethodImpl(MethodImplOptions.InternalCall)]
|
||||
internal static extern void
|
||||
Rendering_CameraRenderRequestContext_ClearFinalColorPolicy(
|
||||
ulong nativeHandle);
|
||||
|
||||
[MethodImpl(MethodImplOptions.InternalCall)]
|
||||
internal static extern int
|
||||
Rendering_RenderSceneSetupContext_GetRendererIndex(
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -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()
|
||||
{
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user