Ultraworked with [Sisyphus](https://github.com/code-yeonggu/oh-my-opencode) Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai>
205 lines
7.1 KiB
C#
205 lines
7.1 KiB
C#
using UnityEditor;
|
|
|
|
public class PolygonShaderGUI : ShaderGUI
|
|
{
|
|
private bool _showBaseTexture = false;
|
|
private bool _showOverlayTexture = false;
|
|
private bool _showAlphaTexture = false;
|
|
private bool _showNormalTexture = false;
|
|
private bool _showTriplanar = false;
|
|
private bool _showNormalTriplanar = false;
|
|
private bool _showEmissionTexture = false;
|
|
private bool _showSnow = false;
|
|
private bool _showWave = false;
|
|
|
|
private bool CreatePropertyGroup(string title, string[] groupProperties, bool foldout, MaterialEditor materialEditor, MaterialProperty[] allProperties)
|
|
{
|
|
foldout = EditorGUILayout.BeginFoldoutHeaderGroup(foldout, title);
|
|
if (foldout)
|
|
{
|
|
foreach (string property in groupProperties)
|
|
{
|
|
MaterialProperty propertyReference = FindProperty(property, allProperties);
|
|
materialEditor.ShaderProperty(propertyReference, propertyReference.displayName, 1);
|
|
}
|
|
}
|
|
EditorGUILayout.EndFoldoutHeaderGroup();
|
|
return foldout;
|
|
}
|
|
|
|
override public void OnGUI(MaterialEditor materialEditor, MaterialProperty[] properties)
|
|
{
|
|
EditorGUILayout.LabelField("Basic Parameters", EditorStyles.boldLabel);
|
|
|
|
// Ungrouped Basic Parameters
|
|
string[] shaderProperties =
|
|
{
|
|
"_Color_Tint",
|
|
"_Metallic",
|
|
"_Smoothness",
|
|
"_Metallic_Smoothness_Texture",
|
|
"_Ambient_Occlusion",
|
|
"_Specular_Color",
|
|
"_Alpha_Transparency"
|
|
};
|
|
|
|
foreach (string property in shaderProperties)
|
|
{
|
|
MaterialProperty propertyReference = FindProperty(property, properties);
|
|
materialEditor.ShaderProperty(propertyReference, propertyReference.displayName, 0);
|
|
}
|
|
|
|
EditorGUILayout.Separator();
|
|
|
|
// Base Texture Parameters
|
|
shaderProperties = new[]
|
|
{
|
|
"_Enable_Base_Texture",
|
|
"_Base_Texture",
|
|
"_Base_Tiling",
|
|
"_Base_Offset"
|
|
};
|
|
|
|
_showBaseTexture = CreatePropertyGroup("Base Texture", shaderProperties, _showBaseTexture, materialEditor, properties);
|
|
|
|
// Alpha Texture Parameters
|
|
shaderProperties = new[]
|
|
{
|
|
"_Enable_Alpha_Texture",
|
|
"_Alpha_Texture",
|
|
"_Alpha_Tiling",
|
|
"_Alpha_Offset"
|
|
};
|
|
|
|
_showAlphaTexture = CreatePropertyGroup("Alpha Texture", shaderProperties, _showAlphaTexture, materialEditor, properties);
|
|
|
|
// Normal Texture Parameters
|
|
shaderProperties = new[]
|
|
{
|
|
"_Enable_Normal_Texture",
|
|
"_Normal_Texture",
|
|
"_Normal_Tiling",
|
|
"_Normal_Offset"
|
|
};
|
|
|
|
_showNormalTexture = CreatePropertyGroup("Normal Texture", shaderProperties, _showNormalTexture, materialEditor, properties);
|
|
|
|
// Emission Texture Parameters
|
|
shaderProperties = new[]
|
|
{
|
|
"_Enable_Emission_Texture",
|
|
"_Emission_Texture",
|
|
"_Emission_Tiling",
|
|
"_Emission_Offset"
|
|
};
|
|
|
|
_showEmissionTexture = CreatePropertyGroup("Emission Texture", shaderProperties, _showEmissionTexture, materialEditor, properties);
|
|
|
|
EditorGUILayout.Separator();
|
|
|
|
EditorGUILayout.LabelField("Advanced Parameters", EditorStyles.boldLabel);
|
|
|
|
// Overlay Texture Parameters
|
|
shaderProperties = new[]
|
|
{
|
|
"_Enable_Overlay_Texture",
|
|
"_Overlay_Texture",
|
|
"_Overlay_Tiling",
|
|
"_Overlay_Offset",
|
|
"_OVERLAY_UV_CHANNEL",
|
|
"_Overlay_Intensity"
|
|
};
|
|
|
|
_showOverlayTexture = CreatePropertyGroup("Overlay Texture", shaderProperties, _showOverlayTexture, materialEditor, properties);
|
|
|
|
// Triplanar Texture Parameters
|
|
shaderProperties = new[]
|
|
{
|
|
"_Enable_Triplanar_Texture",
|
|
"_Triplanar_Texture_Top",
|
|
"_Triplanar_Tiling_Top",
|
|
"_Triplanar_Offset_Top",
|
|
"_Triplanar_Texture_Bottom",
|
|
"_Triplanar_Tiling_Bottom",
|
|
"_Triplanar_Offset_Bottom",
|
|
"_Triplanar_Texture_Side",
|
|
"_Triplanar_Tiling_Side",
|
|
"_Triplanar_Offset_Side",
|
|
"_Triplanar_Top_To_Side_Difference",
|
|
"_Triplanar_Fade", "_Triplanar_Intensity"
|
|
};
|
|
|
|
_showTriplanar = CreatePropertyGroup("Triplanar Texture", shaderProperties, _showTriplanar, materialEditor, properties);
|
|
|
|
// Triplanar Normal Texture Parameters
|
|
shaderProperties = new[]
|
|
{
|
|
"_Enable_Triplanar_Normals",
|
|
"_Triplanar_Normal_Texture_Top",
|
|
"_Triplanar_Normal_Intensity_Top",
|
|
"_Triplanar_Normal_Tiling_Top",
|
|
"_Triplanar_Normal_Offset_Top",
|
|
"_Triplanar_Normal_Texture_Bottom",
|
|
"_Triplanar_Normal_Intensity_Bottom",
|
|
"_Triplanar_Normal_Tiling_Bottom",
|
|
"_Triplanar_Normal_Offset_Bottom",
|
|
"_Triplanar_Normal_Texture_Side",
|
|
"_Triplanar_Normal_Intensity_Side",
|
|
"_Triplanar_Normal_Tiling_Side",
|
|
"_Triplanar_Normal_Offset_Side",
|
|
"_Triplanar_Normal_Top_To_Side_Difference",
|
|
"_Triplanar_Normal_Fade"
|
|
};
|
|
|
|
_showNormalTriplanar = CreatePropertyGroup("Triplanar Normal Texture", shaderProperties, _showNormalTriplanar, materialEditor, properties);
|
|
|
|
// Snow Parameters
|
|
shaderProperties = new[]
|
|
{
|
|
"_Enable_Snow",
|
|
"_Snow_Metallic",
|
|
"_Snow_Smoothness",
|
|
"_Snow_Level",
|
|
"_Snow_Transition",
|
|
"_Snow_Transition_Threshold",
|
|
"_Snow_Transition_Threshold_Steps",
|
|
"_Snow_Transition_Threshold_Step_Count",
|
|
"_Snow_Angle_Threshold",
|
|
"_Snow_Color",
|
|
"_Sea_Level",
|
|
"_Snow_Edge_Noise",
|
|
"_Snow_Noise_Tiling",
|
|
"_Snow_Noise_Offset",
|
|
"_Snow_Noise_Fade",
|
|
"_Snow_Noise_Top_To_Side_Difference",
|
|
"_Snow_Normal_Texture",
|
|
"_Snow_Overrides_Normals",
|
|
"_Snow_Normal_Intensity",
|
|
"_Snow_Normal_Tiling",
|
|
"_Snow_Normal_Offset",
|
|
"_Snow_Normal_Fade",
|
|
"_Snow_Metallic_Smoothness_Texture",
|
|
"_Snow_Metallic_Smoothness_Tiling",
|
|
"_Snow_Metallic_Smoothness_Offset"
|
|
};
|
|
|
|
_showSnow = CreatePropertyGroup("Snow", shaderProperties, _showSnow, materialEditor, properties);
|
|
|
|
// Wave Parameters
|
|
shaderProperties = new[]
|
|
{
|
|
"_Enable_Wave",
|
|
"_Wave_Direction_Vector",
|
|
"_Wave_Scale",
|
|
"_Wave_Noise_Tiling",
|
|
"_Wave_Speed",
|
|
"_Fade_Wave_To_Object_Origin",
|
|
"_Fade_Wave_Scale",
|
|
"_Fade_Wave_Vertical_Offset",
|
|
"_Wave_Object_Offset"
|
|
};
|
|
|
|
_showWave = CreatePropertyGroup("Wave", shaderProperties, _showWave, materialEditor, properties);
|
|
}
|
|
}
|