95 lines
2.8 KiB
C#
95 lines
2.8 KiB
C#
|
#if GRIFFIN
|
||
|
using UnityEngine;
|
||
|
using System.Collections;
|
||
|
using System.Collections.Generic;
|
||
|
|
||
|
namespace Pinwheel.Griffin.Rendering
|
||
|
{
|
||
|
public static class GGrassMaterialProvider
|
||
|
{
|
||
|
public const string FADE_KW = "FADE";
|
||
|
|
||
|
public static Material GetMaterial(bool isInteractiveGrassEnabled, bool isBillboardEnabled)
|
||
|
{
|
||
|
Material mat;
|
||
|
if (isInteractiveGrassEnabled)
|
||
|
{
|
||
|
mat = GetInteractiveGrassMaterial();
|
||
|
}
|
||
|
else
|
||
|
{
|
||
|
mat = GetNonInteractiveGrassMaterial(isBillboardEnabled);
|
||
|
}
|
||
|
if (mat != null)
|
||
|
{
|
||
|
mat.EnableKeyword(FADE_KW);
|
||
|
}
|
||
|
return mat;
|
||
|
}
|
||
|
|
||
|
private static Material GetInteractiveGrassMaterial()
|
||
|
{
|
||
|
GRenderPipelineType pipeline = GCommon.CurrentRenderPipeline;
|
||
|
if (pipeline == GRenderPipelineType.Builtin)
|
||
|
{
|
||
|
return GRuntimeSettings.Instance.foliageRendering.grassInteractiveMaterial;
|
||
|
}
|
||
|
else if (pipeline == GRenderPipelineType.Universal)
|
||
|
{
|
||
|
return GRuntimeSettings.Instance.foliageRendering.urpGrassInteractiveMaterial;
|
||
|
}
|
||
|
else
|
||
|
{
|
||
|
return null;
|
||
|
}
|
||
|
}
|
||
|
|
||
|
private static Material GetNonInteractiveGrassMaterial(bool isBillboardEnabled)
|
||
|
{
|
||
|
if (isBillboardEnabled)
|
||
|
{
|
||
|
return GetNonInteractiveBillboardGrassMaterial();
|
||
|
}
|
||
|
else
|
||
|
{
|
||
|
return GetNonInteractiveNonBillboardGrassMaterial();
|
||
|
}
|
||
|
}
|
||
|
|
||
|
private static Material GetNonInteractiveNonBillboardGrassMaterial()
|
||
|
{
|
||
|
GRenderPipelineType pipeline = GCommon.CurrentRenderPipeline;
|
||
|
if (pipeline == GRenderPipelineType.Builtin)
|
||
|
{
|
||
|
return GRuntimeSettings.Instance.foliageRendering.grassMaterial;
|
||
|
}
|
||
|
else if (pipeline == GRenderPipelineType.Universal)
|
||
|
{
|
||
|
return GRuntimeSettings.Instance.foliageRendering.urpGrassMaterial;
|
||
|
}
|
||
|
else
|
||
|
{
|
||
|
return null;
|
||
|
}
|
||
|
}
|
||
|
|
||
|
private static Material GetNonInteractiveBillboardGrassMaterial()
|
||
|
{
|
||
|
GRenderPipelineType pipeline = GCommon.CurrentRenderPipeline;
|
||
|
if (pipeline == GRenderPipelineType.Builtin)
|
||
|
{
|
||
|
return GRuntimeSettings.Instance.foliageRendering.grassBillboardMaterial;
|
||
|
}
|
||
|
else if (pipeline == GRenderPipelineType.Universal)
|
||
|
{
|
||
|
return GRuntimeSettings.Instance.foliageRendering.urpGrassBillboardMaterial;
|
||
|
}
|
||
|
else
|
||
|
{
|
||
|
return null;
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
#endif
|