using XCEngine; namespace XCEngine.Rendering { public abstract class ScriptableRenderPipelineAsset : RenderPipelineAsset { private int m_runtimeResourceVersion = 1; protected ScriptableRenderPipelineAsset() { } internal void ReleaseRuntimeResourcesInstance() { ReleaseRuntimeResources(); } internal void ConfigureCameraFramePlanInstance( ScriptableRenderPipelinePlanningContext context) { ConfigureCameraFramePlan(context); } internal int GetRuntimeResourceVersionInstance() { SynchronizeRuntimeResourceVersion(); return m_runtimeResourceVersion; } protected virtual ScriptableRenderPipeline CreatePipeline() { return null; } protected virtual void ConfigureCameraRenderRequest( CameraRenderRequestContext context) { } protected virtual void ConfigureCameraFramePlan( ScriptableRenderPipelinePlanningContext context) { } protected virtual FinalColorSettings GetDefaultFinalColorSettings() { return FinalColorSettings.CreateDefault(); } protected virtual string GetPipelineRendererAssetKey() { return string.Empty; } protected virtual string GetPipelineRendererAssetKeyContextual( int rendererIndex) { return GetPipelineRendererAssetKey(); } protected virtual bool UsesNativeCameraFramePlanBaseline() { return false; } protected virtual bool UsesNativeCameraFramePlanBaselineContextual( int rendererIndex) { return UsesNativeCameraFramePlanBaseline(); } protected virtual string GetRenderSceneSetupPolicyAssetKey() { return string.Empty; } protected virtual string GetRenderSceneSetupPolicyAssetKeyContextual( int rendererIndex) { return GetRenderSceneSetupPolicyAssetKey(); } protected virtual string GetCameraFrameStandalonePassAssetKey( CameraFrameStage stage) { return string.Empty; } protected virtual string GetCameraFrameStandalonePassAssetKeyContextual( CameraFrameStage stage, int rendererIndex) { return GetCameraFrameStandalonePassAssetKey( stage); } protected virtual string GetDirectionalShadowPlanningPolicyAssetKey() { return string.Empty; } protected virtual string GetDirectionalShadowExecutionPolicyAssetKey() { return string.Empty; } protected virtual string GetDirectionalShadowExecutionPolicyAssetKeyContextual( int rendererIndex) { return GetDirectionalShadowExecutionPolicyAssetKey(); } protected virtual void ReleaseRuntimeResources() { } protected virtual void SynchronizeRuntimeResourceVersion() { } protected void SetDirty() { ReleaseRuntimeResources(); unchecked { ++m_runtimeResourceVersion; } if (m_runtimeResourceVersion <= 0) { m_runtimeResourceVersion = 1; } } } }