Files
Bombaleila/Library/PackageCache/com.unity.render-pipelines.universal@37e0d4fc2503/Tests/Runtime/TerrainShaderTests.cs
2026-03-03 00:39:30 +05:00

62 lines
2.8 KiB
C#

using NUnit.Framework;
using System;
namespace UnityEngine.Rendering.Universal.Tests
{
/// <summary>
/// Tests for terrain shaders in the Universal Render Pipeline.
/// Verifies that terrain detail shaders are available through both Shader.Find() and UniversalRenderPipelineAsset properties.
/// </summary>
class TerrainShaderTests
{
UniversalRenderPipelineAsset m_UrpAsset;
[SetUp]
public void Setup()
{
// Only run this with URP in smoke tests.
if (GraphicsSettings.currentRenderPipeline is not UniversalRenderPipelineAsset)
Assert.Ignore("URP Only test");
m_UrpAsset = GraphicsSettings.currentRenderPipeline as UniversalRenderPipelineAsset;
}
/// <summary>
/// Tests that the URP terrain detail shaders can be found using Shader.Find().
/// </summary>
[TestCaseSource(nameof(ShaderNames))]
public void TerrainShaders_ShaderFind_ReturnsValidShader(string shaderName)
{
var shader = Shader.Find(shaderName);
Assert.IsNotNull(shader, $"{shaderName} should be found via Shader.Find()");
Assert.IsTrue(shader.isSupported, $"{shaderName} should be supported on current platform");
}
private static readonly string[] ShaderNames =
{
"Hidden/TerrainEngine/Details/UniversalPipeline/Vertexlit",
"Hidden/TerrainEngine/Details/UniversalPipeline/WavingDoublePass",
"Hidden/TerrainEngine/Details/UniversalPipeline/BillboardWavingDoublePass"
};
/// <summary>
/// Tests that the UniversalRenderPipelineAsset terrain detail shader properties returns valid shaders.
/// </summary>
[TestCaseSource(nameof(URPShaderAccessors))]
public void UniversalRenderPipelineAsset_TerrainShaders_ReturnsValidShaders(Func<UniversalRenderPipelineAsset, Shader> getShader, string description)
{
Assert.IsNotNull(m_UrpAsset, "UniversalRenderPipelineAsset should be available");
var shader = getShader(m_UrpAsset);
Assert.IsNotNull(shader, $"{description} should not be null");
Assert.IsTrue(shader.isSupported, $"{description} should be supported on current platform");
}
private static readonly object[] URPShaderAccessors =
{
new object[] { new Func<UniversalRenderPipelineAsset, Shader>(a => a.terrainDetailLitShader), "URP terrainDetailLitShader" },
new object[] { new Func<UniversalRenderPipelineAsset, Shader>(a => a.terrainDetailGrassShader), "URP terrainDetailGrassShader" },
new object[] { new Func<UniversalRenderPipelineAsset, Shader>(a => a.terrainDetailGrassBillboardShader), "URP terrainDetailGrassBillboardShader" }
};
}
}