Files
Test/Library/PackageCache/com.unity.render-pipelines.universal@ffe395a3a1d1/Editor/Tools/MaterialUpgrader/UniversalSpeedTree9MaterialUpgrader.cs
T
2026-11-01 23:39:55 +02:00

49 lines
2.0 KiB
C#

using UnityEngine;
using UnityEngine.Rendering;
using UnityEditor.SpeedTree.Importer;
using UnityEngine.Rendering.Universal;
namespace UnityEditor.Rendering.Universal
{
class UniversalSpeedTree9Upgrader : SpeedTree9MaterialUpgrader, IBuiltInToURPMaterialUpgrader
{
internal UniversalSpeedTree9Upgrader(string oldShaderName)
{
RenameShader(oldShaderName, "Universal Render Pipeline/Nature/SpeedTree9_URP", UniversalSpeedTree9MaterialFinalizer);
RenameFloat("_TwoSided", Property.CullMode);
RenameColor("_ColorTint", "_Color");
RenameKeywordToFloat("EFFECT_HUE_VARIATION", "_HueVariationKwToggle", 1, 0);
RenameKeywordToFloat("EFFECT_SUBSURFACE", "_SubsurfaceKwToggle", 1, 0);
RenameKeywordToFloat("EFFECT_BUMP", "_NormalMapKwToggle", 1, 0);
RenameKeywordToFloat("EFFECT_BILLBOARD", "_BillboardKwToggle", 1, 0);
RenameKeywordToFloat("EFFECT_EXTRA_TEX", "EFFECT_EXTRA_TEX", 1, 0);
}
const int kMaterialUpgraderVersion = 1;
[MaterialSettingsCallbackAttribute(kMaterialUpgraderVersion)]
private static void OnAssetPostProcessDelegate(GameObject mainObject)
{
if (IsCurrentPipelineURP())
{
SpeedTree9MaterialUpgrader.PostprocessSpeedTree9Materials(mainObject, UniversalSpeedTree9MaterialFinalizer);
}
}
static private bool IsCurrentPipelineURP()
{
return GraphicsSettings.currentRenderPipeline is UniversalRenderPipelineAsset;
}
static public void UniversalSpeedTree9MaterialFinalizer(Material mat)
{
if (mat.HasFloat("_TwoSided"))
mat.SetFloat(Property.CullMode, mat.GetFloat("_TwoSided"));
Unity.Rendering.Universal.ShaderUtils.UpdateMaterial(mat,
Unity.Rendering.Universal.ShaderUtils.MaterialUpdateType.CreatedNewMaterial,
Unity.Rendering.Universal.ShaderUtils.ShaderID.SpeedTree9);
}
}
}