160 lines
7.8 KiB
C#
160 lines
7.8 KiB
C#
using System.Reflection;
|
|
using XCEngine;
|
|
using XCEngine.Rendering;
|
|
using XCEngine.Rendering.Universal;
|
|
|
|
namespace Gameplay
|
|
{
|
|
public sealed class ScriptableRenderContextApiSurfaceProbe
|
|
: MonoBehaviour
|
|
{
|
|
public bool HasPublicContextRecordScene;
|
|
public bool HasPublicContextRecordOpaqueScenePhase;
|
|
public bool HasPublicContextRecordBeforeOpaqueInjection;
|
|
public bool HasPublicContextRecordShaderVectorFullscreenPass;
|
|
public bool HasPublicContextCameraData;
|
|
public bool HasPublicContextLightingData;
|
|
public bool HasPublicContextShadowData;
|
|
public bool HasPublicContextEnvironmentData;
|
|
public bool HasPublicContextFinalColorData;
|
|
public bool HasPublicContextStageColorData;
|
|
public bool HasPublicRequestContextHasDirectionalShadow;
|
|
public bool HasPublicRequestContextClearDirectionalShadow;
|
|
public bool HasUniversalContextRecordSceneExtension;
|
|
public bool HasUniversalContextRecordOpaqueScenePhaseExtension;
|
|
public bool HasUniversalContextRecordBeforeOpaqueInjectionExtension;
|
|
public bool HasUniversalContextRecordShaderVectorFullscreenPassExtension;
|
|
public bool HasUniversalRequestContextHasDirectionalShadowExtension;
|
|
public bool HasUniversalRequestContextClearDirectionalShadowExtension;
|
|
public bool HasPublicPipelineAssetConfigureCameraFramePlan;
|
|
public bool HasPlanningContextType;
|
|
public bool HasRendererFeatureConfigureCameraFramePlan;
|
|
public bool HasRendererRecordingContextType;
|
|
public bool HasRendererCameraRequestContextType;
|
|
|
|
public void Start()
|
|
{
|
|
const BindingFlags PublicInstanceMethodFlags =
|
|
BindingFlags.Instance | BindingFlags.Public;
|
|
System.Type contextType =
|
|
typeof(ScriptableRenderContext);
|
|
System.Type requestContextType =
|
|
typeof(CameraRenderRequestContext);
|
|
System.Type pipelineAssetType =
|
|
typeof(ScriptableRenderPipelineAsset);
|
|
System.Type rendererFeatureType =
|
|
typeof(ScriptableRendererFeature);
|
|
System.Type universalAssemblyType =
|
|
typeof(ScriptableRendererFeature);
|
|
System.Reflection.Assembly universalAssembly =
|
|
universalAssemblyType.Assembly;
|
|
System.Type renderContextExtensionsType =
|
|
universalAssembly.GetType(
|
|
"XCEngine.Rendering.Universal.ScriptableRenderContextExtensions");
|
|
System.Type requestContextExtensionsType =
|
|
universalAssembly.GetType(
|
|
"XCEngine.Rendering.Universal.CameraRenderRequestContextExtensions");
|
|
|
|
HasPublicContextRecordScene =
|
|
contextType.GetMethod(
|
|
"RecordScene",
|
|
PublicInstanceMethodFlags) != null;
|
|
HasPublicContextRecordOpaqueScenePhase =
|
|
contextType.GetMethod(
|
|
"RecordOpaqueScenePhase",
|
|
PublicInstanceMethodFlags) != null;
|
|
HasPublicContextRecordBeforeOpaqueInjection =
|
|
contextType.GetMethod(
|
|
"RecordBeforeOpaqueInjection",
|
|
PublicInstanceMethodFlags) != null;
|
|
HasPublicContextRecordShaderVectorFullscreenPass =
|
|
contextType.GetMethod(
|
|
"RecordShaderVectorFullscreenPass",
|
|
PublicInstanceMethodFlags) != null;
|
|
HasPublicContextCameraData =
|
|
contextType.GetProperty(
|
|
"cameraData",
|
|
PublicInstanceMethodFlags) != null;
|
|
HasPublicContextLightingData =
|
|
contextType.GetProperty(
|
|
"lightingData",
|
|
PublicInstanceMethodFlags) != null;
|
|
HasPublicContextShadowData =
|
|
contextType.GetProperty(
|
|
"shadowData",
|
|
PublicInstanceMethodFlags) != null;
|
|
HasPublicContextEnvironmentData =
|
|
contextType.GetProperty(
|
|
"environmentData",
|
|
PublicInstanceMethodFlags) != null;
|
|
HasPublicContextFinalColorData =
|
|
contextType.GetProperty(
|
|
"finalColorData",
|
|
PublicInstanceMethodFlags) != null;
|
|
HasPublicContextStageColorData =
|
|
contextType.GetProperty(
|
|
"stageColorData",
|
|
PublicInstanceMethodFlags) != null;
|
|
HasPublicRequestContextHasDirectionalShadow =
|
|
requestContextType.GetProperty(
|
|
"hasDirectionalShadow",
|
|
PublicInstanceMethodFlags) != null;
|
|
HasPublicRequestContextClearDirectionalShadow =
|
|
requestContextType.GetMethod(
|
|
"ClearDirectionalShadow",
|
|
PublicInstanceMethodFlags) != null;
|
|
HasUniversalContextRecordSceneExtension =
|
|
renderContextExtensionsType != null &&
|
|
renderContextExtensionsType.GetMethod(
|
|
"RecordScene",
|
|
BindingFlags.Static | BindingFlags.Public) != null;
|
|
HasUniversalContextRecordOpaqueScenePhaseExtension =
|
|
renderContextExtensionsType != null &&
|
|
renderContextExtensionsType.GetMethod(
|
|
"RecordOpaqueScenePhase",
|
|
BindingFlags.Static | BindingFlags.Public) != null;
|
|
HasUniversalContextRecordBeforeOpaqueInjectionExtension =
|
|
renderContextExtensionsType != null &&
|
|
renderContextExtensionsType.GetMethod(
|
|
"RecordBeforeOpaqueInjection",
|
|
BindingFlags.Static | BindingFlags.Public) != null;
|
|
HasUniversalContextRecordShaderVectorFullscreenPassExtension =
|
|
renderContextExtensionsType != null &&
|
|
renderContextExtensionsType.GetMethod(
|
|
"RecordShaderVectorFullscreenPass",
|
|
BindingFlags.Static | BindingFlags.Public) != null;
|
|
HasUniversalRequestContextHasDirectionalShadowExtension =
|
|
requestContextExtensionsType != null &&
|
|
requestContextExtensionsType.GetMethod(
|
|
"HasDirectionalShadow",
|
|
BindingFlags.Static | BindingFlags.Public) != null;
|
|
HasUniversalRequestContextClearDirectionalShadowExtension =
|
|
requestContextExtensionsType != null &&
|
|
requestContextExtensionsType.GetMethod(
|
|
"ClearDirectionalShadow",
|
|
BindingFlags.Static | BindingFlags.Public) != null;
|
|
HasPublicPipelineAssetConfigureCameraFramePlan =
|
|
pipelineAssetType.GetMethod(
|
|
"ConfigureCameraFramePlan",
|
|
BindingFlags.Instance |
|
|
BindingFlags.Public |
|
|
BindingFlags.NonPublic) != null;
|
|
HasPlanningContextType =
|
|
contextType.Assembly.GetType(
|
|
"XCEngine.Rendering.ScriptableRenderPipelinePlanningContext") != null;
|
|
HasRendererFeatureConfigureCameraFramePlan =
|
|
rendererFeatureType.GetMethod(
|
|
"ConfigureCameraFramePlan",
|
|
BindingFlags.Instance |
|
|
BindingFlags.Public |
|
|
BindingFlags.NonPublic) != null;
|
|
HasRendererRecordingContextType =
|
|
System.Type.GetType(
|
|
"XCEngine.Rendering.Universal.RendererRecordingContext, XCEngine.RenderPipelines.Universal") != null;
|
|
HasRendererCameraRequestContextType =
|
|
System.Type.GetType(
|
|
"XCEngine.Rendering.Universal.RendererCameraRequestContext, XCEngine.RenderPipelines.Universal") != null;
|
|
}
|
|
}
|
|
}
|