장보기 프로젝트
This commit is contained in:
57
Assets/RealToon/RealToon Tools/CustomShadowResolution.cs
Normal file
57
Assets/RealToon/RealToon Tools/CustomShadowResolution.cs
Normal file
@@ -0,0 +1,57 @@
|
||||
//RealToon - Custom Shadow Resolution
|
||||
//©MJQStudioWorks
|
||||
|
||||
using System.Collections;
|
||||
using System.Collections.Generic;
|
||||
using UnityEngine;
|
||||
|
||||
namespace RealToon.Script
|
||||
{
|
||||
[ExecuteInEditMode]
|
||||
[RequireComponent(typeof(Light))]
|
||||
[AddComponentMenu("RealToon/Tools/Custom Shadow Resolution")]
|
||||
public class CustomShadowResolution : MonoBehaviour
|
||||
{
|
||||
[Header("Custom Shadow Resolution V1.0.0")]
|
||||
[Header("Note: Higher Shadow Resolution = More GPU RAM Usage.")]
|
||||
[Header("For RealToon Built-In RP Only")]
|
||||
|
||||
[Space(10)]
|
||||
|
||||
[SerializeField]
|
||||
[Tooltip("Input value")]
|
||||
public int Value = 2048;
|
||||
|
||||
[SerializeField]
|
||||
[Tooltip("Final Resolution (Value * 2)")]
|
||||
public int FinalResolution = 4096;
|
||||
|
||||
[Space(10)]
|
||||
|
||||
[SerializeField]
|
||||
[Tooltip("Reset to default value")]
|
||||
public bool Reset = false;
|
||||
|
||||
void Update()
|
||||
{
|
||||
this.GetComponent<Light>().shadowCustomResolution = FinalResolution;
|
||||
FinalResolution = Value * 2;
|
||||
|
||||
if (Reset == true)
|
||||
{
|
||||
Value = 2048;
|
||||
FinalResolution = 4096;
|
||||
Reset = false;
|
||||
}
|
||||
|
||||
if (Value < 0)
|
||||
{
|
||||
|
||||
Value = 0;
|
||||
FinalResolution = 0;
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,19 @@
|
||||
fileFormatVersion: 2
|
||||
guid: ef184494de3501f4ca1c8d8839a36f11
|
||||
timeCreated: 1534021412
|
||||
licenseType: Store
|
||||
MonoImporter:
|
||||
serializedVersion: 2
|
||||
defaultReferences: []
|
||||
executionOrder: 0
|
||||
icon: {instanceID: 0}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
AssetOrigin:
|
||||
serializedVersion: 1
|
||||
productId: 65518
|
||||
packageName: RealToon (Pro Anime/Toon Shader)
|
||||
packageVersion: 5.0.15
|
||||
assetPath: Assets/RealToon/RealToon Tools/CustomShadowResolution.cs
|
||||
uploadId: 889742
|
||||
@@ -0,0 +1,9 @@
|
||||
fileFormatVersion: 2
|
||||
guid: faeff1c229edd844db97efa9068e8296
|
||||
folderAsset: yes
|
||||
timeCreated: 1527924508
|
||||
licenseType: Store
|
||||
DefaultImporter:
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
@@ -0,0 +1,236 @@
|
||||
//RealToon - Frame By Frame Rendering V1.0.0
|
||||
//©MJQStudioWorks
|
||||
|
||||
using UnityEngine;
|
||||
using System.Collections;
|
||||
|
||||
namespace RealToon.Tools.FrameByFrameRendering
|
||||
{
|
||||
[AddComponentMenu("RealToon/Tools/Frame By Frame Rendering/Frame By Frame Rendering (Default)")]
|
||||
public class FrameByFrameRendering_Default : MonoBehaviour
|
||||
{
|
||||
[Header("(Frame By Frame Rendering V1.0.0)")]
|
||||
[Header("Click 'Play' button to start render.")]
|
||||
|
||||
[Space(20)]
|
||||
|
||||
[Header("==============================")]
|
||||
[Header("(Settings)")]
|
||||
|
||||
[Space(5)]
|
||||
|
||||
[SerializeField]
|
||||
[Tooltip("Example Path: C:/TheNameOfTheFolder (Default folder name is Rendered Files and it will be created to your unity root project folder if this set to empty.")]
|
||||
public string PathFolder = "Rendered Files";
|
||||
|
||||
[SerializeField]
|
||||
[Tooltip("PNG File Name")]
|
||||
public string PNGFileName = "Frame";
|
||||
|
||||
[Space(15)]
|
||||
|
||||
[SerializeField]
|
||||
[Tooltip("Frame Rate (Set this to 24 if you want Film Style framerate.")]
|
||||
public int FrameRate = 24;
|
||||
|
||||
[SerializeField]
|
||||
[Tooltip("Start frame to start rendering.")]
|
||||
public int StartFrame = 0;
|
||||
|
||||
[SerializeField]
|
||||
[Tooltip("End frame to end rendering.")]
|
||||
public int EndFrame = 100;
|
||||
|
||||
[Space(15)]
|
||||
|
||||
[SerializeField]
|
||||
[Tooltip("Render single frame or single image only, For Illustration or Art use.")]
|
||||
public bool SingleFrameRenderingMode = false;
|
||||
|
||||
[Header("==============================")]
|
||||
|
||||
[Header("(Information [Display Only] )")]
|
||||
|
||||
[Space(5)]
|
||||
[Tooltip("Display the current frame of your scene/play. (Display Only)")]
|
||||
public int CurrentFrame = 0;
|
||||
|
||||
[Tooltip("Display the information of the operation or rendering. (Display Only)")]
|
||||
public string info = string.Empty;
|
||||
|
||||
private bool StartRendering = false;
|
||||
private bool StartFrameCheck = false;
|
||||
private string CurrentRenderedFile = string.Empty;
|
||||
private int StartFrameCont = 0;
|
||||
private int EndFrameCont = 100;
|
||||
private int FrameRateCont = 24;
|
||||
private string PathFolderCont = "Rendered Files";
|
||||
private string PNGFileNameCont = "Frame";
|
||||
private bool SingleFrameRenderingCont = false;
|
||||
|
||||
private System.IO.DirectoryInfo DirInfo;
|
||||
|
||||
|
||||
void Start()
|
||||
{
|
||||
|
||||
if (StartFrameCont <= -1)
|
||||
{
|
||||
StartFrameCheck = false;
|
||||
StartRendering = false;
|
||||
info = "Rendering has not started because 'Start Frame' value is less than 0.";
|
||||
Debug.LogError(info);
|
||||
}
|
||||
|
||||
if (EndFrameCont <= 0)
|
||||
{
|
||||
StartFrameCheck = false;
|
||||
StartRendering = false;
|
||||
info = "Rendering has not started because 'End Frame' value is 0 or less than 0.";
|
||||
Debug.LogError(info);
|
||||
}
|
||||
|
||||
if (FrameRateCont <= 0)
|
||||
{
|
||||
StartFrameCheck = false;
|
||||
StartRendering = false;
|
||||
info = "Rendering has not started because 'Frame Rate' value is 0 or less than 0.";
|
||||
Debug.LogError(info);
|
||||
}
|
||||
|
||||
if (PNGFileName == string.Empty)
|
||||
{
|
||||
PNGFileName = "Frame";
|
||||
info = "File Name set to 'Frame' because the field is not set or empty.";
|
||||
Debug.LogError(info);
|
||||
}
|
||||
|
||||
if (PathFolder == string.Empty)
|
||||
{
|
||||
PathFolder = "Rendered Files";
|
||||
info = "Folder Path set to 'Rendered Files' and will be created to your UNITY ROOT PROJECT FOLDER because the field is not set or empty.";
|
||||
Debug.LogError(info);
|
||||
}
|
||||
|
||||
Time.captureFramerate = FrameRate;
|
||||
StartFrameCont = StartFrame;
|
||||
EndFrameCont = EndFrame;
|
||||
FrameRateCont = FrameRate;
|
||||
SingleFrameRenderingCont = SingleFrameRenderingMode;
|
||||
PathFolderCont = PathFolder;
|
||||
PNGFileNameCont = PNGFileName;
|
||||
|
||||
DirInfo = new System.IO.DirectoryInfo(PathFolder);
|
||||
|
||||
if (!System.IO.Directory.Exists(PathFolder))
|
||||
{
|
||||
System.IO.Directory.CreateDirectory(PathFolder);
|
||||
info = "Folder '" + PathFolder + "' Has Been Created To Your Root Project Folder.";
|
||||
Debug.LogWarning(info);
|
||||
}
|
||||
|
||||
|
||||
if (SingleFrameRenderingMode == false)
|
||||
{
|
||||
info = "Video/Animation Mode";
|
||||
Debug.LogWarning(info);
|
||||
|
||||
if (DirInfo.GetFiles().Length != 0)
|
||||
{
|
||||
StartFrameCheck = false;
|
||||
StartRendering = false;
|
||||
info = "(Video/Animation Mode) Rendering not started because there are already rendered frames or files in this folder ('" + PathFolder + "'), Please empty this folder or make another folder by changing the Path Folder.";
|
||||
Debug.LogError(info);
|
||||
}
|
||||
else
|
||||
{
|
||||
StartFrameCheck = true;
|
||||
StartRendering = true;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
StartFrameCheck = true;
|
||||
StartRendering = true;
|
||||
info = "Picture or Single Frame Rendering Mode";
|
||||
Debug.LogWarning(info);
|
||||
EndFrameCont = 1;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
void Update()
|
||||
{
|
||||
CurrentFrame = Time.frameCount - 1;
|
||||
StartFrame = StartFrameCont;
|
||||
EndFrame = EndFrameCont;
|
||||
SingleFrameRenderingMode = SingleFrameRenderingCont;
|
||||
PathFolder = PathFolderCont;
|
||||
PNGFileName = PNGFileNameCont;
|
||||
|
||||
if (PathFolder == string.Empty)
|
||||
{
|
||||
PathFolder = "Rendered Files";
|
||||
}
|
||||
|
||||
else
|
||||
{
|
||||
|
||||
if (StartFrameCheck == true)
|
||||
{
|
||||
|
||||
if (CurrentFrame == StartFrameCont)
|
||||
{
|
||||
info = "Rendering Has Started.";
|
||||
Debug.LogWarning(info);
|
||||
StartRendering = true;
|
||||
}
|
||||
|
||||
if (StartRendering == true)
|
||||
{
|
||||
if (SingleFrameRenderingMode == false)
|
||||
{
|
||||
string fname = string.Format("{0}/" + PNGFileNameCont + " {1:D04}.png", PathFolderCont, CurrentFrame);
|
||||
CurrentRenderedFile = fname;
|
||||
info = fname;
|
||||
|
||||
#if UNITY_2017_1_OR_NEWER
|
||||
ScreenCapture.CaptureScreenshot(fname);
|
||||
#endif
|
||||
|
||||
#if UNITY_5_6
|
||||
Application.CaptureScreenshot(fname);
|
||||
#endif
|
||||
|
||||
}
|
||||
else
|
||||
{
|
||||
string fname = string.Format("{0}/" + PNGFileNameCont + " " + System.DateTime.Now.ToString("hh_mm_ss") + ".png", PathFolderCont, CurrentFrame);
|
||||
CurrentRenderedFile = fname;
|
||||
info = fname;
|
||||
|
||||
#if UNITY_2017_1_OR_NEWER
|
||||
ScreenCapture.CaptureScreenshot(fname);
|
||||
#endif
|
||||
|
||||
#if UNITY_5_6
|
||||
Application.CaptureScreenshot(fname);
|
||||
#endif
|
||||
|
||||
}
|
||||
|
||||
|
||||
if (CurrentFrame == EndFrame)
|
||||
{
|
||||
info = "Rendering Has Ended." + " [Last Rendered File: " + CurrentRenderedFile + "]";
|
||||
Debug.LogWarning(info);
|
||||
StartRendering = false;
|
||||
StartFrameCheck = false;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
@@ -0,0 +1,20 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 38f2863825408a940b834eb29e4811b4
|
||||
timeCreated: 1527622178
|
||||
licenseType: Store
|
||||
MonoImporter:
|
||||
externalObjects: {}
|
||||
serializedVersion: 2
|
||||
defaultReferences: []
|
||||
executionOrder: 0
|
||||
icon: {instanceID: 0}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
AssetOrigin:
|
||||
serializedVersion: 1
|
||||
productId: 65518
|
||||
packageName: RealToon (Pro Anime/Toon Shader)
|
||||
packageVersion: 5.0.15
|
||||
assetPath: Assets/RealToon/RealToon Tools/FrameByFrameRendering/FrameByFrameRendering_Default.cs
|
||||
uploadId: 889742
|
||||
@@ -0,0 +1,177 @@
|
||||
//RealToon - Frame By Frame Rendering V1.0.0
|
||||
//©MJQStudioWorks
|
||||
|
||||
using UnityEngine;
|
||||
using System.Collections;
|
||||
|
||||
namespace RealToon.Tools.FrameByFrameRendering
|
||||
{
|
||||
[AddComponentMenu("RealToon/Tools/Frame By Frame Rendering/Frame By Frame Rendering (Manual)")]
|
||||
public class FrameByFrameRendering_Manual : MonoBehaviour
|
||||
{
|
||||
[Header("(Frame By Frame Rendering V1.0.0)")]
|
||||
[Header("Click 'Play' & 'Render' button to start render one by one.")]
|
||||
|
||||
[Space(20)]
|
||||
|
||||
[SerializeField]
|
||||
[Tooltip("Current Frame Number")]
|
||||
public int FrameNumber = 0;
|
||||
|
||||
[Space(5)]
|
||||
|
||||
[SerializeField]
|
||||
[Tooltip("Start Render")]
|
||||
public bool Render = false;
|
||||
|
||||
[Header("==============================")]
|
||||
[Header("(Settings)")]
|
||||
|
||||
[Space(5)]
|
||||
|
||||
[SerializeField]
|
||||
[Tooltip("Example Path: C:/TheNameOfTheFolder (Default folder name is Rendered Files and it will be created to your unity root project folder if this set to empty.")]
|
||||
public string PathFolder = "Rendered Files";
|
||||
|
||||
[SerializeField]
|
||||
[Tooltip("PNG File Name")]
|
||||
public string PNGFileName = "Frame";
|
||||
|
||||
[Space(15)]
|
||||
|
||||
[SerializeField]
|
||||
[Tooltip("Render single frame or single image only, For Illustration or Art use.")]
|
||||
public bool PictureMode = false;
|
||||
|
||||
[Header("==============================")]
|
||||
|
||||
[Header("(Information [Display Only] )")]
|
||||
|
||||
[Space(5)]
|
||||
|
||||
[Tooltip("Display the information of the operation or rendering. (Display Only)")]
|
||||
public int LastRenderedFrame = 0;
|
||||
public string info = string.Empty;
|
||||
|
||||
private string CurrentRenderedFile = string.Empty;
|
||||
private string PathFolderCont = "Rendered Files";
|
||||
private string PNGFileNameCont = "Frame";
|
||||
private int FrameNumberCont = 0;
|
||||
private bool PictureModeCont = false;
|
||||
private bool PreventRender = false;
|
||||
|
||||
private System.IO.DirectoryInfo DirInfo;
|
||||
|
||||
|
||||
void Start()
|
||||
{
|
||||
|
||||
if (PNGFileName == string.Empty)
|
||||
{
|
||||
PNGFileName = "Frame";
|
||||
info = "File Name set to 'Frame' because the field is not set or empty.";
|
||||
Debug.LogError(info);
|
||||
}
|
||||
|
||||
if (PathFolder == string.Empty)
|
||||
{
|
||||
PathFolder = "Rendered Files";
|
||||
info = "Folder Path set to 'Rendered Files' and will be created to your UNITY ROOT PROJECT FOLDER because the field is not set or empty.";
|
||||
Debug.LogError(info);
|
||||
}
|
||||
|
||||
PictureModeCont = PictureMode;
|
||||
PathFolderCont = PathFolder;
|
||||
PNGFileNameCont = PNGFileName;
|
||||
FrameNumberCont = FrameNumber;
|
||||
|
||||
DirInfo = new System.IO.DirectoryInfo(PathFolder);
|
||||
|
||||
if (!System.IO.Directory.Exists(PathFolder))
|
||||
{
|
||||
System.IO.Directory.CreateDirectory(PathFolder);
|
||||
info = "Folder '" + PathFolder + "' Has Been Created To Your Root Project Folder.";
|
||||
Debug.LogWarning(info);
|
||||
}
|
||||
|
||||
|
||||
if (PictureMode == false)
|
||||
{
|
||||
info = "Frame by Frame Rendering Mode";
|
||||
Debug.LogWarning(info);
|
||||
|
||||
if (DirInfo.GetFiles().Length != 0)
|
||||
{
|
||||
PreventRender = true;
|
||||
Render = false;
|
||||
info = "(Frame by Frame Mode) Rendering not started because there are already rendered frames or files in this folder ('" + PathFolder + "'), Please empty this folder or make another folder by changing the Path Folder.";
|
||||
Debug.LogError(info);
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
info = "Picture or Single Frame Rendering Mode";
|
||||
Debug.LogWarning(info);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
void Update()
|
||||
{
|
||||
PictureMode = PictureModeCont;
|
||||
PathFolder = PathFolderCont;
|
||||
PNGFileName = PNGFileNameCont;
|
||||
LastRenderedFrame = FrameNumberCont;
|
||||
|
||||
if (FrameNumber <= 0)
|
||||
{
|
||||
FrameNumber = FrameNumberCont;
|
||||
}
|
||||
|
||||
if (PreventRender == false)
|
||||
{
|
||||
if (Render == true)
|
||||
{
|
||||
if (PictureMode == false)
|
||||
{
|
||||
string fname = string.Format("{0}/" + PNGFileNameCont + " {1:D04}.png", PathFolderCont, FrameNumber);
|
||||
CurrentRenderedFile = fname;
|
||||
|
||||
#if UNITY_2017_1_OR_NEWER
|
||||
ScreenCapture.CaptureScreenshot(fname);
|
||||
#endif
|
||||
|
||||
#if UNITY_5_6
|
||||
Application.CaptureScreenshot(fname);
|
||||
#endif
|
||||
|
||||
|
||||
FrameNumber += 1;
|
||||
FrameNumberCont = FrameNumber;
|
||||
|
||||
info = CurrentRenderedFile;
|
||||
Debug.LogWarning(info);
|
||||
Render = false;
|
||||
}
|
||||
else
|
||||
{
|
||||
string fname = string.Format("{0}/" + PNGFileNameCont + " " + System.DateTime.Now.ToString("hh_mm_ss") + ".png", PathFolderCont, FrameNumber);
|
||||
CurrentRenderedFile = fname;
|
||||
|
||||
#if UNITY_2017_1_OR_NEWER
|
||||
ScreenCapture.CaptureScreenshot(fname);
|
||||
#endif
|
||||
|
||||
#if UNITY_5_6
|
||||
Application.CaptureScreenshot(fname);
|
||||
#endif
|
||||
info = CurrentRenderedFile;
|
||||
Debug.LogWarning(info);
|
||||
Render = false;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
@@ -0,0 +1,19 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 9f51a2cb54804064b8fc03edfef062fb
|
||||
timeCreated: 1527764313
|
||||
licenseType: Store
|
||||
MonoImporter:
|
||||
serializedVersion: 2
|
||||
defaultReferences: []
|
||||
executionOrder: 0
|
||||
icon: {instanceID: 0}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
AssetOrigin:
|
||||
serializedVersion: 1
|
||||
productId: 65518
|
||||
packageName: RealToon (Pro Anime/Toon Shader)
|
||||
packageVersion: 5.0.15
|
||||
assetPath: Assets/RealToon/RealToon Tools/FrameByFrameRendering/FrameByFrameRendering_Manual.cs
|
||||
uploadId: 889742
|
||||
@@ -0,0 +1,407 @@
|
||||
//RealToon - Perspective Adjustment [Helper]
|
||||
//©MJQStudioWorks
|
||||
|
||||
using UnityEngine;
|
||||
|
||||
namespace RealToon.Script
|
||||
{
|
||||
|
||||
[ExecuteAlways]
|
||||
[AddComponentMenu("RealToon/Tools/Perspective Adjustment - Controller")]
|
||||
public class PerspectiveAdjustmentController : MonoBehaviour
|
||||
{
|
||||
[HideInInspector]
|
||||
[SerializeField]
|
||||
Transform[] SubTran;
|
||||
|
||||
[HideInInspector]
|
||||
[SerializeField]
|
||||
Material[] Mat;
|
||||
|
||||
[HideInInspector]
|
||||
[SerializeField]
|
||||
Transform[] attac;
|
||||
|
||||
[Header("Note: Perspective Adjustment feature will be automatically enable\nOn the materials of the object/model that uses RealToon Shader.")]
|
||||
[Header("It is recommend to set the Clipping Planes - Near of the camera\nto 0.01 to prevent slicing when near.")]
|
||||
|
||||
[Space(25)]
|
||||
|
||||
[SerializeField]
|
||||
[Tooltip("This will change the perspective of an object to 2D or 3D or FOV stretch look.\nFor 2d toon/anime look, set it to 0.5 or 0.")]
|
||||
public float Perspective = 1;
|
||||
|
||||
[SerializeField]
|
||||
[Tooltip("This will change the clipping on the object.\nChange this if the object is overlapping front or back.")]
|
||||
public float Clip = 0;
|
||||
|
||||
[Space(15)]
|
||||
|
||||
[SerializeField]
|
||||
[Tooltip("This will adjust the size of the object when the camera is closer.")]
|
||||
public float CloseUpSize = 0;
|
||||
|
||||
[SerializeField]
|
||||
[Tooltip("How smooth the transition of the sizing.")]
|
||||
public float CloseUpSizeSmoothTransition = 1;
|
||||
|
||||
[SerializeField]
|
||||
[Tooltip("Distance transition from the camera to the object.")]
|
||||
public float CloseUpSizeDistance = 0;
|
||||
|
||||
[Space(15)]
|
||||
|
||||
[SerializeField]
|
||||
[Tooltip("Z position of the object in Clip Space.")]
|
||||
public float ObjectPositionZ = 0;
|
||||
|
||||
[Space(15)]
|
||||
|
||||
[SerializeField]
|
||||
[Tooltip("Can animate the values/properties or create keyframe.")]
|
||||
public bool CanAnimateIt = true;
|
||||
|
||||
int coun_obj_wi_ralsha = 0;
|
||||
int coun_obj_mat = 0;
|
||||
int coun_obj_mat_arr = 0;
|
||||
|
||||
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";
|
||||
string RT_Sha_Nam_BiRP_DDL = "RealToon/Version 5/Lite/Default";
|
||||
string RT_Sha_Nam_BiRP_DFTL = "RealToon/Version 5/Lite/Fade Transparency";
|
||||
|
||||
[HideInInspector]
|
||||
[SerializeField]
|
||||
bool checkstart = true;
|
||||
|
||||
void Start()
|
||||
{
|
||||
if (checkstart == true)
|
||||
{
|
||||
InitStart();
|
||||
checkstart = false;
|
||||
}
|
||||
}
|
||||
|
||||
void LateUpdate()
|
||||
{
|
||||
if (Mat != null)
|
||||
{
|
||||
if (CanAnimateIt == true)
|
||||
{
|
||||
foreach (Material Mate in Mat)
|
||||
{
|
||||
if (Mate != null)
|
||||
{
|
||||
if (Mate.shader.name == RT_Sha_Nam_URP ||
|
||||
Mate.shader.name == RT_Sha_Nam_HDRP ||
|
||||
Mate.shader.name == RT_Sha_Nam_BiRP_DD ||
|
||||
Mate.shader.name == RT_Sha_Nam_BiRP_DFT ||
|
||||
Mate.shader.name == RT_Sha_Nam_BiRP_DR ||
|
||||
Mate.shader.name == RT_Sha_Nam_BiRP_TDD ||
|
||||
Mate.shader.name == RT_Sha_Nam_BiRP_TDFT ||
|
||||
Mate.shader.name == RT_Sha_Nam_BiRP_TDR ||
|
||||
Mate.shader.name == RT_Sha_Nam_BiRP_DDL ||
|
||||
Mate.shader.name == RT_Sha_Nam_BiRP_DFTL)
|
||||
{
|
||||
Set_Shad_Prop(Mate);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void OnValidate()
|
||||
{
|
||||
if (Mat != null)
|
||||
{
|
||||
foreach (Material Mate in Mat)
|
||||
{
|
||||
if (Mate != null)
|
||||
{
|
||||
if (Mate.shader.name == RT_Sha_Nam_URP ||
|
||||
Mate.shader.name == RT_Sha_Nam_HDRP ||
|
||||
Mate.shader.name == RT_Sha_Nam_BiRP_DD ||
|
||||
Mate.shader.name == RT_Sha_Nam_BiRP_DFT ||
|
||||
Mate.shader.name == RT_Sha_Nam_BiRP_DR ||
|
||||
Mate.shader.name == RT_Sha_Nam_BiRP_TDD ||
|
||||
Mate.shader.name == RT_Sha_Nam_BiRP_TDFT ||
|
||||
Mate.shader.name == RT_Sha_Nam_BiRP_TDR ||
|
||||
Mate.shader.name == RT_Sha_Nam_BiRP_DDL ||
|
||||
Mate.shader.name == RT_Sha_Nam_BiRP_DFTL)
|
||||
{
|
||||
Set_Shad_Prop(Mate);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/* Remove Later
|
||||
void OnDestroy()
|
||||
{
|
||||
Res_Shad_Prop();
|
||||
foreach (Material Mate in Mat)
|
||||
{
|
||||
if (Mate != null)
|
||||
{
|
||||
if (Mate.shader.name == RT_Sha_Nam_URP || Mate.shader.name == RT_Sha_Nam_HDRP)
|
||||
{
|
||||
Mate.SetFloat("_N_F_PA", 0.0f);
|
||||
Mate.DisableKeyword("N_F_PA_ON");
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
*/
|
||||
|
||||
void Reset()
|
||||
{
|
||||
if (Mat != null)
|
||||
{
|
||||
checkstart = true;
|
||||
Res_Shad_Prop();
|
||||
|
||||
foreach (Material Mate in Mat)
|
||||
{
|
||||
if (Mate != null)
|
||||
{
|
||||
if (Mate.shader.name == RT_Sha_Nam_URP ||
|
||||
Mate.shader.name == RT_Sha_Nam_HDRP ||
|
||||
Mate.shader.name == RT_Sha_Nam_BiRP_DD ||
|
||||
Mate.shader.name == RT_Sha_Nam_BiRP_DFT ||
|
||||
Mate.shader.name == RT_Sha_Nam_BiRP_DR ||
|
||||
Mate.shader.name == RT_Sha_Nam_BiRP_TDD ||
|
||||
Mate.shader.name == RT_Sha_Nam_BiRP_TDFT ||
|
||||
Mate.shader.name == RT_Sha_Nam_BiRP_TDR ||
|
||||
Mate.shader.name == RT_Sha_Nam_BiRP_DDL ||
|
||||
Mate.shader.name == RT_Sha_Nam_BiRP_DFTL)
|
||||
{
|
||||
Set_Shad_Prop(Mate);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
coun_obj_wi_ralsha = 0;
|
||||
coun_obj_mat = 0;
|
||||
coun_obj_mat_arr = 0;
|
||||
InitStart();
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
#region Init
|
||||
|
||||
void InitStart()
|
||||
{
|
||||
if (attac == null || attac.Length == 0)
|
||||
{
|
||||
attac = this.gameObject.GetComponentsInChildren<Transform>();
|
||||
}
|
||||
|
||||
int x = 0;
|
||||
foreach (Transform Trans in attac)
|
||||
{
|
||||
if (Trans.GetComponent<SkinnedMeshRenderer>() == true)
|
||||
{
|
||||
if (Trans.GetComponent<SkinnedMeshRenderer>().sharedMaterial != null)
|
||||
{
|
||||
if (Trans.GetComponent<SkinnedMeshRenderer>().sharedMaterial.shader.name == RT_Sha_Nam_URP ||
|
||||
Trans.GetComponent<SkinnedMeshRenderer>().sharedMaterial.shader.name == RT_Sha_Nam_HDRP ||
|
||||
Trans.GetComponent<SkinnedMeshRenderer>().sharedMaterial.shader.name == RT_Sha_Nam_BiRP_DD ||
|
||||
Trans.GetComponent<SkinnedMeshRenderer>().sharedMaterial.shader.name == RT_Sha_Nam_BiRP_DFT ||
|
||||
Trans.GetComponent<SkinnedMeshRenderer>().sharedMaterial.shader.name == RT_Sha_Nam_BiRP_DR ||
|
||||
Trans.GetComponent<SkinnedMeshRenderer>().sharedMaterial.shader.name == RT_Sha_Nam_BiRP_TDD ||
|
||||
Trans.GetComponent<SkinnedMeshRenderer>().sharedMaterial.shader.name == RT_Sha_Nam_BiRP_TDFT ||
|
||||
Trans.GetComponent<SkinnedMeshRenderer>().sharedMaterial.shader.name == RT_Sha_Nam_BiRP_TDR ||
|
||||
Trans.GetComponent<SkinnedMeshRenderer>().sharedMaterial.shader.name == RT_Sha_Nam_BiRP_DDL ||
|
||||
Trans.GetComponent<SkinnedMeshRenderer>().sharedMaterial.shader.name == RT_Sha_Nam_BiRP_DFTL)
|
||||
{
|
||||
coun_obj_wi_ralsha++;
|
||||
coun_obj_mat += Trans.GetComponent<SkinnedMeshRenderer>().sharedMaterials.Length;
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
if (Trans.GetComponent<MeshRenderer>() == true)
|
||||
{
|
||||
if (Trans.GetComponent<MeshRenderer>().sharedMaterial != null)
|
||||
{
|
||||
if (Trans.GetComponent<MeshRenderer>().sharedMaterial.shader.name == RT_Sha_Nam_URP ||
|
||||
Trans.GetComponent<MeshRenderer>().sharedMaterial.shader.name == RT_Sha_Nam_HDRP ||
|
||||
Trans.GetComponent<MeshRenderer>().sharedMaterial.shader.name == RT_Sha_Nam_BiRP_DD ||
|
||||
Trans.GetComponent<MeshRenderer>().sharedMaterial.shader.name == RT_Sha_Nam_BiRP_DFT ||
|
||||
Trans.GetComponent<MeshRenderer>().sharedMaterial.shader.name == RT_Sha_Nam_BiRP_DR ||
|
||||
Trans.GetComponent<MeshRenderer>().sharedMaterial.shader.name == RT_Sha_Nam_BiRP_TDD ||
|
||||
Trans.GetComponent<MeshRenderer>().sharedMaterial.shader.name == RT_Sha_Nam_BiRP_TDFT ||
|
||||
Trans.GetComponent<MeshRenderer>().sharedMaterial.shader.name == RT_Sha_Nam_BiRP_TDR ||
|
||||
Trans.GetComponent<MeshRenderer>().sharedMaterial.shader.name == RT_Sha_Nam_BiRP_DDL ||
|
||||
Trans.GetComponent<MeshRenderer>().sharedMaterial.shader.name == RT_Sha_Nam_BiRP_DFTL)
|
||||
{
|
||||
coun_obj_wi_ralsha++;
|
||||
coun_obj_mat += Trans.GetComponent<MeshRenderer>().sharedMaterials.Length;
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
SubTran = new Transform[coun_obj_wi_ralsha];
|
||||
|
||||
foreach (Transform Trans in attac)
|
||||
{
|
||||
if (Trans.GetComponent<SkinnedMeshRenderer>() == true)
|
||||
{
|
||||
if (Trans.GetComponent<SkinnedMeshRenderer>().sharedMaterial != null)
|
||||
{
|
||||
if (Trans.GetComponent<SkinnedMeshRenderer>().sharedMaterial.shader.name == RT_Sha_Nam_URP ||
|
||||
Trans.GetComponent<SkinnedMeshRenderer>().sharedMaterial.shader.name == RT_Sha_Nam_HDRP ||
|
||||
Trans.GetComponent<SkinnedMeshRenderer>().sharedMaterial.shader.name == RT_Sha_Nam_BiRP_DD ||
|
||||
Trans.GetComponent<SkinnedMeshRenderer>().sharedMaterial.shader.name == RT_Sha_Nam_BiRP_DFT ||
|
||||
Trans.GetComponent<SkinnedMeshRenderer>().sharedMaterial.shader.name == RT_Sha_Nam_BiRP_DR ||
|
||||
Trans.GetComponent<SkinnedMeshRenderer>().sharedMaterial.shader.name == RT_Sha_Nam_BiRP_TDD ||
|
||||
Trans.GetComponent<SkinnedMeshRenderer>().sharedMaterial.shader.name == RT_Sha_Nam_BiRP_TDFT ||
|
||||
Trans.GetComponent<SkinnedMeshRenderer>().sharedMaterial.shader.name == RT_Sha_Nam_BiRP_TDR ||
|
||||
Trans.GetComponent<SkinnedMeshRenderer>().sharedMaterial.shader.name == RT_Sha_Nam_BiRP_DDL ||
|
||||
Trans.GetComponent<SkinnedMeshRenderer>().sharedMaterial.shader.name == RT_Sha_Nam_BiRP_DFTL)
|
||||
{
|
||||
SubTran[x] = Trans;
|
||||
x++;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
if (Trans.GetComponent<MeshRenderer>() == true)
|
||||
{
|
||||
if (Trans.GetComponent<MeshRenderer>().sharedMaterial != null)
|
||||
{
|
||||
if (Trans.GetComponent<MeshRenderer>().sharedMaterial.shader.name == RT_Sha_Nam_URP ||
|
||||
Trans.GetComponent<MeshRenderer>().sharedMaterial.shader.name == RT_Sha_Nam_HDRP ||
|
||||
Trans.GetComponent<MeshRenderer>().sharedMaterial.shader.name == RT_Sha_Nam_BiRP_DD ||
|
||||
Trans.GetComponent<MeshRenderer>().sharedMaterial.shader.name == RT_Sha_Nam_BiRP_DFT ||
|
||||
Trans.GetComponent<MeshRenderer>().sharedMaterial.shader.name == RT_Sha_Nam_BiRP_DR ||
|
||||
Trans.GetComponent<MeshRenderer>().sharedMaterial.shader.name == RT_Sha_Nam_BiRP_TDD ||
|
||||
Trans.GetComponent<MeshRenderer>().sharedMaterial.shader.name == RT_Sha_Nam_BiRP_TDFT ||
|
||||
Trans.GetComponent<MeshRenderer>().sharedMaterial.shader.name == RT_Sha_Nam_BiRP_TDR ||
|
||||
Trans.GetComponent<MeshRenderer>().sharedMaterial.shader.name == RT_Sha_Nam_BiRP_DDL ||
|
||||
Trans.GetComponent<MeshRenderer>().sharedMaterial.shader.name == RT_Sha_Nam_BiRP_DFTL)
|
||||
{
|
||||
SubTran[x] = Trans;
|
||||
x++;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Mat = new Material[coun_obj_mat];
|
||||
|
||||
|
||||
foreach (Transform Trans in SubTran)
|
||||
{
|
||||
if (Trans.GetComponent<SkinnedMeshRenderer>() == true)
|
||||
{
|
||||
if (Trans.GetComponent<SkinnedMeshRenderer>().sharedMaterial != null)
|
||||
{
|
||||
if (Trans.GetComponent<SkinnedMeshRenderer>().sharedMaterial.shader.name == RT_Sha_Nam_URP ||
|
||||
Trans.GetComponent<SkinnedMeshRenderer>().sharedMaterial.shader.name == RT_Sha_Nam_HDRP ||
|
||||
Trans.GetComponent<SkinnedMeshRenderer>().sharedMaterial.shader.name == RT_Sha_Nam_BiRP_DD ||
|
||||
Trans.GetComponent<SkinnedMeshRenderer>().sharedMaterial.shader.name == RT_Sha_Nam_BiRP_DFT ||
|
||||
Trans.GetComponent<SkinnedMeshRenderer>().sharedMaterial.shader.name == RT_Sha_Nam_BiRP_DR ||
|
||||
Trans.GetComponent<SkinnedMeshRenderer>().sharedMaterial.shader.name == RT_Sha_Nam_BiRP_TDD ||
|
||||
Trans.GetComponent<SkinnedMeshRenderer>().sharedMaterial.shader.name == RT_Sha_Nam_BiRP_TDFT ||
|
||||
Trans.GetComponent<SkinnedMeshRenderer>().sharedMaterial.shader.name == RT_Sha_Nam_BiRP_TDR ||
|
||||
Trans.GetComponent<SkinnedMeshRenderer>().sharedMaterial.shader.name == RT_Sha_Nam_BiRP_DDL ||
|
||||
Trans.GetComponent<SkinnedMeshRenderer>().sharedMaterial.shader.name == RT_Sha_Nam_BiRP_DFTL)
|
||||
{
|
||||
for (int i = 0; i < Trans.GetComponent<SkinnedMeshRenderer>().sharedMaterials.Length; i++)
|
||||
{
|
||||
Mat[coun_obj_mat_arr] = Trans.GetComponent<SkinnedMeshRenderer>().sharedMaterials[i];
|
||||
coun_obj_mat_arr++;
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
if (Trans.GetComponent<MeshRenderer>() == true)
|
||||
{
|
||||
if (Trans.GetComponent<MeshRenderer>().sharedMaterial != null)
|
||||
{
|
||||
if (Trans.GetComponent<MeshRenderer>().sharedMaterial.shader.name == RT_Sha_Nam_URP ||
|
||||
Trans.GetComponent<MeshRenderer>().sharedMaterial.shader.name == RT_Sha_Nam_HDRP ||
|
||||
Trans.GetComponent<MeshRenderer>().sharedMaterial.shader.name == RT_Sha_Nam_BiRP_DD ||
|
||||
Trans.GetComponent<MeshRenderer>().sharedMaterial.shader.name == RT_Sha_Nam_BiRP_DFT ||
|
||||
Trans.GetComponent<MeshRenderer>().sharedMaterial.shader.name == RT_Sha_Nam_BiRP_DR ||
|
||||
Trans.GetComponent<MeshRenderer>().sharedMaterial.shader.name == RT_Sha_Nam_BiRP_TDD ||
|
||||
Trans.GetComponent<MeshRenderer>().sharedMaterial.shader.name == RT_Sha_Nam_BiRP_TDFT ||
|
||||
Trans.GetComponent<MeshRenderer>().sharedMaterial.shader.name == RT_Sha_Nam_BiRP_TDR ||
|
||||
Trans.GetComponent<MeshRenderer>().sharedMaterial.shader.name == RT_Sha_Nam_BiRP_DDL ||
|
||||
Trans.GetComponent<MeshRenderer>().sharedMaterial.shader.name == RT_Sha_Nam_BiRP_DFTL)
|
||||
{
|
||||
|
||||
for (int i = 0; i < Trans.GetComponent<MeshRenderer>().sharedMaterials.Length; i++)
|
||||
{
|
||||
Mat[coun_obj_mat_arr] = Trans.GetComponent<MeshRenderer>().sharedMaterials[i];
|
||||
coun_obj_mat_arr++;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
foreach (Material Mat in Mat)
|
||||
{
|
||||
if (Mat != null)
|
||||
{
|
||||
Set_Shad_Prop(Mat);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
void Set_Shad_Prop(Material Mat)
|
||||
{
|
||||
if (Mat.IsKeywordEnabled("N_F_PA_ON") == true)
|
||||
{
|
||||
Mat.SetFloat("_PresAdju", Perspective);
|
||||
Mat.SetFloat("_ClipAdju", Clip);
|
||||
Mat.SetFloat("_PASize", CloseUpSize);
|
||||
Mat.SetFloat("_PASmooTrans", CloseUpSizeSmoothTransition);
|
||||
Mat.SetFloat("_PADist", CloseUpSizeDistance);
|
||||
Mat.SetFloat("_ObjePosiZCS", ObjectPositionZ);
|
||||
}
|
||||
else if (Mat.IsKeywordEnabled("N_F_PA_ON") != true)
|
||||
{
|
||||
Mat.EnableKeyword("N_F_PA_ON");
|
||||
Mat.SetInt("_N_F_PA", 1);
|
||||
}
|
||||
}
|
||||
|
||||
void Res_Shad_Prop()
|
||||
{
|
||||
Perspective = 1.0f;
|
||||
Clip = 0.0f;
|
||||
CloseUpSize = 0.0f;
|
||||
CloseUpSizeSmoothTransition = 1.0f;
|
||||
CloseUpSizeDistance = 0.0f;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
@@ -0,0 +1,9 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 257798aae5c4052419047b7e5983c391
|
||||
AssetOrigin:
|
||||
serializedVersion: 1
|
||||
productId: 65518
|
||||
packageName: RealToon (Pro Anime/Toon Shader)
|
||||
packageVersion: 5.0.15
|
||||
assetPath: Assets/RealToon/RealToon Tools/PerspectiveAdjustmentController.cs
|
||||
uploadId: 889742
|
||||
192
Assets/RealToon/RealToon Tools/ShadowTSDFModeHelper.cs
Normal file
192
Assets/RealToon/RealToon Tools/ShadowTSDFModeHelper.cs
Normal file
@@ -0,0 +1,192 @@
|
||||
//RealToon - ShadowT SDF Mode [Helper]
|
||||
//©MJQStudioWorks
|
||||
|
||||
using System.Collections;
|
||||
using System.Collections.Generic;
|
||||
using UnityEditor;
|
||||
using UnityEngine;
|
||||
using UnityEngine.UI;
|
||||
|
||||
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]
|
||||
public Texture2D SDFTexture = null;
|
||||
|
||||
[SerializeField]
|
||||
[Tooltip("The amount of light.")]
|
||||
float LightThreshold = 200.0f;
|
||||
|
||||
[SerializeField]
|
||||
[Tooltip("How hard/soft the shadow.")]
|
||||
float Hardness = 1.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;
|
||||
|
||||
[Space(10)]
|
||||
|
||||
[SerializeField]
|
||||
[Tooltip("Enable/Disable Self Shadow feature.")]
|
||||
bool SelfShadow = false;
|
||||
|
||||
[Space(10)]
|
||||
|
||||
[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);
|
||||
Material.SetFloat("_ShadowTHardness", Hardness);
|
||||
|
||||
switch(ForwardInverted)
|
||||
{
|
||||
case true:
|
||||
Material.SetVector("_ObjectForward", -ObjectToFollow.transform.forward);
|
||||
break;
|
||||
|
||||
case false:
|
||||
Material.SetVector("_ObjectForward", ObjectToFollow.transform.forward);
|
||||
break;
|
||||
}
|
||||
|
||||
switch (RightInverted)
|
||||
{
|
||||
case true:
|
||||
Material.SetVector("_ObjectRight", -ObjectToFollow.transform.right);
|
||||
break;
|
||||
|
||||
case false:
|
||||
Material.SetVector("_ObjectRight", ObjectToFollow.transform.right);
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
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);
|
||||
|
||||
if(Material.IsKeywordEnabled("N_F_ST_ON") == true)
|
||||
{
|
||||
SelfShadow = true;
|
||||
}
|
||||
else if(Material.IsKeywordEnabled("N_F_ST_ON") == false)
|
||||
{
|
||||
SelfShadow = false;
|
||||
}
|
||||
|
||||
checkstart = false;
|
||||
}
|
||||
}
|
||||
{
|
||||
if (Material.GetTexture("_ShadowT") != null ||
|
||||
Material.GetTexture("_ShadowT") == null)
|
||||
{
|
||||
Material.SetTexture("_ShadowT", SDFTexture);
|
||||
}
|
||||
|
||||
switch (SelfShadow)
|
||||
{
|
||||
case true:
|
||||
Material.EnableKeyword("N_F_SS_ON");
|
||||
Material.SetFloat("_N_F_SS", 1.0f);
|
||||
break;
|
||||
case false:
|
||||
Material.DisableKeyword("N_F_SS_ON");
|
||||
Material.SetFloat("_N_F_SS", 0.0f);
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void Reset()
|
||||
{
|
||||
Material = null;
|
||||
ObjectToFollow = null;
|
||||
checkstart = true;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
@@ -0,0 +1,9 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 94b1292d6eecd6b489a2afd078000520
|
||||
AssetOrigin:
|
||||
serializedVersion: 1
|
||||
productId: 65518
|
||||
packageName: RealToon (Pro Anime/Toon Shader)
|
||||
packageVersion: 5.0.15
|
||||
assetPath: Assets/RealToon/RealToon Tools/ShadowTSDFModeHelper.cs
|
||||
uploadId: 889742
|
||||
314
Assets/RealToon/RealToon Tools/SmearEffectHelper.cs
Normal file
314
Assets/RealToon/RealToon Tools/SmearEffectHelper.cs
Normal file
@@ -0,0 +1,314 @@
|
||||
//RealToon - Smear Effect [Helper]
|
||||
//©MJQStudioWorks
|
||||
|
||||
using UnityEngine;
|
||||
using System.Collections.Generic;
|
||||
|
||||
namespace RealToon.Script
|
||||
{
|
||||
|
||||
[ExecuteAlways]
|
||||
[AddComponentMenu("RealToon/Tools/Smear Effect - Helper")]
|
||||
|
||||
public class SmearEffectHelper : MonoBehaviour
|
||||
{
|
||||
Queue<Vector3> recentPositions = new Queue<Vector3>();
|
||||
|
||||
[HideInInspector]
|
||||
[SerializeField]
|
||||
Transform[] SubTran;
|
||||
|
||||
[HideInInspector]
|
||||
[SerializeField]
|
||||
Material[] Mat;
|
||||
|
||||
[HideInInspector]
|
||||
[SerializeField]
|
||||
Transform[] attac;
|
||||
|
||||
[Header("Note: Smear Effect feature will be automatically enable\nOn the materials of the object/model that uses RealToon Shader.")]
|
||||
|
||||
[Space(25)]
|
||||
|
||||
[SerializeField]
|
||||
[Tooltip("An object to control the smear effect.")]
|
||||
public Transform SmearController;
|
||||
|
||||
[Space(10)]
|
||||
|
||||
[SerializeField]
|
||||
[Tooltip("How long the distorted line trails stays on the previous position.")]
|
||||
int Delay = 15;
|
||||
|
||||
[SerializeField]
|
||||
[Tooltip("How large/small the trailing noise.")]
|
||||
float NoiseSize = 100;
|
||||
|
||||
[SerializeField]
|
||||
[Tooltip("How tall/short the trailing noise.")]
|
||||
float TrailSize = 1.5f;
|
||||
|
||||
[Space(10)]
|
||||
|
||||
[SerializeField]
|
||||
[Tooltip("Pause the current smear effect.")]
|
||||
bool PauseSmear = false;
|
||||
|
||||
int coun_obj_wi_ralsha = 0;
|
||||
int coun_obj_mat = 0;
|
||||
int coun_obj_mat_arr = 0;
|
||||
|
||||
[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";
|
||||
|
||||
void Start()
|
||||
{
|
||||
if (checkstart == true)
|
||||
{
|
||||
InitStart();
|
||||
checkstart = false;
|
||||
}
|
||||
}
|
||||
|
||||
void LateUpdate()
|
||||
{
|
||||
if (SmearController != null)
|
||||
{
|
||||
if (PauseSmear != true)
|
||||
{
|
||||
if (Mat != null)
|
||||
{
|
||||
foreach (Material mate in Mat)
|
||||
{
|
||||
if (mate != null)
|
||||
{
|
||||
mate.SetVector("_ObjPosi", SmearController.position);
|
||||
recentPositions.Enqueue(SmearController.position);
|
||||
|
||||
if (recentPositions.Count > Delay)
|
||||
mate.SetVector("_PrevPosition", recentPositions.Dequeue());
|
||||
|
||||
Set_Shad_Prop(mate);
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
void Reset()
|
||||
{
|
||||
if (Mat != null)
|
||||
{
|
||||
foreach (Material mate in Mat)
|
||||
{
|
||||
if (mate != null)
|
||||
{
|
||||
mate.SetVector("_ObjPosi", new Vector4(0, 0, 0, 0));
|
||||
mate.SetVector("_PrevPosition", new Vector4(0, 0, 0, 0));
|
||||
}
|
||||
}
|
||||
recentPositions.Dequeue();
|
||||
recentPositions.Clear();
|
||||
checkstart = true;
|
||||
coun_obj_wi_ralsha = 0;
|
||||
coun_obj_mat = 0;
|
||||
coun_obj_mat_arr = 0;
|
||||
Res_Shad_Prop();
|
||||
InitStart();
|
||||
checkstart = false;
|
||||
}
|
||||
}
|
||||
|
||||
void OnDisable()
|
||||
{
|
||||
recentPositions.Dequeue();
|
||||
foreach (Material mate in Mat)
|
||||
{
|
||||
if (mate != null)
|
||||
{
|
||||
mate.SetVector("_ObjPosi", new Vector4(0, 0, 0, 0));
|
||||
mate.SetVector("_PrevPosition", new Vector4(0, 0, 0, 0));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/* Remove Later
|
||||
void OnDestroy()
|
||||
{
|
||||
recentPositions.Clear();
|
||||
Res_Shad_Prop();
|
||||
foreach (Material Mate in Mat)
|
||||
{
|
||||
if (Mate != null)
|
||||
{
|
||||
if (Mate.shader.name == RT_Sha_Nam_URP || Mate.shader.name == RT_Sha_Nam_HDRP)
|
||||
{
|
||||
Mate.SetVector("_ObjPosi", new Vector4(0, 0, 0, 0));
|
||||
Mate.SetVector("_PrevPosition", new Vector4(0, 0, 0, 0));
|
||||
Mate.SetFloat("_N_F_SE", 0.0f);
|
||||
Mate.DisableKeyword("N_F_SE_ON");
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
*/
|
||||
|
||||
#region Init
|
||||
|
||||
void InitStart()
|
||||
{
|
||||
if (attac == null || attac.Length == 0)
|
||||
{
|
||||
attac = this.gameObject.GetComponentsInChildren<Transform>();
|
||||
}
|
||||
|
||||
if (SmearController == null)
|
||||
{
|
||||
SmearController = this.gameObject.transform;
|
||||
}
|
||||
|
||||
int x = 0;
|
||||
foreach (Transform Trans in attac)
|
||||
{
|
||||
|
||||
if (Trans.GetComponent<SkinnedMeshRenderer>() == true)
|
||||
{
|
||||
if (Trans.GetComponent<SkinnedMeshRenderer>().sharedMaterial != null)
|
||||
{
|
||||
if (Trans.GetComponent<SkinnedMeshRenderer>().sharedMaterial.shader.name == RT_Sha_Nam_URP || Trans.GetComponent<SkinnedMeshRenderer>().sharedMaterial.shader.name == RT_Sha_Nam_HDRP)
|
||||
{
|
||||
coun_obj_wi_ralsha++;
|
||||
coun_obj_mat += Trans.GetComponent<SkinnedMeshRenderer>().sharedMaterials.Length;
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
if (Trans.GetComponent<MeshRenderer>() == true)
|
||||
{
|
||||
if (Trans.GetComponent<MeshRenderer>().sharedMaterial != null)
|
||||
{
|
||||
if (Trans.GetComponent<MeshRenderer>().sharedMaterial.shader.name == RT_Sha_Nam_URP || Trans.GetComponent<MeshRenderer>().sharedMaterial.shader.name == RT_Sha_Nam_HDRP)
|
||||
{
|
||||
coun_obj_wi_ralsha++;
|
||||
coun_obj_mat += Trans.GetComponent<MeshRenderer>().sharedMaterials.Length;
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
SubTran = new Transform[coun_obj_wi_ralsha];
|
||||
|
||||
foreach (Transform Trans in attac)
|
||||
{
|
||||
if (Trans.GetComponent<SkinnedMeshRenderer>() == true)
|
||||
{
|
||||
if (Trans.GetComponent<SkinnedMeshRenderer>().sharedMaterial != null)
|
||||
{
|
||||
if (Trans.GetComponent<SkinnedMeshRenderer>().sharedMaterial.shader.name == RT_Sha_Nam_URP || Trans.GetComponent<SkinnedMeshRenderer>().sharedMaterial.shader.name == RT_Sha_Nam_HDRP)
|
||||
{
|
||||
SubTran[x] = Trans;
|
||||
x++;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
if (Trans.GetComponent<MeshRenderer>() == true)
|
||||
{
|
||||
if (Trans.GetComponent<MeshRenderer>().sharedMaterial != null)
|
||||
{
|
||||
if (Trans.GetComponent<MeshRenderer>().sharedMaterial.shader.name == RT_Sha_Nam_URP || Trans.GetComponent<MeshRenderer>().sharedMaterial.shader.name == RT_Sha_Nam_HDRP)
|
||||
{
|
||||
SubTran[x] = Trans;
|
||||
x++;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Mat = new Material[coun_obj_mat];
|
||||
|
||||
|
||||
foreach (Transform Trans in SubTran)
|
||||
{
|
||||
if (Trans.GetComponent<SkinnedMeshRenderer>() == true)
|
||||
{
|
||||
if (Trans.GetComponent<SkinnedMeshRenderer>().sharedMaterial != null)
|
||||
{
|
||||
if (Trans.GetComponent<SkinnedMeshRenderer>().sharedMaterial.shader.name == RT_Sha_Nam_URP || Trans.GetComponent<SkinnedMeshRenderer>().sharedMaterial.shader.name == RT_Sha_Nam_HDRP)
|
||||
{
|
||||
for (int i = 0; i < Trans.GetComponent<SkinnedMeshRenderer>().sharedMaterials.Length; i++)
|
||||
{
|
||||
Mat[coun_obj_mat_arr] = Trans.GetComponent<SkinnedMeshRenderer>().sharedMaterials[i];
|
||||
coun_obj_mat_arr++;
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
if (Trans.GetComponent<MeshRenderer>() == true)
|
||||
{
|
||||
if (Trans.GetComponent<MeshRenderer>().sharedMaterial != null)
|
||||
{
|
||||
if (Trans.GetComponent<MeshRenderer>().sharedMaterial.shader.name == RT_Sha_Nam_URP || Trans.GetComponent<MeshRenderer>().sharedMaterial.shader.name == RT_Sha_Nam_HDRP)
|
||||
{
|
||||
|
||||
for (int i = 0; i < Trans.GetComponent<MeshRenderer>().sharedMaterials.Length; i++)
|
||||
{
|
||||
Mat[coun_obj_mat_arr] = Trans.GetComponent<MeshRenderer>().sharedMaterials[i];
|
||||
coun_obj_mat_arr++;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
foreach (Material Mat in Mat)
|
||||
{
|
||||
if (Mat != null)
|
||||
{
|
||||
Set_Shad_Prop(Mat);
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
void Set_Shad_Prop(Material Mat)
|
||||
{
|
||||
if (Mat.IsKeywordEnabled("N_F_SE_ON") == true)
|
||||
{
|
||||
Mat.SetFloat("_NoiseSize", NoiseSize);
|
||||
Mat.SetFloat("_TrailSize", TrailSize);
|
||||
}
|
||||
else if (Mat.IsKeywordEnabled("N_F_SE_ON") != true)
|
||||
{
|
||||
Mat.EnableKeyword("N_F_SE_ON");
|
||||
Mat.SetInt("_N_F_SE", 1);
|
||||
}
|
||||
}
|
||||
void Res_Shad_Prop()
|
||||
{
|
||||
NoiseSize = 100;
|
||||
TrailSize = 1.5f;
|
||||
Delay = 15;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
9
Assets/RealToon/RealToon Tools/SmearEffectHelper.cs.meta
Normal file
9
Assets/RealToon/RealToon Tools/SmearEffectHelper.cs.meta
Normal file
@@ -0,0 +1,9 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 9b8a89bf5e3673342a090796bba2a357
|
||||
AssetOrigin:
|
||||
serializedVersion: 1
|
||||
productId: 65518
|
||||
packageName: RealToon (Pro Anime/Toon Shader)
|
||||
packageVersion: 5.0.15
|
||||
assetPath: Assets/RealToon/RealToon Tools/SmearEffectHelper.cs
|
||||
uploadId: 889742
|
||||
128
Assets/RealToon/RealToon Tools/SmoothObjectNormalHelper.cs
Normal file
128
Assets/RealToon/RealToon Tools/SmoothObjectNormalHelper.cs
Normal file
@@ -0,0 +1,128 @@
|
||||
//RealToon - SmoothObjectNomal [Helper]
|
||||
//©MJQStudioWorks
|
||||
|
||||
using UnityEngine;
|
||||
|
||||
namespace RealToon.Script
|
||||
{
|
||||
[ExecuteAlways]
|
||||
[AddComponentMenu("RealToon/Tools/Smooth Object Normal - Helper")]
|
||||
public class SmoothObjectNormalHelper : MonoBehaviour
|
||||
{
|
||||
[Header("Note: Smooth Object Normal feature will be automatically enable\nWhen you put a material that uses RealToon Shader on the Material slot.")]
|
||||
|
||||
[Space(25)]
|
||||
|
||||
[SerializeField]
|
||||
[Range(0f, 1f)]
|
||||
[Tooltip("The amount of Smoothed Object Normal.")]
|
||||
public float Intensity = 0;
|
||||
|
||||
[Space(10)]
|
||||
[SerializeField]
|
||||
[Tooltip("A material that uses 'RealToon - Smooth Object Normal' feature.")]
|
||||
public Material Material = null;
|
||||
|
||||
[SerializeField]
|
||||
[Tooltip("An object to follow the position.")]
|
||||
public Transform ObjectToFollow = null;
|
||||
|
||||
[Space(10)]
|
||||
[SerializeField]
|
||||
[Tooltip("Show object normal.")]
|
||||
public bool ShowNormal = 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";
|
||||
|
||||
string RT_Sha_Nam_BiRP_LD = "RealToon/Version 5/Lite/Default";
|
||||
string RT_Sha_Nam_BiRP_LFT = "RealToon/Version 5/Lite/Fade Transparency";
|
||||
|
||||
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.shader.name == RT_Sha_Nam_BiRP_LD ||
|
||||
Material.shader.name == RT_Sha_Nam_BiRP_LFT)
|
||||
{
|
||||
Vector3 ObjPos = ObjectToFollow.gameObject.transform.position;
|
||||
Material.SetVector("_XYZPosition", ObjPos);
|
||||
Material.SetFloat("_SmoothObjectNormal", Intensity);
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
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 ||
|
||||
Material.shader.name == RT_Sha_Nam_BiRP_LD ||
|
||||
Material.shader.name == RT_Sha_Nam_BiRP_LFT)
|
||||
{
|
||||
if (checkstart == true)
|
||||
{
|
||||
if (Material.IsKeywordEnabled("N_F_SON_ON") == false)
|
||||
{
|
||||
Material.EnableKeyword("N_F_SON_ON");
|
||||
Material.SetFloat("_N_F_SON", 1.0f);
|
||||
checkstart = false;
|
||||
}
|
||||
}
|
||||
|
||||
switch(ShowNormal)
|
||||
{
|
||||
case true:
|
||||
Material.SetFloat("_ShowNormal", 1.0f);
|
||||
break;
|
||||
case false:
|
||||
Material.SetFloat("_ShowNormal", 0.0f);
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void Reset()
|
||||
{
|
||||
Material = null;
|
||||
ObjectToFollow = null;
|
||||
checkstart = true;
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,18 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 81bb1f0a42687e64bbbb9942add38b86
|
||||
MonoImporter:
|
||||
externalObjects: {}
|
||||
serializedVersion: 2
|
||||
defaultReferences: []
|
||||
executionOrder: 0
|
||||
icon: {instanceID: 0}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
AssetOrigin:
|
||||
serializedVersion: 1
|
||||
productId: 65518
|
||||
packageName: RealToon (Pro Anime/Toon Shader)
|
||||
packageVersion: 5.0.15
|
||||
assetPath: Assets/RealToon/RealToon Tools/SmoothObjectNormalHelper.cs
|
||||
uploadId: 889742
|
||||
Reference in New Issue
Block a user