Files
BABA_YAGA/Assets/Third Parties/RealToon/RealToon Tools/ShadowTSDFModeHelper.cs
2026-05-01 15:08:59 +07:00

143 lines
5.1 KiB
C#

//RealToon - ShadowT SDF Mode [Helper]
//MJQStudioWorks
//©2025
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
namespace RealToon.Script
{
[ExecuteAlways]
[AddComponentMenu("RealToon/Tools/ShadowT SDF Mode - Helper")]
public class ShadowTSDFModeHelper : MonoBehaviour
{
[Header("Note: ShadowT feature and SDF Mode will be automatically enable\nWhen you put a material that uses RealToon Shader on the Material slot.")]
[Space(25)]
[Space(10)]
[SerializeField]
[Tooltip("A material that uses 'RealToon - ShadowT' feature and enabled 'SDF Mode'.")]
public Material Material = null;
[SerializeField]
[Tooltip("An object to follow the position.")]
public Transform ObjectToFollow = null;
[Space(10)]
[SerializeField]
[Tooltip("The amount of light.")]
float LightThreshold = 200.0f;
[Space(10)]
[SerializeField]
[Tooltip("Invert the Foward/Front position of the object.")]
bool ForwardInverted = false;
[Tooltip("Invert the Right position of the object.")]
[SerializeField]
bool RightInverted = false;
[HideInInspector]
[SerializeField]
bool checkstart = true;
string RT_Sha_Nam_URP = "Universal Render Pipeline/RealToon/Version 5/Default/Default";
string RT_Sha_Nam_HDRP = "HDRP/RealToon/Version 5/Default";
string RT_Sha_Nam_BiRP_DD = "RealToon/Version 5/Default/Default";
string RT_Sha_Nam_BiRP_DFT = "RealToon/Version 5/Default/Fade Transparency";
string RT_Sha_Nam_BiRP_DR = "RealToon/Version 5/Default/Refraction";
string RT_Sha_Nam_BiRP_TDD = "RealToon/Version 5/Tessellation/Default";
string RT_Sha_Nam_BiRP_TDFT = "RealToon/Version 5/Tessellation/Fade Transparency";
string RT_Sha_Nam_BiRP_TDR = "RealToon/Version 5/Tessellation/Refraction";
void LateUpdate()
{
if (Material == null || ObjectToFollow == null)
{ }
else
{
if (Material.shader.name == RT_Sha_Nam_URP ||
Material.shader.name == RT_Sha_Nam_HDRP ||
Material.shader.name == RT_Sha_Nam_BiRP_DD ||
Material.shader.name == RT_Sha_Nam_BiRP_DFT ||
Material.shader.name == RT_Sha_Nam_BiRP_DR ||
Material.shader.name == RT_Sha_Nam_BiRP_TDD ||
Material.shader.name == RT_Sha_Nam_BiRP_TDFT ||
Material.shader.name == RT_Sha_Nam_BiRP_TDR)
{
Material.SetFloat("_ShadowTLightThreshold", LightThreshold);
if (ForwardInverted != true)
{
Material.SetVector("_ObjectForward", ObjectToFollow.transform.forward);
}
else
{
Material.SetVector("_ObjectForward", -ObjectToFollow.transform.forward);
}
if (RightInverted != true)
{
Material.SetVector("_ObjectRight", ObjectToFollow.transform.right);
}
else
{
Material.SetVector("_ObjectRight", -ObjectToFollow.transform.right);
}
}
}
}
void OnValidate()
{
if (Material == null)
{
checkstart = true;
}
else if (Material != null)
{
if (Material.shader.name == RT_Sha_Nam_URP ||
Material.shader.name == RT_Sha_Nam_HDRP ||
Material.shader.name == RT_Sha_Nam_BiRP_DD ||
Material.shader.name == RT_Sha_Nam_BiRP_DFT ||
Material.shader.name == RT_Sha_Nam_BiRP_DR ||
Material.shader.name == RT_Sha_Nam_BiRP_TDD ||
Material.shader.name == RT_Sha_Nam_BiRP_TDFT ||
Material.shader.name == RT_Sha_Nam_BiRP_TDR)
{
if (checkstart == true)
{
if ( (Material.IsKeywordEnabled("N_F_ST_ON") == false && Material.IsKeywordEnabled("N_F_STSDFM_ON") == false) ||
(Material.IsKeywordEnabled("N_F_ST_ON") == true && Material.IsKeywordEnabled("N_F_STSDFM_ON") == false) ||
(Material.IsKeywordEnabled("N_F_ST_ON") == false && Material.IsKeywordEnabled("N_F_STSDFM_ON") == true) )
{
Material.EnableKeyword("N_F_ST_ON");
Material.SetFloat("_N_F_ST", 1.0f);
Material.EnableKeyword("N_F_STSDFM_ON");
Material.SetFloat("_N_F_STSDFM", 1.0f);
checkstart = false;
}
}
}
}
}
void Reset()
{
Material = null;
ObjectToFollow = null;
checkstart = true;
}
}
}