1
This commit is contained in:
@@ -0,0 +1,144 @@
|
||||
// Fantasy Adventure Environment
|
||||
// Copyright Staggart Creations
|
||||
// staggart.xyz
|
||||
|
||||
using UnityEngine;
|
||||
using System.Collections;
|
||||
|
||||
namespace FAE
|
||||
{
|
||||
|
||||
[ExecuteInEditMode]
|
||||
public class CliffAppearance : MonoBehaviour
|
||||
{
|
||||
public Shader cliffShader;
|
||||
public Shader cliffCoverageShader;
|
||||
|
||||
public Material[] targetMaterials = new Material[0];
|
||||
|
||||
//Objects
|
||||
public Color objectColor = Color.white;
|
||||
[Range(0f, 1f)]
|
||||
public float roughness = 0.15f;
|
||||
|
||||
//Detail norma
|
||||
public Texture detailNormalMap;
|
||||
[Range(0f, 1f)]
|
||||
public float detailNormalStrength = 0.5f;
|
||||
|
||||
//Global
|
||||
public Texture globalColorMap;
|
||||
public Color globalColor = Color.white;
|
||||
[Range(0f, 5f)]
|
||||
public float globalTiling = 0.01f;
|
||||
|
||||
//Coverage
|
||||
public bool useCoverageShader;
|
||||
public Texture coverageColorMap;
|
||||
public Texture coverageNormalMap;
|
||||
[Range(0f, 1f)]
|
||||
public float coverageAmount = 0.01f;
|
||||
[Range(0f, 20f)]
|
||||
public float coverageTiling = 1f;
|
||||
public Texture coverageMap;
|
||||
|
||||
public void OnEnable()
|
||||
{
|
||||
if (targetMaterials.Length == 0)
|
||||
{
|
||||
this.enabled = false;
|
||||
}
|
||||
|
||||
if (UnityEngine.Rendering.GraphicsSettings.renderPipelineAsset == null)
|
||||
{
|
||||
cliffShader = Shader.Find("FAE/Cliff");
|
||||
cliffCoverageShader = Shader.Find("FAE/Cliff coverage");
|
||||
}
|
||||
else
|
||||
{
|
||||
cliffShader = Shader.Find("Universal Render Pipeline/FAE/FAE_Cliff");
|
||||
cliffCoverageShader = Shader.Find("Universal Render Pipeline/FAE/FAE_Cliff_Coverage");
|
||||
}
|
||||
|
||||
Apply();
|
||||
}
|
||||
|
||||
|
||||
private void GetSettings()
|
||||
{
|
||||
if (!targetMaterials[0])
|
||||
{
|
||||
return;
|
||||
}
|
||||
Material mat = targetMaterials[0];
|
||||
|
||||
globalColorMap = mat.GetTexture("_Globalalbedo");
|
||||
detailNormalMap = mat.GetTexture("_Detailnormal");
|
||||
|
||||
objectColor = mat.GetColor("_ObjectColor");
|
||||
globalColor = mat.GetColor("_GlobalColor");
|
||||
|
||||
detailNormalStrength = mat.GetFloat("_Detailstrength");
|
||||
globalTiling = mat.GetFloat("_Globaltiling");
|
||||
roughness = mat.GetFloat("_Roughness");
|
||||
|
||||
if (mat.shader == cliffCoverageShader)
|
||||
{
|
||||
useCoverageShader = true;
|
||||
|
||||
coverageNormalMap = mat.GetTexture("_CoverageNormals");
|
||||
coverageColorMap = mat.GetTexture("_CoverageAlbedo");
|
||||
coverageMap = mat.GetTexture("_CoverageMap");
|
||||
|
||||
coverageAmount = mat.GetFloat("_CoverageAmount");
|
||||
coverageTiling = mat.GetFloat("_CoverageTiling");
|
||||
}
|
||||
else
|
||||
{
|
||||
useCoverageShader = false;
|
||||
}
|
||||
}
|
||||
|
||||
public void Apply()
|
||||
{
|
||||
if (targetMaterials.Length != 0)
|
||||
|
||||
foreach (Material mat in targetMaterials)
|
||||
{
|
||||
if (!mat) continue;
|
||||
|
||||
if (useCoverageShader)
|
||||
{
|
||||
mat.shader = cliffCoverageShader;
|
||||
|
||||
mat.SetTexture("_CoverageNormals", coverageNormalMap);
|
||||
mat.SetTexture("_CoverageAlbedo", coverageColorMap);
|
||||
mat.SetTexture("_CoverageMap", coverageMap);
|
||||
|
||||
mat.SetFloat("_CoverageAmount", coverageAmount);
|
||||
mat.SetFloat("_CoverageTiling", coverageTiling);
|
||||
}
|
||||
else
|
||||
{
|
||||
mat.shader = cliffShader;
|
||||
}
|
||||
|
||||
//Textures
|
||||
mat.SetTexture("_Globalalbedo", globalColorMap);
|
||||
mat.SetTexture("_Detailnormal", detailNormalMap);
|
||||
|
||||
//Colors
|
||||
mat.SetColor("_ObjectColor", objectColor);
|
||||
mat.SetColor("_GlobalColor", globalColor);
|
||||
|
||||
//Floats
|
||||
mat.SetFloat("_Detailstrength", detailNormalStrength);
|
||||
mat.SetFloat("_Globaltiling", globalTiling);
|
||||
mat.SetFloat("_Roughness", roughness);
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
}
|
Reference in New Issue
Block a user