You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

91 lines
3.3 KiB
C#

/*****************************************************************************/
/*
Project - MudBun
Publisher - Long Bunny Labs
http://LongBunnyLabs.com
Author - Ming-Lun "Allen" Chou
http://AllenChou.net
*/
/******************************************************************************/
using UnityEngine;
using UnityEngine.Rendering;
namespace MudBun
{
public class ResourcesUtil
{
public enum RenderPipelineEnum
{
Unknown = -1,
BuiltIn,
URP,
HDRP,
Count
}
public static RenderPipelineEnum DetermineRenderPipeline(bool skipCache = false)
{
if (!skipCache && s_renderPipeline >= 0)
return s_renderPipeline;
string rpAsset = "";
if (GraphicsSettings.renderPipelineAsset != null)
rpAsset = GraphicsSettings.renderPipelineAsset.GetType().Name;
if (rpAsset.Equals("HDRenderPipelineAsset"))
s_renderPipeline = RenderPipelineEnum.HDRP;
else if (rpAsset.Equals("UniversalRenderPipelineAsset"))
s_renderPipeline = RenderPipelineEnum.URP;
else
s_renderPipeline = RenderPipelineEnum.BuiltIn;
return s_renderPipeline;
}
protected static RenderPipelineEnum s_renderPipeline = (RenderPipelineEnum)(-1);
public static RenderPipelineEnum RenderPipeline => DetermineRenderPipeline();
public static ComputeShader VoxelGen => GetComputeResource(PathUtil.VoxelGen);
public static ComputeShader MarchingCubes => GetComputeResource(PathUtil.MarchingCubes);
public static ComputeShader DualMeshing => GetComputeResource(PathUtil.DualMeshing);
public static ComputeShader SurfaceNets => GetComputeResource(PathUtil.SurfaceNets);
public static ComputeShader DualContouring => GetComputeResource(PathUtil.DualContouring);
public static ComputeShader RayTracedVoxels => GetComputeResource(PathUtil.RayTracedVoxels);
public static ComputeShader NoiseCache => GetComputeResource(PathUtil.NoiseCache);
public static ComputeShader TextureSlicer => GetComputeResource(PathUtil.TextureSlicer);
public static ComputeShader MeshLock => GetComputeResource(PathUtil.MeshLock);
public static ComputeShader SdfGen => GetComputeResource(PathUtil.SdfGen);
public static Texture NoiseTexture => GetTextureResource(PathUtil.NoiseTexture);
public static ComputeShader GetComputeResource(string resourcePath)
{
var compute = Resources.Load<ComputeShader>(resourcePath);
if (compute == null)
Debug.LogError($"MudBun: Compute shader \"{PathUtil.ResourceRoot}/{resourcePath}.compute\" not found.");
return compute;
}
public static Texture GetTextureResource(string resourcePath)
{
var texture = Resources.Load<Texture>(resourcePath);
if (texture == null)
Debug.LogError($"MudBun: Texture \"{PathUtil.ResourceRoot}/{resourcePath}.*\" not found.");
return texture;
}
// this needs to be available at run-time
public static Material DefaultLockedMeshMaterial => GetMaterialResource(PathUtil.DefaultLockedMeshMaterial);
public static Material GetMaterialResource(string resourcePath)
{
var compute = Resources.Load<Material>(resourcePath);
if (compute == null)
Debug.LogError($"MudBun: Material \"{PathUtil.ResourceRoot}/{resourcePath}.mat\" not found.");
return compute;
}
}
}