Lock URP runtime invalidation to asset and renderer data state
This commit is contained in:
@@ -2228,6 +2228,77 @@ namespace Gameplay
|
||||
}
|
||||
}
|
||||
|
||||
internal sealed class ManagedUniversalConfigInvalidationProbeAsset
|
||||
: UniversalRenderPipelineAsset
|
||||
{
|
||||
private readonly UniversalRendererData m_rendererData;
|
||||
|
||||
public ManagedUniversalConfigInvalidationProbeAsset()
|
||||
{
|
||||
m_rendererData =
|
||||
ProbeScriptableObjectFactory
|
||||
.Create<UniversalRendererData>();
|
||||
rendererDataList =
|
||||
ProbeScriptableObjectFactory
|
||||
.CreateRendererDataList(
|
||||
m_rendererData);
|
||||
shadows =
|
||||
UniversalShadowSettings.CreateDefault();
|
||||
finalColor =
|
||||
UniversalFinalColorSettings.CreateDefault();
|
||||
}
|
||||
|
||||
public void MutateRendererDataForTest()
|
||||
{
|
||||
if (m_rendererData == null)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
if (m_rendererData.mainScene == null)
|
||||
{
|
||||
m_rendererData.mainScene =
|
||||
UniversalMainSceneData.CreateDefault();
|
||||
}
|
||||
|
||||
m_rendererData.mainScene.renderOpaque =
|
||||
!m_rendererData.mainScene.renderOpaque;
|
||||
m_rendererData.mainScene.opaquePassEvent =
|
||||
RenderPassEvent.AfterRenderingOpaques;
|
||||
|
||||
if (m_rendererData.depthPrepass == null)
|
||||
{
|
||||
m_rendererData.depthPrepass =
|
||||
DepthPrepassBlockData.CreateDefault();
|
||||
}
|
||||
|
||||
m_rendererData.depthPrepass.enabled =
|
||||
!m_rendererData.depthPrepass.enabled;
|
||||
}
|
||||
|
||||
public void MutateAssetSettingsForTest()
|
||||
{
|
||||
if (shadows == null)
|
||||
{
|
||||
shadows =
|
||||
UniversalShadowSettings.CreateDefault();
|
||||
}
|
||||
|
||||
shadows.supportsMainLightShadows =
|
||||
!shadows.supportsMainLightShadows;
|
||||
shadows.mainLightPlanningSettings.mapDimension = 1024u;
|
||||
|
||||
if (finalColor == null)
|
||||
{
|
||||
finalColor =
|
||||
UniversalFinalColorSettings.CreateDefault();
|
||||
}
|
||||
|
||||
finalColor.settings.finalColorScale =
|
||||
new Vector4(0.75f, 0.80f, 0.85f, 1.0f);
|
||||
}
|
||||
}
|
||||
|
||||
public sealed class ManagedFeaturePassOrderProbeAsset
|
||||
: UniversalRenderPipelineAsset
|
||||
{
|
||||
@@ -2940,6 +3011,58 @@ namespace Gameplay
|
||||
}
|
||||
}
|
||||
|
||||
public sealed class ManagedUniversalConfigInvalidationRuntimeSelectionProbe
|
||||
: MonoBehaviour
|
||||
{
|
||||
public void Start()
|
||||
{
|
||||
GraphicsSettings.renderPipelineAsset =
|
||||
ProbeScriptableObjectFactory
|
||||
.Create<ManagedUniversalConfigInvalidationProbeAsset>();
|
||||
}
|
||||
}
|
||||
|
||||
public sealed class ManagedUniversalConfigInvalidationObservationProbe
|
||||
: MonoBehaviour
|
||||
{
|
||||
public int ObservedRuntimeResourceVersionBeforeMutation;
|
||||
public int ObservedRuntimeResourceVersionAfterRendererDataMutation;
|
||||
public int ObservedRuntimeResourceVersionAfterAssetSettingsMutation;
|
||||
public bool ObservedMutationRan;
|
||||
|
||||
public void Update()
|
||||
{
|
||||
if (ObservedMutationRan)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
ManagedUniversalConfigInvalidationProbeAsset selectedAsset =
|
||||
GraphicsSettings.renderPipelineAsset
|
||||
as ManagedUniversalConfigInvalidationProbeAsset;
|
||||
if (selectedAsset == null)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
ObservedRuntimeResourceVersionBeforeMutation =
|
||||
ProbeRuntimeVersionUtility
|
||||
.GetRuntimeResourceVersion(
|
||||
selectedAsset);
|
||||
selectedAsset.MutateRendererDataForTest();
|
||||
ObservedRuntimeResourceVersionAfterRendererDataMutation =
|
||||
ProbeRuntimeVersionUtility
|
||||
.GetRuntimeResourceVersion(
|
||||
selectedAsset);
|
||||
selectedAsset.MutateAssetSettingsForTest();
|
||||
ObservedRuntimeResourceVersionAfterAssetSettingsMutation =
|
||||
ProbeRuntimeVersionUtility
|
||||
.GetRuntimeResourceVersion(
|
||||
selectedAsset);
|
||||
ObservedMutationRan = true;
|
||||
}
|
||||
}
|
||||
|
||||
public sealed class ManagedFeaturePassOrderRuntimeSelectionProbe
|
||||
: MonoBehaviour
|
||||
{
|
||||
|
||||
Reference in New Issue
Block a user