You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
64 lines
2.7 KiB
64 lines
2.7 KiB
using System;
|
|
|
|
namespace UnityEngine.Rendering.HighDefinition
|
|
{
|
|
public partial struct LocalVolumetricFogArtistParameters
|
|
{
|
|
internal void MigrateToFixUniformBlendDistanceToBeMetric()
|
|
{
|
|
//Note: At this revision, advanceMode boolean is obsolete and unusable anymore
|
|
if (!m_EditorAdvancedFade)
|
|
{
|
|
//Replicate old editor behavior of normal mode to keep scene intact
|
|
m_EditorAdvancedFade = true;
|
|
negativeFade = positiveFade = m_EditorUniformFade * Vector3.one;
|
|
m_EditorUniformFade = 0f;
|
|
}
|
|
|
|
//feed new variable to handle editor values
|
|
m_EditorPositiveFade = positiveFade;
|
|
m_EditorNegativeFade = negativeFade;
|
|
}
|
|
}
|
|
|
|
public partial class LocalVolumetricFog : IVersionable<LocalVolumetricFog.Version>
|
|
{
|
|
enum Version
|
|
{
|
|
First,
|
|
ScaleIndependent,
|
|
FixUniformBlendDistanceToBeMetric,
|
|
ExposeMaterialBlendMode,
|
|
}
|
|
|
|
static readonly MigrationDescription<Version, LocalVolumetricFog> k_Migration = MigrationDescription.New(
|
|
MigrationStep.New(Version.ScaleIndependent, (LocalVolumetricFog data) =>
|
|
{
|
|
data.parameters.size = data.transform.lossyScale;
|
|
|
|
//missing migrated data.
|
|
//when migrated prior to this fix, Local Volumetric Fog have to be manually set on advance mode.
|
|
data.parameters.m_EditorAdvancedFade = true;
|
|
}),
|
|
MigrationStep.New(Version.FixUniformBlendDistanceToBeMetric, (LocalVolumetricFog data) => data.parameters.MigrateToFixUniformBlendDistanceToBeMetric()),
|
|
MigrationStep.New(Version.ExposeMaterialBlendMode, (LocalVolumetricFog data) =>
|
|
{
|
|
if (data.parameters.maskMode == LocalVolumetricFogMaskMode.Material)
|
|
{
|
|
if (data.parameters.materialMask != null)
|
|
{
|
|
data.parameters.materialMask.SetColor(FogVolumeAPI.k_SingleScatteringAlbedoProperty, data.parameters.albedo);
|
|
data.parameters.materialMask.SetFloat(FogVolumeAPI.k_FogDistanceProperty, data.parameters.meanFreePath);
|
|
FogVolumeAPI.SetupFogVolumeBlendMode(data.parameters.materialMask, data.parameters.blendingMode);
|
|
}
|
|
}
|
|
})
|
|
);
|
|
|
|
[SerializeField]
|
|
Version m_Version = MigrationDescription.LastVersion<Version>();
|
|
Version IVersionable<Version>.version { get => m_Version; set => m_Version = value; }
|
|
|
|
void Awake() => k_Migration.Migrate(this);
|
|
}
|
|
}
|