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; } } }