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.
71 lines
2.9 KiB
71 lines
2.9 KiB
using NUnit.Framework;
|
|
|
|
namespace UnityEngine.Rendering.HighDefinition.Tests
|
|
{
|
|
class VolumeSystemTests
|
|
{
|
|
private void AssertInterpolatedValues(int count, DiffusionProfileSettingsParameter compC, DiffusionProfileSettings[] profiles)
|
|
{
|
|
Assert.AreEqual(count, compC.accumulatedCount);
|
|
|
|
for (var i = 1; i < compC.accumulatedCount; i++)
|
|
{
|
|
Assert.AreEqual(profiles[i - 1], compC.value[i]);
|
|
}
|
|
|
|
for (var i = compC.accumulatedCount; i < compC.value.Length; i++)
|
|
{
|
|
Assert.IsNull(compC.value[i]);
|
|
}
|
|
}
|
|
|
|
[Test]
|
|
public void DiffusionProfileOverride_InterpAccumulation()
|
|
{
|
|
var profiles = new DiffusionProfileSettings[] {
|
|
ScriptableObject.CreateInstance<DiffusionProfileSettings>(),
|
|
ScriptableObject.CreateInstance<DiffusionProfileSettings>(),
|
|
ScriptableObject.CreateInstance<DiffusionProfileSettings>(),
|
|
ScriptableObject.CreateInstance<DiffusionProfileSettings>(),
|
|
ScriptableObject.CreateInstance<DiffusionProfileSettings>(),
|
|
ScriptableObject.CreateInstance<DiffusionProfileSettings>(),
|
|
ScriptableObject.CreateInstance<DiffusionProfileSettings>(),
|
|
ScriptableObject.CreateInstance<DiffusionProfileSettings>(),
|
|
};
|
|
|
|
var compC = new DiffusionProfileSettingsParameter(null);
|
|
var compB = new DiffusionProfileSettingsParameter(new DiffusionProfileSettings[] {
|
|
profiles[4], profiles[5], profiles[6], profiles[7], profiles[0],
|
|
});
|
|
var compA = new DiffusionProfileSettingsParameter(new DiffusionProfileSettings[] {
|
|
profiles[0], profiles[1], profiles[2], profiles[3], null,
|
|
});
|
|
|
|
// All interpolation result have the default profile as first element
|
|
|
|
// 1. Test basic interpolation + duplicate element + null
|
|
compC.Interp(compB.value, compA.value, 0.0f);
|
|
AssertInterpolatedValues(1 + 4 + 4, compC, profiles);
|
|
|
|
// 2. Test interpolation after manually setting source and dest value
|
|
compB.value = new DiffusionProfileSettings[] {
|
|
profiles[0], profiles[4],
|
|
};
|
|
compC.value = new DiffusionProfileSettings[] {
|
|
profiles[5], profiles[6], profiles[7],
|
|
};
|
|
|
|
compC.Interp(compB.value, compA.value, 0.0f);
|
|
AssertInterpolatedValues(1 + 4 + 1, compC, profiles);
|
|
|
|
// 3. Test when source is dest and is interpolation result
|
|
compC.Interp(compC.value, compC.value, 0.0f);
|
|
AssertInterpolatedValues(1 + 5, compC, profiles);
|
|
|
|
foreach (var profile in profiles)
|
|
{
|
|
ScriptableObject.DestroyImmediate(profile);
|
|
}
|
|
}
|
|
}
|
|
}
|