阶段性完成
This commit is contained in:
233
Assets/Shaders/PandaVFX/Editor/PandavfxGUI.Fresnel.cs
Normal file
233
Assets/Shaders/PandaVFX/Editor/PandavfxGUI.Fresnel.cs
Normal file
@@ -0,0 +1,233 @@
|
||||
// -----------------------------------------------------------------------
|
||||
// This file is part of PandaShader VFXGUI.
|
||||
//
|
||||
// (c) sunhainan (2022/11/28 14:45:31)
|
||||
//
|
||||
// For the full copyright and license information, please view the LICENSE
|
||||
// file that was distributed with this source code.
|
||||
// -----------------------------------------------------------------------
|
||||
|
||||
using System.Collections;
|
||||
using System.Collections.Generic;
|
||||
using UnityEditor;
|
||||
using UnityEngine;
|
||||
|
||||
namespace Yoka.MGame.PandaShader
|
||||
{
|
||||
public partial class PandavfxGUI
|
||||
{
|
||||
//菲尼尔
|
||||
private MaterialProperty Fnl_Scale = null;
|
||||
private MaterialProperty Fnl_Power = null;
|
||||
private MaterialProperty Fnl_Color = null;
|
||||
private MaterialProperty Fnl_Soft = null;
|
||||
private MaterialProperty Dir = null;
|
||||
private MaterialProperty IfFNLAlpha = null;
|
||||
|
||||
void OnGUIFresnel(Material material)
|
||||
{
|
||||
//FNL下拉菜单
|
||||
if (material.GetFloat("_fnl_sacle") != 0)
|
||||
{
|
||||
EditorGUILayout.BeginVertical(EditorStyles.helpBox);
|
||||
_FNL_Foldout = Foldout(_FNL_Foldout, "菲尼尔效果(Fresnel)");
|
||||
|
||||
if (_FNL_Foldout)
|
||||
{
|
||||
EditorGUI.indentLevel++;
|
||||
GUIFresnel(material);
|
||||
EditorGUI.indentLevel--;
|
||||
}
|
||||
|
||||
EditorGUILayout.EndVertical();
|
||||
}
|
||||
else if (material.GetFloat("_FNLfanxiangkaiguan") != 0)
|
||||
{
|
||||
EditorGUILayout.BeginVertical(EditorStyles.helpBox);
|
||||
_FNL_Foldout = Foldout(_FNL_Foldout, "菲尼尔效果(Fresnel)");
|
||||
|
||||
if (_FNL_Foldout)
|
||||
{
|
||||
EditorGUI.indentLevel++;
|
||||
GUIFresnel(material);
|
||||
EditorGUI.indentLevel--;
|
||||
}
|
||||
|
||||
EditorGUILayout.EndVertical();
|
||||
}
|
||||
else
|
||||
{
|
||||
EditorGUILayout.BeginVertical(EditorStyles.helpBox);
|
||||
_FNL_Foldout = Foldout2(_FNL_Foldout, "菲尼尔效果(Fresnel)");
|
||||
|
||||
if (_FNL_Foldout)
|
||||
{
|
||||
EditorGUI.indentLevel++;
|
||||
GUIFresnel(material);
|
||||
EditorGUI.indentLevel--;
|
||||
}
|
||||
|
||||
EditorGUILayout.EndVertical();
|
||||
}
|
||||
}
|
||||
|
||||
//Fresnel内容
|
||||
void GUIFresnel(Material material)
|
||||
{
|
||||
EditorGUILayout.BeginVertical(EditorStyles.helpBox);
|
||||
|
||||
EditorGUILayout.BeginVertical(EditorStyles.helpBox);
|
||||
|
||||
EditorGUILayout.BeginHorizontal();
|
||||
|
||||
EditorGUILayout.PrefixLabel("反向菲尼尔");
|
||||
|
||||
if (material.GetFloat("_FNLfanxiangkaiguan") == 0)
|
||||
{
|
||||
if (GUILayout.Button("已关闭", shortButtonStyle))
|
||||
{
|
||||
material.SetFloat("_FNLfanxiangkaiguan", 1);
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
if (GUILayout.Button("已开启", shortButtonStyle))
|
||||
{
|
||||
material.SetFloat("_FNLfanxiangkaiguan", 0);
|
||||
}
|
||||
}
|
||||
|
||||
EditorGUILayout.EndHorizontal();
|
||||
if (_tips == true)
|
||||
{
|
||||
EditorGUILayout.BeginVertical(EditorStyles.helpBox);
|
||||
style.fontSize = 10;
|
||||
style.normal.textColor = new Color(0.5f, 0.5f, 0.5f);
|
||||
GUILayout.Label("*反向菲尼尔后可以软化模型边缘,减少特效的模型感", style);
|
||||
EditorGUILayout.EndVertical();
|
||||
}
|
||||
|
||||
if (material.GetFloat("_FNLfanxiangkaiguan") == 1)
|
||||
{
|
||||
GUILayout.Space(5);
|
||||
m_MaterialEditor.ShaderProperty(Fnl_Soft, "模型软化程度");
|
||||
if (_tips == true)
|
||||
{
|
||||
EditorGUILayout.BeginVertical(EditorStyles.helpBox);
|
||||
style.fontSize = 10;
|
||||
style.normal.textColor = new Color(0.5f, 0.5f, 0.5f);
|
||||
GUILayout.Label("*软化程度越高,模型边缘剔除越多,模型感越弱", style);
|
||||
EditorGUILayout.EndVertical();
|
||||
}
|
||||
|
||||
GUILayout.Space(5);
|
||||
|
||||
/*
|
||||
EditorGUILayout.BeginHorizontal();
|
||||
|
||||
EditorGUILayout.PrefixLabel("软化剔除背面");
|
||||
|
||||
if (material.GetFloat("_softback") == 0)
|
||||
{
|
||||
if (GUILayout.Button("已关闭", shortButtonStyle))
|
||||
{
|
||||
material.SetFloat("_softback", 1);
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
if (GUILayout.Button("已开启", shortButtonStyle))
|
||||
{
|
||||
material.SetFloat("_softback", 0);
|
||||
}
|
||||
}
|
||||
|
||||
EditorGUILayout.EndHorizontal();
|
||||
if (_tips == true)
|
||||
{
|
||||
EditorGUILayout.BeginVertical(EditorStyles.helpBox);
|
||||
style.fontSize = 10;
|
||||
style.normal.textColor = new Color(0.5f, 0.5f, 0.5f);
|
||||
GUILayout.Label("*反向菲尼尔直接剔除掉背面,在开启菲尼尔颜色时,模型边缘容易破面,此选项可以一定程度减少破面,一般不用开启", style);
|
||||
EditorGUILayout.EndVertical();
|
||||
}
|
||||
|
||||
GUILayout.Space(5);
|
||||
*/
|
||||
}
|
||||
|
||||
if (material.GetFloat("_FNLfanxiangkaiguan") == 0)
|
||||
{
|
||||
material.SetFloat("_softFacotr", 0);
|
||||
}
|
||||
|
||||
EditorGUILayout.EndVertical();
|
||||
|
||||
EditorGUILayout.BeginVertical(EditorStyles.helpBox);
|
||||
|
||||
m_MaterialEditor.ShaderProperty(IfFNLAlpha, "影响透明通道");
|
||||
if (_tips == true)
|
||||
{
|
||||
EditorGUILayout.BeginVertical(EditorStyles.helpBox);
|
||||
style.fontSize = 10;
|
||||
style.normal.textColor = new Color(0.5f, 0.5f, 0.5f);
|
||||
GUILayout.Label("*开启后菲尼尔的数值会乘在透明通道上", style);
|
||||
EditorGUILayout.EndVertical();
|
||||
}
|
||||
|
||||
GUILayout.Space(5);
|
||||
m_MaterialEditor.ShaderProperty(Fnl_Color, "菲尼尔颜色");
|
||||
if (_tips == true)
|
||||
{
|
||||
EditorGUILayout.BeginVertical(EditorStyles.helpBox);
|
||||
style.fontSize = 10;
|
||||
style.normal.textColor = new Color(0.5f, 0.5f, 0.5f);
|
||||
GUILayout.Label("*菲尼尔的叠加颜色", style);
|
||||
EditorGUILayout.EndVertical();
|
||||
}
|
||||
|
||||
GUILayout.Space(5);
|
||||
|
||||
m_MaterialEditor.ShaderProperty(Fnl_Scale, "菲尼尔强度");
|
||||
if (_tips == true)
|
||||
{
|
||||
EditorGUILayout.BeginVertical(EditorStyles.helpBox);
|
||||
style.fontSize = 10;
|
||||
style.normal.textColor = new Color(0.5f, 0.5f, 0.5f);
|
||||
GUILayout.Label("*菲尼尔的强度,颜色里也可以调强度,这里增加这个参数是为了方便k帧", style);
|
||||
EditorGUILayout.EndVertical();
|
||||
}
|
||||
|
||||
GUILayout.Space(5);
|
||||
|
||||
m_MaterialEditor.ShaderProperty(Fnl_Power, "菲尼尔锐化");
|
||||
if (_tips == true)
|
||||
{
|
||||
EditorGUILayout.BeginVertical(EditorStyles.helpBox);
|
||||
style.fontSize = 10;
|
||||
style.normal.textColor = new Color(0.5f, 0.5f, 0.5f);
|
||||
GUILayout.Label("*菲尼尔的PowerExp值,使菲尼尔效果更加锐利", style);
|
||||
EditorGUILayout.EndVertical();
|
||||
}
|
||||
|
||||
GUILayout.Space(5);
|
||||
|
||||
EditorGUILayout.EndVertical();
|
||||
|
||||
EditorGUILayout.EndVertical();
|
||||
|
||||
GUILayout.Space(5);
|
||||
}
|
||||
|
||||
void FindPropertiesFresnel(MaterialProperty[] props)
|
||||
{
|
||||
//菲尼尔
|
||||
Fnl_Color = FindProperty("_fnl_color", props);
|
||||
Fnl_Scale = FindProperty("_fnl_sacle", props);
|
||||
Fnl_Power = FindProperty("_fnl_power", props);
|
||||
Fnl_Soft = FindProperty("_softFacotr", props);
|
||||
Dir = FindProperty("_Dir", props);
|
||||
IfFNLAlpha = FindProperty("_IfFNLAlpha", props);
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user