Files
2026-11-01 23:39:55 +02:00

83 lines
2.7 KiB
C#

using System.Collections.Generic;
using UnityEngine;
using UnityEngine.Rendering;
using UnityEngine.Rendering.Universal;
namespace UnityEditor.Rendering.Universal
{
internal interface IBuiltInToURP2dMaterialUpgrader
{
}
[SupportedOnRenderPipeline(typeof(UniversalRenderPipelineAsset))]
class BuiltInToURP2DMaterialUpgraderProvider : IMaterialUpgradersProvider
{
public IEnumerable<MaterialUpgrader> GetUpgraders()
{
yield return new SpritesDefaultUpgrader("Sprites-Default");
yield return new SpritesDefaultUpgrader("Sprites-Mask");
yield return new DefaultMaterialUpgrader();
}
}
class DefaultMaterialUpgrader : MaterialUpgrader, IBuiltInToURP2dMaterialUpgrader
{
public DefaultMaterialUpgrader()
{
RenameShader("Standard", "Universal Render Pipeline/2D/Mesh2D-Lit-Default");
}
}
class SpritesDefaultUpgrader : MaterialUpgrader, IBuiltInToURP2dMaterialUpgrader
{
public SpritesDefaultUpgrader(string shaderName)
{
if (shaderName.Equals("Sprites-Default"))
{
Shader newShader = null;
Renderer2DData data = Light2DEditorUtility.GetRenderer2DData();
if (data != null)
newShader = data.GetDefaultMaterial(UnityEngine.Rendering.Universal.DefaultMaterialType.Sprite).shader;
else
newShader = Shader.Find("Universal Render Pipeline/2D/Sprite-Lit-Default");
RenameShader("Sprites/Diffuse", newShader.name);
}
else if (shaderName.Equals("Sprites-Mask"))
{
RenameShader("Sprites/Mask", "Universal Render Pipeline/2D/Sprite-Mask");
}
}
}
internal interface IURP3DToURP2dMaterialUpgrader
{
}
[SupportedOnRenderPipeline(typeof(UniversalRenderPipelineAsset))]
class URP3DToURP2DMaterialUpgraderProvider : IMaterialUpgradersProvider
{
public IEnumerable<MaterialUpgrader> GetUpgraders()
{
yield return new LitMaterialUpgrader();
yield return new SimpleLitMaterialUpgrader();
}
}
class LitMaterialUpgrader : MaterialUpgrader, IURP3DToURP2dMaterialUpgrader
{
public LitMaterialUpgrader()
{
RenameShader("Universal Render Pipeline/Lit", "Universal Render Pipeline/2D/Mesh2D-Lit-Default");
}
}
class SimpleLitMaterialUpgrader : MaterialUpgrader, IURP3DToURP2dMaterialUpgrader
{
public SimpleLitMaterialUpgrader()
{
RenameShader("Universal Render Pipeline/Simple Lit", "Universal Render Pipeline/2D/Mesh2D-Lit-Default");
}
}
}