diff --git a/docs/plan/SRP_核心层与首方渲染管线拆层计划_2026-04-19.md b/docs/plan/SRP_核心层与首方渲染管线拆层计划_2026-04-19.md index 3d9f51f2..ba8dcd46 100644 --- a/docs/plan/SRP_核心层与首方渲染管线拆层计划_2026-04-19.md +++ b/docs/plan/SRP_核心层与首方渲染管线拆层计划_2026-04-19.md @@ -76,9 +76,9 @@ pipeline asset、pipeline、context、graphics settings 运行时接口。 #### 当前首方 forward 骨架 -1. `managed/XCEngine.ScriptCore/ForwardRenderPipelineAsset.cs` -2. `managed/XCEngine.ScriptCore/ForwardRendererData.cs` -3. `managed/XCEngine.ScriptCore/ForwardRenderer.cs` +1. `managed/XCEngine.ScriptCore/Rendering/Universal/UniversalRenderPipelineAsset.cs` +2. `managed/XCEngine.ScriptCore/Rendering/Universal/UniversalRendererData.cs` +3. `managed/XCEngine.ScriptCore/Rendering/Universal/UniversalRenderer.cs` 4. `managed/XCEngine.ScriptCore/ColorScalePostProcessRendererFeature.cs` 5. `managed/XCEngine.ScriptCore/DisableDirectionalShadowRendererFeature.cs` 6. `managed/GameScripts/RenderPipelineApiProbe.cs` @@ -93,7 +93,7 @@ pipeline asset、pipeline、context、graphics settings 运行时接口。 1. `managed/XCEngine.ScriptCore` 同时塞了基础脚本 API、SRP Core、首方 forward renderer、示例 feature 2. `ScriptableRenderer / ScriptableRenderPass / RenderPassEvent / RenderingData` 这些更像 URP-like 层的东西,仍然和 SRP Core 混在一起 -3. `ForwardRenderer*`、`ColorScalePostProcessRendererFeature`、 +3. `UniversalRenderer*`、`ColorScalePostProcessRendererFeature`、 `DisableDirectionalShadowRendererFeature` 这种明显属于首方管线层的实现, 还在“ScriptCore”里直接暴露 4. `ScriptableRenderContext` 目前仍暴露了 @@ -149,7 +149,7 @@ pipeline asset、pipeline、context、graphics settings 运行时接口。 1. C++ 继续负责渲染执行内核 2. SRP Core 只保留真正稳定、长期保留的管线抽象 -3. `Renderer / Feature / Pass` 和当前 `ForwardRenderer*` +3. `Renderer / Feature / Pass` 和当前 `UniversalRenderer*` 视为首方渲染层,不再和 SRP Core 混放 4. 真正的 URP-like 包层,要建立在这条边界已经清晰之后 @@ -188,9 +188,9 @@ pipeline asset、pipeline、context、graphics settings 运行时接口。 10. `EnvironmentData` 11. `FinalColorData` 12. `StageColorData` -13. `ForwardRenderPipelineAsset` -14. `ForwardRendererData` -15. `ForwardRenderer` +13. `UniversalRenderPipelineAsset` +14. `UniversalRendererData` +15. `UniversalRenderer` 16. `ColorScalePostProcessRendererFeature` 17. `DisableDirectionalShadowRendererFeature` @@ -275,7 +275,7 @@ pipeline asset、pipeline、context、graphics settings 运行时接口。 目标: 1. 在 `managed/XCEngine.ScriptCore` 内先把 - `Base / SRP Core / FirstParty Rendering` + `Base / SRP Core / Universal Rendering` 至少分目录 2. 能拆命名空间的地方先拆命名空间 3. 更新 `managed/CMakeLists.txt`,不再把 SRP 与首方 forward 实现混成一坨平铺文件 @@ -284,7 +284,7 @@ pipeline asset、pipeline、context、graphics settings 运行时接口。 建议的第一版目录方向: 1. `managed/XCEngine.ScriptCore/Rendering/Core/*` -2. `managed/XCEngine.ScriptCore/Rendering/FirstParty/*` +2. `managed/XCEngine.ScriptCore/Rendering/Universal/*` 3. `managed/XCEngine.ScriptCore/Rendering/Internal/*` 验收: @@ -299,7 +299,7 @@ pipeline asset、pipeline、context、graphics settings 运行时接口。 1. 让 `ScriptableRenderer* / ScriptableRenderPass / RenderPassEvent` 从“像 Core”变成“明确属于首方渲染层” -2. `ForwardRenderer*` 不再伪装成“底层核心的一部分” +2. `UniversalRenderer*` 不再伪装成“底层核心的一部分” 3. 现有示例 feature 一并迁入首方层 这一阶段完成后,`ScriptableRenderPipeline` 本身只负责: diff --git a/editor/src/Scripting/EditorScriptAssemblyBuilder.cpp b/editor/src/Scripting/EditorScriptAssemblyBuilder.cpp index 32a3cff6..608d186c 100644 --- a/editor/src/Scripting/EditorScriptAssemblyBuilder.cpp +++ b/editor/src/Scripting/EditorScriptAssemblyBuilder.cpp @@ -361,7 +361,7 @@ EditorScriptAssemblyBuildResult EditorScriptAssemblyBuilder::RebuildProjectAssem sourcePath.lexically_relative(scriptCoreSourceRoot) .generic_string(); if (relativePath.rfind("Rendering/Renderer/", 0) == 0 || - relativePath.rfind("Rendering/FirstParty/", 0) == 0) { + relativePath.rfind("Rendering/Universal/", 0) == 0) { renderPipelinesUniversalSources.push_back(sourcePath); } else { scriptCoreSources.push_back(sourcePath); diff --git a/managed/CMakeLists.txt b/managed/CMakeLists.txt index 3a09b9b0..627ce5d6 100644 --- a/managed/CMakeLists.txt +++ b/managed/CMakeLists.txt @@ -208,11 +208,11 @@ set(XCENGINE_RENDER_PIPELINES_UNIVERSAL_SOURCES ${CMAKE_CURRENT_SOURCE_DIR}/XCEngine.ScriptCore/Rendering/Renderer/ScriptableRendererData.cs ${CMAKE_CURRENT_SOURCE_DIR}/XCEngine.ScriptCore/Rendering/Renderer/ScriptableRendererFeature.cs # First-party rendering - ${CMAKE_CURRENT_SOURCE_DIR}/XCEngine.ScriptCore/Rendering/FirstParty/ColorScalePostProcessRendererFeature.cs - ${CMAKE_CURRENT_SOURCE_DIR}/XCEngine.ScriptCore/Rendering/FirstParty/DisableDirectionalShadowRendererFeature.cs - ${CMAKE_CURRENT_SOURCE_DIR}/XCEngine.ScriptCore/Rendering/FirstParty/ForwardRenderer.cs - ${CMAKE_CURRENT_SOURCE_DIR}/XCEngine.ScriptCore/Rendering/FirstParty/ForwardRendererData.cs - ${CMAKE_CURRENT_SOURCE_DIR}/XCEngine.ScriptCore/Rendering/FirstParty/ForwardRenderPipelineAsset.cs + ${CMAKE_CURRENT_SOURCE_DIR}/XCEngine.ScriptCore/Rendering/Universal/ColorScalePostProcessRendererFeature.cs + ${CMAKE_CURRENT_SOURCE_DIR}/XCEngine.ScriptCore/Rendering/Universal/DisableDirectionalShadowRendererFeature.cs + ${CMAKE_CURRENT_SOURCE_DIR}/XCEngine.ScriptCore/Rendering/Universal/UniversalRenderer.cs + ${CMAKE_CURRENT_SOURCE_DIR}/XCEngine.ScriptCore/Rendering/Universal/UniversalRendererData.cs + ${CMAKE_CURRENT_SOURCE_DIR}/XCEngine.ScriptCore/Rendering/Universal/UniversalRenderPipelineAsset.cs ) set(XCENGINE_GAME_SCRIPT_SOURCES diff --git a/managed/GameScripts/RenderPipelineApiProbe.cs b/managed/GameScripts/RenderPipelineApiProbe.cs index f53d4242..dd96a61e 100644 --- a/managed/GameScripts/RenderPipelineApiProbe.cs +++ b/managed/GameScripts/RenderPipelineApiProbe.cs @@ -2,7 +2,7 @@ using System; using XCEngine; using XCEngine.Rendering; using XCEngine.Rendering.Renderer; -using XCEngine.Rendering.FirstParty; +using XCEngine.Rendering.Universal; namespace Gameplay { @@ -254,9 +254,9 @@ namespace Gameplay } } - internal sealed class ProbeForwardRenderer : ScriptableRenderer + internal sealed class ProbeUniversalRenderer : ScriptableRenderer { - public ProbeForwardRenderer( + public ProbeUniversalRenderer( Vector4 postProcessScale, Action onOpaqueRecorded) { @@ -753,7 +753,7 @@ namespace Gameplay } } - public sealed class ManagedForwardRenderPipelineProbeAsset + public sealed class ManagedUniversalRenderPipelineProbeAsset : ScriptableRenderPipelineAsset { public static int CreatePipelineCallCount; @@ -762,7 +762,7 @@ namespace Gameplay protected override ScriptableRenderPipeline CreatePipeline() { CreatePipelineCallCount++; - return new ManagedForwardRenderPipelineProbe( + return new ManagedUniversalRenderPipelineProbe( postProcessScale); } @@ -894,7 +894,7 @@ namespace Gameplay } } - public sealed class ManagedForwardRenderPipelineProbe + public sealed class ManagedUniversalRenderPipelineProbe : RendererBackedRenderPipeline { public static int SupportsMainSceneCallCount; @@ -906,7 +906,7 @@ namespace Gameplay private readonly Vector4 m_postProcessScale; - public ManagedForwardRenderPipelineProbe( + public ManagedUniversalRenderPipelineProbe( Vector4 postProcessScale) { m_postProcessScale = postProcessScale; @@ -914,7 +914,7 @@ namespace Gameplay protected override ScriptableRenderer CreateRenderer() { - return new ProbeForwardRenderer( + return new ProbeUniversalRenderer( m_postProcessScale, OnOpaqueRecorded); } @@ -1028,7 +1028,7 @@ namespace Gameplay } } - public sealed class ScriptCoreForwardRenderPipelineSelectionProbe + public sealed class ScriptCoreUniversalRenderPipelineSelectionProbe : MonoBehaviour { public bool SelectionRoundTripSucceeded; @@ -1037,15 +1037,15 @@ namespace Gameplay public void Start() { - ForwardRenderPipelineAsset asset = - new ForwardRenderPipelineAsset + UniversalRenderPipelineAsset asset = + new UniversalRenderPipelineAsset { - rendererData = new ForwardRendererData() + rendererData = new UniversalRendererData() }; GraphicsSettings.renderPipelineAsset = asset; - ForwardRenderPipelineAsset selectedAsset = - GraphicsSettings.renderPipelineAsset as ForwardRenderPipelineAsset; + UniversalRenderPipelineAsset selectedAsset = + GraphicsSettings.renderPipelineAsset as UniversalRenderPipelineAsset; SelectionRoundTripSucceeded = selectedAsset != null; SelectedPipelineAssetTypeName = @@ -1060,28 +1060,28 @@ namespace Gameplay } } - public sealed class ScriptCoreForwardRenderPipelineRuntimeSelectionProbe + public sealed class ScriptCoreUniversalRenderPipelineRuntimeSelectionProbe : MonoBehaviour { public void Start() { GraphicsSettings.renderPipelineAsset = - new ForwardRenderPipelineAsset + new UniversalRenderPipelineAsset { - rendererData = new ForwardRendererData() + rendererData = new UniversalRendererData() }; } } - public sealed class ScriptCoreConfiguredForwardRenderPipelineRuntimeSelectionProbe + public sealed class ScriptCoreConfiguredUniversalRenderPipelineRuntimeSelectionProbe : MonoBehaviour { public void Start() { GraphicsSettings.renderPipelineAsset = - new ForwardRenderPipelineAsset + new UniversalRenderPipelineAsset { - rendererData = new ForwardRendererData + rendererData = new UniversalRendererData { renderOpaque = true, renderSkybox = false, @@ -1091,15 +1091,15 @@ namespace Gameplay } } - public sealed class ScriptCoreForwardPostProcessRendererFeatureRuntimeSelectionProbe + public sealed class ScriptCoreUniversalPostProcessRendererFeatureRuntimeSelectionProbe : MonoBehaviour { public void Start() { GraphicsSettings.renderPipelineAsset = - new ForwardRenderPipelineAsset + new UniversalRenderPipelineAsset { - rendererData = new ForwardRendererData + rendererData = new UniversalRendererData { rendererFeatures = new ScriptableRendererFeature[] @@ -1118,15 +1118,15 @@ namespace Gameplay } } - public sealed class ScriptCoreForwardShadowlessRendererFeatureRuntimeSelectionProbe + public sealed class ScriptCoreUniversalShadowlessRendererFeatureRuntimeSelectionProbe : MonoBehaviour { public void Start() { GraphicsSettings.renderPipelineAsset = - new ForwardRenderPipelineAsset + new UniversalRenderPipelineAsset { - rendererData = new ForwardRendererData + rendererData = new UniversalRendererData { rendererFeatures = new ScriptableRendererFeature[] @@ -1155,7 +1155,7 @@ namespace Gameplay } } - public sealed class ManagedForwardRenderPipelineRuntimeSelectionProbe + public sealed class ManagedUniversalRenderPipelineRuntimeSelectionProbe : MonoBehaviour { public int ObservedCreatePipelineCallCount; @@ -1168,16 +1168,16 @@ namespace Gameplay public void Start() { - ManagedForwardRenderPipelineProbeAsset.CreatePipelineCallCount = 0; - ManagedForwardRenderPipelineProbe.SupportsMainSceneCallCount = 0; - ManagedForwardRenderPipelineProbe.SupportsPostProcessCallCount = 0; - ManagedForwardRenderPipelineProbe.RecordMainSceneCallCount = 0; - ManagedForwardRenderPipelineProbe.RecordSceneCallCount = 0; - ManagedForwardRenderPipelineProbe.RecordPostProcessCallCount = 0; - ManagedForwardRenderPipelineProbe.LastPostProcessScale = + ManagedUniversalRenderPipelineProbeAsset.CreatePipelineCallCount = 0; + ManagedUniversalRenderPipelineProbe.SupportsMainSceneCallCount = 0; + ManagedUniversalRenderPipelineProbe.SupportsPostProcessCallCount = 0; + ManagedUniversalRenderPipelineProbe.RecordMainSceneCallCount = 0; + ManagedUniversalRenderPipelineProbe.RecordSceneCallCount = 0; + ManagedUniversalRenderPipelineProbe.RecordPostProcessCallCount = 0; + ManagedUniversalRenderPipelineProbe.LastPostProcessScale = new Vector4(0.0f, 0.0f, 0.0f, 0.0f); GraphicsSettings.renderPipelineAsset = - new ManagedForwardRenderPipelineProbeAsset + new ManagedUniversalRenderPipelineProbeAsset { postProcessScale = new Vector4(1.11f, 0.97f, 0.93f, 1.0f) }; @@ -1186,19 +1186,19 @@ namespace Gameplay public void Update() { ObservedCreatePipelineCallCount = - ManagedForwardRenderPipelineProbeAsset.CreatePipelineCallCount; + ManagedUniversalRenderPipelineProbeAsset.CreatePipelineCallCount; ObservedSupportsMainSceneCallCount = - ManagedForwardRenderPipelineProbe.SupportsMainSceneCallCount; + ManagedUniversalRenderPipelineProbe.SupportsMainSceneCallCount; ObservedSupportsPostProcessCallCount = - ManagedForwardRenderPipelineProbe.SupportsPostProcessCallCount; + ManagedUniversalRenderPipelineProbe.SupportsPostProcessCallCount; ObservedRecordMainSceneCallCount = - ManagedForwardRenderPipelineProbe.RecordMainSceneCallCount; + ManagedUniversalRenderPipelineProbe.RecordMainSceneCallCount; ObservedRecordSceneCallCount = - ManagedForwardRenderPipelineProbe.RecordSceneCallCount; + ManagedUniversalRenderPipelineProbe.RecordSceneCallCount; ObservedRecordPostProcessCallCount = - ManagedForwardRenderPipelineProbe.RecordPostProcessCallCount; + ManagedUniversalRenderPipelineProbe.RecordPostProcessCallCount; ObservedPostProcessScale = - ManagedForwardRenderPipelineProbe.LastPostProcessScale; + ManagedUniversalRenderPipelineProbe.LastPostProcessScale; } } diff --git a/managed/XCEngine.ScriptCore/Rendering/FirstParty/ColorScalePostProcessRendererFeature.cs b/managed/XCEngine.ScriptCore/Rendering/Universal/ColorScalePostProcessRendererFeature.cs similarity index 97% rename from managed/XCEngine.ScriptCore/Rendering/FirstParty/ColorScalePostProcessRendererFeature.cs rename to managed/XCEngine.ScriptCore/Rendering/Universal/ColorScalePostProcessRendererFeature.cs index 80ec609d..4c36c3e1 100644 --- a/managed/XCEngine.ScriptCore/Rendering/FirstParty/ColorScalePostProcessRendererFeature.cs +++ b/managed/XCEngine.ScriptCore/Rendering/Universal/ColorScalePostProcessRendererFeature.cs @@ -2,7 +2,7 @@ using XCEngine; using XCEngine.Rendering; using XCEngine.Rendering.Renderer; -namespace XCEngine.Rendering.FirstParty +namespace XCEngine.Rendering.Universal { internal sealed class ColorScalePostProcessPass : ScriptableRenderPass diff --git a/managed/XCEngine.ScriptCore/Rendering/FirstParty/DisableDirectionalShadowRendererFeature.cs b/managed/XCEngine.ScriptCore/Rendering/Universal/DisableDirectionalShadowRendererFeature.cs similarity index 92% rename from managed/XCEngine.ScriptCore/Rendering/FirstParty/DisableDirectionalShadowRendererFeature.cs rename to managed/XCEngine.ScriptCore/Rendering/Universal/DisableDirectionalShadowRendererFeature.cs index 08ec100a..9a9fb2fe 100644 --- a/managed/XCEngine.ScriptCore/Rendering/FirstParty/DisableDirectionalShadowRendererFeature.cs +++ b/managed/XCEngine.ScriptCore/Rendering/Universal/DisableDirectionalShadowRendererFeature.cs @@ -2,7 +2,7 @@ using XCEngine; using XCEngine.Rendering; using XCEngine.Rendering.Renderer; -namespace XCEngine.Rendering.FirstParty +namespace XCEngine.Rendering.Universal { public sealed class DisableDirectionalShadowRendererFeature : ScriptableRendererFeature diff --git a/managed/XCEngine.ScriptCore/Rendering/FirstParty/ForwardRenderPipelineAsset.cs b/managed/XCEngine.ScriptCore/Rendering/Universal/UniversalRenderPipelineAsset.cs similarity index 57% rename from managed/XCEngine.ScriptCore/Rendering/FirstParty/ForwardRenderPipelineAsset.cs rename to managed/XCEngine.ScriptCore/Rendering/Universal/UniversalRenderPipelineAsset.cs index b0453645..62515f42 100644 --- a/managed/XCEngine.ScriptCore/Rendering/FirstParty/ForwardRenderPipelineAsset.cs +++ b/managed/XCEngine.ScriptCore/Rendering/Universal/UniversalRenderPipelineAsset.cs @@ -2,19 +2,19 @@ using XCEngine; using XCEngine.Rendering; using XCEngine.Rendering.Renderer; -namespace XCEngine.Rendering.FirstParty +namespace XCEngine.Rendering.Universal { - public class ForwardRenderPipelineAsset + public class UniversalRenderPipelineAsset : RendererBackedRenderPipelineAsset { - public ForwardRendererData rendererData = - new ForwardRendererData(); + public UniversalRendererData rendererData = + new UniversalRendererData(); protected override ScriptableRendererData GetRendererData() { if (rendererData == null) { - rendererData = new ForwardRendererData(); + rendererData = new UniversalRendererData(); } return rendererData; diff --git a/managed/XCEngine.ScriptCore/Rendering/FirstParty/ForwardRenderer.cs b/managed/XCEngine.ScriptCore/Rendering/Universal/UniversalRenderer.cs similarity index 65% rename from managed/XCEngine.ScriptCore/Rendering/FirstParty/ForwardRenderer.cs rename to managed/XCEngine.ScriptCore/Rendering/Universal/UniversalRenderer.cs index e9f6b761..48b32701 100644 --- a/managed/XCEngine.ScriptCore/Rendering/FirstParty/ForwardRenderer.cs +++ b/managed/XCEngine.ScriptCore/Rendering/Universal/UniversalRenderer.cs @@ -3,13 +3,13 @@ using XCEngine; using XCEngine.Rendering; using XCEngine.Rendering.Renderer; -namespace XCEngine.Rendering.FirstParty +namespace XCEngine.Rendering.Universal { - internal sealed class ForwardSceneRecordingPass : ScriptableRenderPass + internal sealed class UniversalSceneRecordingPass : ScriptableRenderPass { private readonly Func m_recordAction; - public ForwardSceneRecordingPass( + public UniversalSceneRecordingPass( RenderPassEvent passEvent, Func recordAction) { @@ -29,48 +29,48 @@ namespace XCEngine.Rendering.FirstParty } } - internal sealed class ForwardSceneFeature : ScriptableRendererFeature + internal sealed class UniversalSceneFeature : ScriptableRendererFeature { - private readonly ForwardRendererData m_rendererData; - private readonly ForwardSceneRecordingPass m_beforeOpaquePass = - new ForwardSceneRecordingPass( + private readonly UniversalRendererData m_rendererData; + private readonly UniversalSceneRecordingPass m_beforeOpaquePass = + new UniversalSceneRecordingPass( RenderPassEvent.BeforeRenderingOpaques, context => context.RecordBeforeOpaqueInjection()); - private readonly ForwardSceneRecordingPass m_opaquePass = - new ForwardSceneRecordingPass( + private readonly UniversalSceneRecordingPass m_opaquePass = + new UniversalSceneRecordingPass( RenderPassEvent.RenderOpaques, context => context.RecordOpaqueScenePhase()); - private readonly ForwardSceneRecordingPass m_afterOpaquePass = - new ForwardSceneRecordingPass( + private readonly UniversalSceneRecordingPass m_afterOpaquePass = + new UniversalSceneRecordingPass( RenderPassEvent.AfterRenderingOpaques, context => context.RecordAfterOpaqueInjection()); - private readonly ForwardSceneRecordingPass m_beforeSkyboxPass = - new ForwardSceneRecordingPass( + private readonly UniversalSceneRecordingPass m_beforeSkyboxPass = + new UniversalSceneRecordingPass( RenderPassEvent.BeforeRenderingSkybox, context => context.RecordBeforeSkyboxInjection()); - private readonly ForwardSceneRecordingPass m_skyboxPass = - new ForwardSceneRecordingPass( + private readonly UniversalSceneRecordingPass m_skyboxPass = + new UniversalSceneRecordingPass( RenderPassEvent.RenderSkybox, context => context.RecordSkyboxScenePhase()); - private readonly ForwardSceneRecordingPass m_afterSkyboxPass = - new ForwardSceneRecordingPass( + private readonly UniversalSceneRecordingPass m_afterSkyboxPass = + new UniversalSceneRecordingPass( RenderPassEvent.AfterRenderingSkybox, context => context.RecordAfterSkyboxInjection()); - private readonly ForwardSceneRecordingPass m_beforeTransparentPass = - new ForwardSceneRecordingPass( + private readonly UniversalSceneRecordingPass m_beforeTransparentPass = + new UniversalSceneRecordingPass( RenderPassEvent.BeforeRenderingTransparents, context => context.RecordBeforeTransparentInjection()); - private readonly ForwardSceneRecordingPass m_transparentPass = - new ForwardSceneRecordingPass( + private readonly UniversalSceneRecordingPass m_transparentPass = + new UniversalSceneRecordingPass( RenderPassEvent.RenderTransparents, context => context.RecordTransparentScenePhase()); - private readonly ForwardSceneRecordingPass m_afterTransparentPass = - new ForwardSceneRecordingPass( + private readonly UniversalSceneRecordingPass m_afterTransparentPass = + new UniversalSceneRecordingPass( RenderPassEvent.AfterRenderingTransparents, context => context.RecordAfterTransparentInjection()); - public ForwardSceneFeature( - ForwardRendererData rendererData) + public UniversalSceneFeature( + UniversalRendererData rendererData) { m_rendererData = rendererData; } @@ -110,14 +110,14 @@ namespace XCEngine.Rendering.FirstParty } } - public sealed class ForwardRenderer : ScriptableRenderer + public sealed class UniversalRenderer : ScriptableRenderer { - public ForwardRenderer( - ForwardRendererData rendererData) + public UniversalRenderer( + UniversalRendererData rendererData) { - ForwardRendererData resolvedData = - rendererData ?? new ForwardRendererData(); - AddFeature(new ForwardSceneFeature(resolvedData)); + UniversalRendererData resolvedData = + rendererData ?? new UniversalRendererData(); + AddFeature(new UniversalSceneFeature(resolvedData)); ScriptableRendererFeature[] rendererFeatures = resolvedData.CreateRendererFeaturesInstance(); diff --git a/managed/XCEngine.ScriptCore/Rendering/FirstParty/ForwardRendererData.cs b/managed/XCEngine.ScriptCore/Rendering/Universal/UniversalRendererData.cs similarity index 80% rename from managed/XCEngine.ScriptCore/Rendering/FirstParty/ForwardRendererData.cs rename to managed/XCEngine.ScriptCore/Rendering/Universal/UniversalRendererData.cs index a5077afd..d7e50890 100644 --- a/managed/XCEngine.ScriptCore/Rendering/FirstParty/ForwardRendererData.cs +++ b/managed/XCEngine.ScriptCore/Rendering/Universal/UniversalRendererData.cs @@ -3,9 +3,9 @@ using XCEngine; using XCEngine.Rendering; using XCEngine.Rendering.Renderer; -namespace XCEngine.Rendering.FirstParty +namespace XCEngine.Rendering.Universal { - public class ForwardRendererData : ScriptableRendererData + public class UniversalRendererData : ScriptableRendererData { public bool renderOpaque = true; public bool renderSkybox = true; @@ -15,7 +15,7 @@ namespace XCEngine.Rendering.FirstParty protected override ScriptableRenderer CreateRenderer() { - return new ForwardRenderer(this); + return new UniversalRenderer(this); } protected override ScriptableRendererFeature[] CreateRendererFeatures() diff --git a/tests/Rendering/unit/test_graphics_settings_state.cpp b/tests/Rendering/unit/test_graphics_settings_state.cpp index 48661614..49018bd1 100644 --- a/tests/Rendering/unit/test_graphics_settings_state.cpp +++ b/tests/Rendering/unit/test_graphics_settings_state.cpp @@ -56,7 +56,7 @@ TEST(GraphicsSettingsState_Test, StoresRenderPipelineAssetDescriptorAndBumpsEnvi const Pipelines::ManagedRenderPipelineAssetDescriptor descriptor = { "XCEngine.GameScripts", "Gameplay", - "ManagedForwardRenderPipelineProbeAsset", + "ManagedUniversalRenderPipelineProbeAsset", 42u }; diff --git a/tests/editor/test_project_file_utils.cpp b/tests/editor/test_project_file_utils.cpp index 4fe37543..3e716d0f 100644 --- a/tests/editor/test_project_file_utils.cpp +++ b/tests/editor/test_project_file_utils.cpp @@ -33,7 +33,7 @@ TEST_F(ProjectFileUtilsTest, SavesAndLoadsGraphicsSettingsRoundTrip) { savedDescriptor.renderPipelineAssetAssembly = "GameScripts"; savedDescriptor.renderPipelineAssetNamespace = "Gameplay"; savedDescriptor.renderPipelineAssetClass = - "ManagedForwardRenderPipelineProbeAsset"; + "ManagedUniversalRenderPipelineProbeAsset"; ASSERT_TRUE(SaveProjectGraphicsSettings( m_projectRoot.string(), diff --git a/tests/editor/test_project_graphics_settings.cpp b/tests/editor/test_project_graphics_settings.cpp index 47c6020e..6709c0c7 100644 --- a/tests/editor/test_project_graphics_settings.cpp +++ b/tests/editor/test_project_graphics_settings.cpp @@ -35,7 +35,7 @@ TEST_F(ProjectGraphicsSettingsTest, BuildsDescriptorFromNativeSelection) { nativeDescriptor = {}; nativeDescriptor.assemblyName = "GameScripts"; nativeDescriptor.namespaceName = "Gameplay"; - nativeDescriptor.className = "ManagedForwardRenderPipelineProbeAsset"; + nativeDescriptor.className = "ManagedUniversalRenderPipelineProbeAsset"; nativeDescriptor.managedAssetHandle = 77u; m_state.SetConfiguredRenderPipelineAssetDescriptor(nativeDescriptor); @@ -44,7 +44,7 @@ TEST_F(ProjectGraphicsSettingsTest, BuildsDescriptorFromNativeSelection) { EXPECT_EQ(descriptor.renderPipelineAssetNamespace, "Gameplay"); EXPECT_EQ( descriptor.renderPipelineAssetClass, - "ManagedForwardRenderPipelineProbeAsset"); + "ManagedUniversalRenderPipelineProbeAsset"); } TEST_F(ProjectGraphicsSettingsTest, SavesNativeSelectionIntoProjectSettingsFile) { @@ -52,7 +52,7 @@ TEST_F(ProjectGraphicsSettingsTest, SavesNativeSelectionIntoProjectSettingsFile) nativeDescriptor = {}; nativeDescriptor.assemblyName = "GameScripts"; nativeDescriptor.namespaceName = "Gameplay"; - nativeDescriptor.className = "ManagedForwardRenderPipelineProbeAsset"; + nativeDescriptor.className = "ManagedUniversalRenderPipelineProbeAsset"; nativeDescriptor.managedAssetHandle = 88u; m_state.SetConfiguredRenderPipelineAssetDescriptor(nativeDescriptor); @@ -65,7 +65,7 @@ TEST_F(ProjectGraphicsSettingsTest, SavesNativeSelectionIntoProjectSettingsFile) EXPECT_EQ(loaded->renderPipelineAssetNamespace, "Gameplay"); EXPECT_EQ( loaded->renderPipelineAssetClass, - "ManagedForwardRenderPipelineProbeAsset"); + "ManagedUniversalRenderPipelineProbeAsset"); } TEST_F( @@ -75,7 +75,7 @@ TEST_F( savedDescriptor.renderPipelineAssetAssembly = "GameScripts"; savedDescriptor.renderPipelineAssetNamespace = "Gameplay"; savedDescriptor.renderPipelineAssetClass = - "ManagedForwardRenderPipelineProbeAsset"; + "ManagedUniversalRenderPipelineProbeAsset"; ASSERT_TRUE(ProjectFileUtils::SaveProjectGraphicsSettings( m_projectRoot.string(), savedDescriptor)); @@ -88,7 +88,7 @@ TEST_F( EXPECT_EQ(nativeDescriptor.namespaceName, "Gameplay"); EXPECT_EQ( nativeDescriptor.className, - "ManagedForwardRenderPipelineProbeAsset"); + "ManagedUniversalRenderPipelineProbeAsset"); EXPECT_EQ(nativeDescriptor.managedAssetHandle, 0u); } @@ -98,7 +98,7 @@ TEST_F( ::XCEngine::Rendering::Pipelines::ManagedRenderPipelineAssetDescriptor nativeDescriptor = {}; nativeDescriptor.assemblyName = "GameScripts"; - nativeDescriptor.className = "ManagedForwardRenderPipelineProbeAsset"; + nativeDescriptor.className = "ManagedUniversalRenderPipelineProbeAsset"; nativeDescriptor.managedAssetHandle = 99u; m_state.SetConfiguredRenderPipelineAssetDescriptor(nativeDescriptor); diff --git a/tests/scripting/test_mono_script_runtime.cpp b/tests/scripting/test_mono_script_runtime.cpp index 34f63e4b..146004af 100644 --- a/tests/scripting/test_mono_script_runtime.cpp +++ b/tests/scripting/test_mono_script_runtime.cpp @@ -248,8 +248,8 @@ TEST_F( classes.end(), ScriptClassDescriptor{ "XCEngine.RenderPipelines.Universal", - "XCEngine.Rendering.FirstParty", - "ForwardRenderPipelineAsset"}), + "XCEngine.Rendering.Universal", + "UniversalRenderPipelineAsset"}), classes.end()); EXPECT_NE( std::find( @@ -276,7 +276,7 @@ TEST_F( ScriptClassDescriptor{ "GameScripts", "Gameplay", - "ManagedForwardRenderPipelineProbeAsset"}), + "ManagedUniversalRenderPipelineProbeAsset"}), classes.end()); EXPECT_EQ( std::find( @@ -428,16 +428,16 @@ TEST_F(MonoScriptRuntimeTest, ManagedGraphicsSettingsRoundTripsRenderPipelineAss TEST_F( MonoScriptRuntimeTest, - ManagedGraphicsSettingsRoundTripsScriptCoreForwardRenderPipelineAssetSelection) { + ManagedGraphicsSettingsRoundTripsScriptCoreUniversalRenderPipelineAssetSelection) { Scene* runtimeScene = - CreateScene("ScriptCoreForwardRenderPipelineSelectionScene"); + CreateScene("ScriptCoreUniversalRenderPipelineSelectionScene"); GameObject* scriptObject = - runtimeScene->CreateGameObject("ScriptCoreForwardRenderPipelineProbe"); + runtimeScene->CreateGameObject("ScriptCoreUniversalRenderPipelineProbe"); ScriptComponent* script = AddScript( scriptObject, "Gameplay", - "ScriptCoreForwardRenderPipelineSelectionProbe"); + "ScriptCoreUniversalRenderPipelineSelectionProbe"); ASSERT_NE(script, nullptr); engine->OnRuntimeStart(runtimeScene); @@ -446,8 +446,8 @@ TEST_F( const XCEngine::Rendering::Pipelines::ManagedRenderPipelineAssetDescriptor descriptor = XCEngine::Rendering::Pipelines::GetConfiguredManagedRenderPipelineAssetDescriptor(); EXPECT_EQ(descriptor.assemblyName, "XCEngine.RenderPipelines.Universal"); - EXPECT_EQ(descriptor.namespaceName, "XCEngine.Rendering.FirstParty"); - EXPECT_EQ(descriptor.className, "ForwardRenderPipelineAsset"); + EXPECT_EQ(descriptor.namespaceName, "XCEngine.Rendering.Universal"); + EXPECT_EQ(descriptor.className, "UniversalRenderPipelineAsset"); EXPECT_NE(descriptor.managedAssetHandle, 0u); bool selectionRoundTripSucceeded = false; @@ -464,14 +464,14 @@ TEST_F( selectedPipelineAssetTypeName)); EXPECT_EQ( selectedPipelineAssetTypeName, - "XCEngine.Rendering.FirstParty.ForwardRenderPipelineAsset"); + "XCEngine.Rendering.Universal.UniversalRenderPipelineAsset"); EXPECT_TRUE(runtime->TryGetFieldValue( script, "SelectedRendererDataTypeName", selectedRendererDataTypeName)); EXPECT_EQ( selectedRendererDataTypeName, - "XCEngine.Rendering.FirstParty.ForwardRendererData"); + "XCEngine.Rendering.Universal.UniversalRendererData"); } TEST_F( @@ -759,16 +759,16 @@ TEST_F( TEST_F( MonoScriptRuntimeTest, - DefaultCameraRendererUsesScriptCoreForwardPipelineAssetAndRespectsRendererData) { + DefaultCameraRendererUsesScriptCoreUniversalPipelineAssetAndRespectsRendererData) { Scene* runtimeScene = - CreateScene("ScriptCoreForwardRenderPipelineDefaultRendererScene"); + CreateScene("ScriptCoreUniversalRenderPipelineDefaultRendererScene"); GameObject* selectionObject = - runtimeScene->CreateGameObject("ScriptCoreForwardRenderPipelineSelection"); + runtimeScene->CreateGameObject("ScriptCoreUniversalRenderPipelineSelection"); ScriptComponent* selectionScript = AddScript( selectionObject, "Gameplay", - "ScriptCoreConfiguredForwardRenderPipelineRuntimeSelectionProbe"); + "ScriptCoreConfiguredUniversalRenderPipelineRuntimeSelectionProbe"); ASSERT_NE(selectionScript, nullptr); engine->OnRuntimeStart(runtimeScene); @@ -785,8 +785,8 @@ TEST_F( "XCEngine.RenderPipelines.Universal"); EXPECT_EQ( asset->GetDescriptor().namespaceName, - "XCEngine.Rendering.FirstParty"); - EXPECT_EQ(asset->GetDescriptor().className, "ForwardRenderPipelineAsset"); + "XCEngine.Rendering.Universal"); + EXPECT_EQ(asset->GetDescriptor().className, "UniversalRenderPipelineAsset"); auto* host = dynamic_cast( @@ -814,11 +814,11 @@ TEST_F( XCEngine::RHI::Format::D32_Float); const XCEngine::Rendering::RenderGraphTextureHandle colorTarget = graphBuilder.CreateTransientTexture( - "ScriptCoreForwardMainSceneColor", + "ScriptCoreUniversalMainSceneColor", colorDesc); const XCEngine::Rendering::RenderGraphTextureHandle depthTarget = graphBuilder.CreateTransientTexture( - "ScriptCoreForwardMainSceneDepth", + "ScriptCoreUniversalMainSceneDepth", depthDesc); const XCEngine::Rendering::RenderSceneData sceneData = {}; @@ -827,7 +827,7 @@ TEST_F( XCEngine::Rendering::RenderGraphBlackboard blackboard = {}; const XCEngine::Rendering::RenderPipelineStageRenderGraphContext graphContext = { graphBuilder, - "ScriptCoreForwardMainScene", + "ScriptCoreUniversalMainScene", XCEngine::Rendering::CameraFrameStage::MainScene, {}, sceneData, @@ -856,22 +856,22 @@ TEST_F( ASSERT_EQ(compiledGraph.GetPassCount(), 1u); EXPECT_STREQ( compiledGraph.GetPassName(0).CStr(), - "ScriptCoreForwardMainScene.Opaque"); + "ScriptCoreUniversalMainScene.Opaque"); host->GetStageRecorder()->Shutdown(); } TEST_F( MonoScriptRuntimeTest, - DefaultSceneRendererUsesManagedForwardPipelineForPlannedMainSceneAndPostProcessRender) { - Scene* runtimeScene = CreateScene("ManagedForwardRenderPipelineSceneRendererScene"); + DefaultSceneRendererUsesManagedUniversalPipelineForPlannedMainSceneAndPostProcessRender) { + Scene* runtimeScene = CreateScene("ManagedUniversalRenderPipelineSceneRendererScene"); GameObject* selectionObject = - runtimeScene->CreateGameObject("ManagedForwardRenderPipelineSelection"); + runtimeScene->CreateGameObject("ManagedUniversalRenderPipelineSelection"); ScriptComponent* selectionScript = AddScript( selectionObject, "Gameplay", - "ManagedForwardRenderPipelineRuntimeSelectionProbe"); + "ManagedUniversalRenderPipelineRuntimeSelectionProbe"); ASSERT_NE(selectionScript, nullptr); GameObject* cameraObject = runtimeScene->CreateGameObject("Camera"); @@ -913,7 +913,7 @@ TEST_F( EXPECT_EQ(pipelineAsset->GetDescriptor().namespaceName, "Gameplay"); EXPECT_EQ( pipelineAsset->GetDescriptor().className, - "ManagedForwardRenderPipelineProbeAsset"); + "ManagedUniversalRenderPipelineProbeAsset"); const std::vector plans = renderer.BuildFramePlans( @@ -987,16 +987,16 @@ TEST_F( TEST_F( MonoScriptRuntimeTest, - DefaultSceneRendererUsesScriptCoreForwardRendererFeatureForPlannedPostProcessRender) { + DefaultSceneRendererUsesScriptCoreUniversalRendererFeatureForPlannedPostProcessRender) { Scene* runtimeScene = - CreateScene("ScriptCoreForwardRendererFeatureSceneRendererScene"); + CreateScene("ScriptCoreUniversalRendererFeatureSceneRendererScene"); GameObject* selectionObject = - runtimeScene->CreateGameObject("ScriptCoreForwardRendererFeatureSelection"); + runtimeScene->CreateGameObject("ScriptCoreUniversalRendererFeatureSelection"); ScriptComponent* selectionScript = AddScript( selectionObject, "Gameplay", - "ScriptCoreForwardPostProcessRendererFeatureRuntimeSelectionProbe"); + "ScriptCoreUniversalPostProcessRendererFeatureRuntimeSelectionProbe"); ASSERT_NE(selectionScript, nullptr); GameObject* cameraObject = runtimeScene->CreateGameObject("Camera"); @@ -1037,10 +1037,10 @@ TEST_F( EXPECT_EQ( pipelineAsset->GetDescriptor().assemblyName, "XCEngine.RenderPipelines.Universal"); - EXPECT_EQ(pipelineAsset->GetDescriptor().namespaceName, "XCEngine.Rendering.FirstParty"); + EXPECT_EQ(pipelineAsset->GetDescriptor().namespaceName, "XCEngine.Rendering.Universal"); EXPECT_EQ( pipelineAsset->GetDescriptor().className, - "ForwardRenderPipelineAsset"); + "UniversalRenderPipelineAsset"); const std::vector plans = renderer.BuildFramePlans( @@ -1068,17 +1068,17 @@ TEST_F( TEST_F( MonoScriptRuntimeTest, - ScriptCoreForwardRendererFeatureConfiguresCameraRequestPolicy) { + ScriptCoreUniversalRendererFeatureConfiguresCameraRequestPolicy) { Scene* runtimeScene = - CreateScene("ScriptCoreForwardRendererFeatureCameraRequestScene"); + CreateScene("ScriptCoreUniversalRendererFeatureCameraRequestScene"); GameObject* selectionObject = - runtimeScene->CreateGameObject("ScriptCoreForwardCameraRequestSelection"); + runtimeScene->CreateGameObject("ScriptCoreUniversalCameraRequestSelection"); ScriptComponent* selectionScript = AddScript( selectionObject, "Gameplay", - "ScriptCoreForwardShadowlessRendererFeatureRuntimeSelectionProbe"); + "ScriptCoreUniversalShadowlessRendererFeatureRuntimeSelectionProbe"); ASSERT_NE(selectionScript, nullptr); GameObject* cameraObject = runtimeScene->CreateGameObject("Camera"); @@ -1115,10 +1115,10 @@ TEST_F( EXPECT_EQ( pipelineAsset->GetDescriptor().assemblyName, "XCEngine.RenderPipelines.Universal"); - EXPECT_EQ(pipelineAsset->GetDescriptor().namespaceName, "XCEngine.Rendering.FirstParty"); + EXPECT_EQ(pipelineAsset->GetDescriptor().namespaceName, "XCEngine.Rendering.Universal"); EXPECT_EQ( pipelineAsset->GetDescriptor().className, - "ForwardRenderPipelineAsset"); + "UniversalRenderPipelineAsset"); XCEngine::Rendering::CameraRenderRequest request = {}; request.scene = runtimeScene;