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

95 lines
2.9 KiB
C#

using XCEngine;
using XCEngine.Rendering;
namespace XCEngine.Rendering.Universal
{
public sealed class RendererPassQueueData
{
internal RendererPassQueueData(
int rendererIndex,
ulong framePlanId,
CameraData cameraData,
LightingData lightingData,
ShadowData shadowData,
EnvironmentData environmentData,
FinalColorData finalColorData)
{
this.rendererIndex = rendererIndex;
this.framePlanId = framePlanId;
this.cameraData = cameraData ?? CameraData.Default;
this.lightingData = lightingData ?? LightingData.Default;
this.shadowData = shadowData ?? ShadowData.Default;
this.environmentData =
environmentData ?? EnvironmentData.Default;
this.finalColorData =
finalColorData ?? FinalColorData.Default;
}
internal static RendererPassQueueData CreatePlanning(
int rendererIndex,
bool finalColorRequiresProcessing,
ulong framePlanId)
{
return new RendererPassQueueData(
rendererIndex,
framePlanId,
CameraData.Default,
LightingData.Default,
ShadowData.Default,
EnvironmentData.Default,
finalColorRequiresProcessing
? new FinalColorData(
CreatePlanningFinalColorSettings(),
true,
false)
: FinalColorData.Default);
}
internal static RendererPassQueueData FromRenderingData(
RenderingData renderingData)
{
if (renderingData == null)
{
return CreatePlanning(-1, false, 0UL);
}
return new RendererPassQueueData(
renderingData.rendererIndex,
renderingData.framePlanId,
renderingData.cameraData,
renderingData.lightingData,
renderingData.shadowData,
renderingData.environmentData,
renderingData.finalColorData);
}
public int rendererIndex { get; }
public ulong framePlanId { get; }
public CameraData cameraData { get; }
public LightingData lightingData { get; }
public ShadowData shadowData { get; }
public EnvironmentData environmentData { get; }
public FinalColorData finalColorData { get; }
private static FinalColorSettings
CreatePlanningFinalColorSettings()
{
FinalColorSettings settings =
FinalColorSettings.CreateDefault();
settings.finalColorScale =
new Vector4(
0.5f,
0.5f,
0.5f,
1.0f);
return settings;
}
}
}