49 lines
2.0 KiB
C#
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);
|
|
}
|
|
}
|
|
}
|