90 lines
4.9 KiB
C#
90 lines
4.9 KiB
C#
using System;
|
|
using UnityEngine.Serialization;
|
|
|
|
namespace UnityEngine.Rendering.HighDefinition
|
|
{
|
|
public sealed partial class PlanarReflectionProbe : IVersionable<PlanarReflectionProbe.PlanarProbeVersion>
|
|
{
|
|
enum PlanarProbeVersion
|
|
{
|
|
Initial,
|
|
First = 2,
|
|
CaptureSettings,
|
|
ProbeSettings,
|
|
SeparatePassThrough,
|
|
UpgradeFrameSettingsToStruct,
|
|
PlanarResolutionScalability
|
|
}
|
|
|
|
[SerializeField, FormerlySerializedAs("version"), FormerlySerializedAs("m_Version")]
|
|
int m_PlanarProbeVersion;
|
|
PlanarProbeVersion IVersionable<PlanarProbeVersion>.version { get => (PlanarProbeVersion)m_PlanarProbeVersion; set => m_PlanarProbeVersion = (int)value; }
|
|
|
|
static readonly MigrationDescription<PlanarProbeVersion, PlanarReflectionProbe> k_PlanarProbeMigration = MigrationDescription.New(
|
|
MigrationStep.New(PlanarProbeVersion.CaptureSettings, (PlanarReflectionProbe p) =>
|
|
{
|
|
#pragma warning disable 618, 612
|
|
if (p.m_ObsoleteCaptureSettings == null)
|
|
p.m_ObsoleteCaptureSettings = new ObsoleteCaptureSettings();
|
|
if (p.m_ObsoleteOverrideFieldOfView)
|
|
p.m_ObsoleteCaptureSettings.overrides |= ObsoleteCaptureSettingsOverrides.FieldOfview;
|
|
p.m_ObsoleteCaptureSettings.fieldOfView = p.m_ObsoleteFieldOfViewOverride;
|
|
p.m_ObsoleteCaptureSettings.nearClipPlane = p.m_ObsoleteCaptureNearPlane;
|
|
p.m_ObsoleteCaptureSettings.farClipPlane = p.m_ObsoleteCaptureFarPlane;
|
|
#pragma warning restore 618, 612
|
|
}),
|
|
MigrationStep.New(PlanarProbeVersion.ProbeSettings, (PlanarReflectionProbe p) =>
|
|
{
|
|
k_Migration.ExecuteStep(p, Version.ProbeSettings);
|
|
|
|
// Migrate mirror position
|
|
// Previously, the mirror as at the influence position and face the Y axis.
|
|
// Now, the mirror is defined in proxy space and faces the Z axis.
|
|
|
|
var mirrorPositionWS = p.transform.position;
|
|
// set the transform position to the influence position world space
|
|
#pragma warning disable 618
|
|
var mat = Matrix4x4.TRS(p.transform.position, p.transform.rotation, Vector3.one);
|
|
p.transform.position = mat.MultiplyPoint(p.influenceVolume.obsoleteOffset);
|
|
#pragma warning restore 618
|
|
var mirrorRotationWS = p.transform.rotation * Quaternion.Euler(-90, 0, 0);
|
|
var worldToProxy = p.proxyToWorld.inverse;
|
|
var mirrorPositionPS = worldToProxy.MultiplyPoint(mirrorPositionWS);
|
|
var mirrorRotationPS = worldToProxy.rotation * mirrorRotationWS;
|
|
p.m_ProbeSettings.proxySettings.mirrorPositionProxySpace = mirrorPositionPS;
|
|
p.m_ProbeSettings.proxySettings.mirrorRotationProxySpace = mirrorRotationPS;
|
|
p.m_LocalReferencePosition = Quaternion.Euler(-90, 0, 0) * -p.m_LocalReferencePosition;
|
|
}),
|
|
MigrationStep.New(PlanarProbeVersion.SeparatePassThrough, (PlanarReflectionProbe t) => k_Migration.ExecuteStep(t, Version.SeparatePassThrough)),
|
|
MigrationStep.New(PlanarProbeVersion.UpgradeFrameSettingsToStruct, (PlanarReflectionProbe t) => k_Migration.ExecuteStep(t, Version.UpgradeFrameSettingsToStruct)),
|
|
MigrationStep.New(PlanarProbeVersion.PlanarResolutionScalability, (PlanarReflectionProbe p) =>
|
|
{
|
|
k_Migration.ExecuteStep(p, Version.PlanarResolutionScalability);
|
|
// Previously, we would only specify the value directly on the probe (so we set use override to true)
|
|
p.m_ProbeSettings.resolutionScalable.useOverride = true;
|
|
if (p.m_ProbeSettings.resolution != 0)
|
|
{
|
|
p.m_ProbeSettings.resolutionScalable.@override = p.m_ProbeSettings.resolution;
|
|
}
|
|
else
|
|
{
|
|
p.m_ProbeSettings.resolutionScalable.@override = PlanarReflectionAtlasResolution.Resolution512;
|
|
}
|
|
})
|
|
);
|
|
|
|
// Obsolete Properties
|
|
#pragma warning disable 649
|
|
[SerializeField, FormerlySerializedAs("m_CaptureNearPlane"), Obsolete("For data migration")]
|
|
float m_ObsoleteCaptureNearPlane = ObsoleteCaptureSettings.@default.nearClipPlane;
|
|
[SerializeField, FormerlySerializedAs("m_CaptureFarPlane"), Obsolete("For data migration")]
|
|
float m_ObsoleteCaptureFarPlane = ObsoleteCaptureSettings.@default.farClipPlane;
|
|
|
|
[SerializeField, FormerlySerializedAs("m_OverrideFieldOfView"), Obsolete("For data migration")]
|
|
bool m_ObsoleteOverrideFieldOfView;
|
|
[SerializeField, FormerlySerializedAs("m_FieldOfViewOverride"), Obsolete("For data migration")]
|
|
float m_ObsoleteFieldOfViewOverride = ObsoleteCaptureSettings.@default.fieldOfView;
|
|
#pragma warning restore 649
|
|
}
|
|
}
|