feat(srp): add managed camera frame planning seam
Expose native camera frame planning controls to managed pipeline assets and renderer features. Allow managed planning to override fullscreen stage heuristics while keeping CameraFramePlan as the native execution contract. Add scripting coverage, probe assets, and archive the phase plan after build, test, and editor smoke validation.
This commit is contained in:
@@ -12,6 +12,7 @@ namespace Rendering {
|
||||
struct CameraFrameFullscreenStagePlan {
|
||||
bool requested = false;
|
||||
bool usesGraphManagedOutputColor = false;
|
||||
bool explicitlyConfigured = false;
|
||||
CameraFrameColorSource source = CameraFrameColorSource::ExplicitSurface;
|
||||
};
|
||||
|
||||
@@ -58,8 +59,13 @@ struct CameraFramePlan {
|
||||
bool RequestFullscreenStage(
|
||||
CameraFrameStage stage,
|
||||
CameraFrameColorSource source,
|
||||
bool usesGraphManagedOutputColor = false);
|
||||
void ClearFullscreenStage(CameraFrameStage stage);
|
||||
bool usesGraphManagedOutputColor = false,
|
||||
bool explicitlyConfigured = false);
|
||||
void ClearFullscreenStage(
|
||||
CameraFrameStage stage,
|
||||
bool explicitlyConfigured = false);
|
||||
bool HasExplicitFullscreenStageConfiguration(
|
||||
CameraFrameStage stage) const;
|
||||
bool IsPostProcessStageValid() const;
|
||||
bool IsFinalOutputStageValid() const;
|
||||
bool HasFrameStage(CameraFrameStage stage) const;
|
||||
|
||||
@@ -10,6 +10,7 @@
|
||||
namespace XCEngine {
|
||||
namespace Rendering {
|
||||
|
||||
struct CameraFramePlan;
|
||||
struct CameraRenderRequest;
|
||||
struct DirectionalShadowPlanningSettings;
|
||||
|
||||
@@ -52,6 +53,7 @@ public:
|
||||
size_t renderedRequestCount,
|
||||
const DirectionalShadowPlanningSettings& directionalShadowSettings)
|
||||
const override;
|
||||
void ConfigureCameraFramePlan(CameraFramePlan& plan) const override;
|
||||
FinalColorSettings GetDefaultFinalColorSettings() const override;
|
||||
|
||||
private:
|
||||
@@ -82,6 +84,8 @@ public:
|
||||
size_t,
|
||||
const DirectionalShadowPlanningSettings&) const {
|
||||
}
|
||||
virtual void ConfigureCameraFramePlan(CameraFramePlan&) const {
|
||||
}
|
||||
|
||||
virtual std::shared_ptr<const RenderPipelineAsset>
|
||||
GetPipelineRendererAsset() const {
|
||||
|
||||
@@ -266,6 +266,8 @@ private:
|
||||
MonoObject* CreateManagedScriptableRenderContext(uint64_t nativeHandle);
|
||||
MonoObject* CreateManagedCameraRenderRequestContext(
|
||||
uint64_t nativeHandle);
|
||||
MonoObject* CreateManagedScriptableRenderPipelinePlanningContext(
|
||||
uint64_t nativeHandle);
|
||||
MonoObject* GetManagedObject(uint32_t gcHandle) const;
|
||||
MonoMethod* ResolveManagedMethod(
|
||||
MonoClass* monoClass,
|
||||
@@ -306,11 +308,14 @@ private:
|
||||
MonoClass* m_scriptableRenderPipelineClass = nullptr;
|
||||
MonoClass* m_scriptableRenderContextClass = nullptr;
|
||||
MonoClass* m_cameraRenderRequestContextClass = nullptr;
|
||||
MonoClass* m_scriptableRenderPipelinePlanningContextClass = nullptr;
|
||||
MonoClass* m_serializeFieldAttributeClass = nullptr;
|
||||
MonoMethod* m_gameObjectConstructor = nullptr;
|
||||
MonoMethod* m_scriptableRenderContextConstructor = nullptr;
|
||||
MonoMethod* m_cameraRenderRequestContextConstructor =
|
||||
nullptr;
|
||||
MonoMethod* m_scriptableRenderPipelinePlanningContextConstructor =
|
||||
nullptr;
|
||||
MonoClassField* m_managedGameObjectUUIDField = nullptr;
|
||||
MonoClassField* m_gameObjectUUIDField = nullptr;
|
||||
MonoClassField* m_scriptComponentUUIDField = nullptr;
|
||||
|
||||
Reference in New Issue
Block a user