您最多选择25个主题 主题必须以中文或者字母或数字开头,可以包含连字符 (-),并且长度不得超过35个字符

48 行
1.6 KiB

using UnityEngine;
namespace VRMShaders.VRM10.MToon10.Runtime
{
/// <summary>
/// Migrate from VRM 0.x MToon to VRM 1.0 vrmc_materials_mtoon
/// </summary>
public static class MToon10Migrator
{
/// <summary>
/// mtoon.shadingToonyFactor
/// </summary>
public static float MigrateToShadingToony(float shadingToony0X, float shadingShift0X)
{
var (rangeMin, rangeMax) = GetShadingRange0X(shadingToony0X, shadingShift0X);
// new shadingToony is the margin of range.
return Mathf.Clamp((2.0f - (rangeMax - rangeMin)) * 0.5f, 0, 1);
}
/// <summary>
/// mtoon.shadingShiftFactor
/// </summary>
public static float MigrateToShadingShift(float shadingToony0X, float shadingShift0X)
{
var (rangeMin, rangeMax) = GetShadingRange0X(shadingToony0X, shadingShift0X);
// new shadingShift is the center of range inverted.
return Mathf.Clamp((rangeMax + rangeMin) * 0.5f * -1f, -1, +1);
}
/// <summary>
/// mtoon.giEqualizationFactor
/// </summary>
public static float MigrateToGiEqualization(float giIntensity0X)
{
return Mathf.Clamp01(1 - giIntensity0X);
}
private static (float min, float max) GetShadingRange0X(float shadingToony0X, float shadingShift0X)
{
var rangeMin = shadingShift0X;
var rangeMax = Mathf.Lerp(1, shadingShift0X, shadingToony0X);
return (rangeMin, rangeMax);
}
}
}