You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
77 lines
2.8 KiB
77 lines
2.8 KiB
using UnityEngine;
|
|
|
|
namespace FidelityFX
|
|
{
|
|
public class CacaoAssets : ScriptableObject
|
|
{
|
|
public CacaoShaders shaders;
|
|
|
|
#if UNITY_EDITOR
|
|
private void Reset()
|
|
{
|
|
shaders = new CacaoShaders
|
|
{
|
|
prepareDepths = FindComputeShader("ffx_cacao_prepare_depths_pass"),
|
|
prepareNormals = FindComputeShader("ffx_cacao_prepare_normals_pass"),
|
|
generateImportanceMap = FindComputeShader("ffx_cacao_generate_importance_map_pass"),
|
|
generateSsao = FindComputeShader("ffx_cacao_generate_pass"),
|
|
edgeSensitiveBlur = FindComputeShader("ffx_cacao_edge_sensitive_blur_pass"),
|
|
bilateralUpscale = FindComputeShader("ffx_cacao_upscale_bilateral_pass"),
|
|
reinterleave = FindComputeShader("ffx_cacao_apply_pass"),
|
|
};
|
|
}
|
|
|
|
private static ComputeShader FindComputeShader(string name)
|
|
{
|
|
string[] assetGuids = UnityEditor.AssetDatabase.FindAssets($"t:ComputeShader {name}");
|
|
if (assetGuids == null || assetGuids.Length == 0)
|
|
return null;
|
|
|
|
string assetPath = UnityEditor.AssetDatabase.GUIDToAssetPath(assetGuids[0]);
|
|
return UnityEditor.AssetDatabase.LoadAssetAtPath<ComputeShader>(assetPath);
|
|
}
|
|
#endif
|
|
}
|
|
|
|
[System.Serializable]
|
|
public class CacaoShaders
|
|
{
|
|
public ComputeShader prepareDepths;
|
|
public ComputeShader prepareNormals;
|
|
public ComputeShader generateImportanceMap;
|
|
public ComputeShader generateSsao;
|
|
public ComputeShader edgeSensitiveBlur;
|
|
public ComputeShader bilateralUpscale;
|
|
public ComputeShader reinterleave;
|
|
|
|
public CacaoShaders Clone()
|
|
{
|
|
return (CacaoShaders)MemberwiseClone();
|
|
}
|
|
|
|
public CacaoShaders DeepCopy()
|
|
{
|
|
return new CacaoShaders
|
|
{
|
|
prepareDepths = Object.Instantiate(prepareDepths),
|
|
prepareNormals = Object.Instantiate(prepareNormals),
|
|
generateImportanceMap = Object.Instantiate(generateImportanceMap),
|
|
generateSsao = Object.Instantiate(generateSsao),
|
|
edgeSensitiveBlur = Object.Instantiate(edgeSensitiveBlur),
|
|
bilateralUpscale = Object.Instantiate(bilateralUpscale),
|
|
reinterleave = Object.Instantiate(reinterleave),
|
|
};
|
|
}
|
|
|
|
public void Dispose()
|
|
{
|
|
Object.Destroy(prepareDepths);
|
|
Object.Destroy(prepareNormals);
|
|
Object.Destroy(generateImportanceMap);
|
|
Object.Destroy(generateSsao);
|
|
Object.Destroy(edgeSensitiveBlur);
|
|
Object.Destroy(bilateralUpscale);
|
|
Object.Destroy(reinterleave);
|
|
}
|
|
}
|
|
}
|