123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144 |
- // 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, 2f)]
- public float coverageAmount = 0.01f;
- [Range(0f, 5f)]
- 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);
- }
- }
- }
- }
|