120 lines
4.9 KiB
C#
120 lines
4.9 KiB
C#
using System.Diagnostics.CodeAnalysis;
|
|
using JetBrains.Annotations;
|
|
using UnityEditor;
|
|
|
|
[UsedImplicitly]
|
|
[SuppressMessage("ReSharper", "CheckNamespace")]
|
|
public class NebulaOneShaderGUI : ShaderGUI
|
|
{
|
|
// Starfield
|
|
private MaterialProperty _starfieldCube;
|
|
private MaterialProperty _backgroundColor;
|
|
private MaterialProperty _starsTint;
|
|
private MaterialProperty _starsBrightnesslMin;
|
|
private MaterialProperty _starsBrightnesslMax;
|
|
// Nebula Density
|
|
private MaterialProperty _densityCube;
|
|
private MaterialProperty _densityThresholdLow;
|
|
private MaterialProperty _densityThresholdHigh;
|
|
// Nebula Diffusion
|
|
private MaterialProperty _diffusionCube;
|
|
private MaterialProperty _ripplesDistortion;
|
|
// Nebula Colors
|
|
private MaterialProperty _ambientTint;
|
|
private MaterialProperty _basementTint;
|
|
private MaterialProperty _ripplesTint1;
|
|
private MaterialProperty _ripplesTint2;
|
|
// General
|
|
private MaterialProperty _exposure;
|
|
|
|
//---------------------------------------------------------------------
|
|
// Public
|
|
//---------------------------------------------------------------------
|
|
|
|
public override void OnGUI(MaterialEditor materialEditor, MaterialProperty[] properties)
|
|
{
|
|
FindProperties(properties);
|
|
ShaderPropertiesGUI(materialEditor);
|
|
}
|
|
|
|
//---------------------------------------------------------------------
|
|
// Helpers
|
|
//---------------------------------------------------------------------
|
|
|
|
private void FindProperties(MaterialProperty[] properties)
|
|
{
|
|
// Starfield
|
|
_starfieldCube = FindProperty("_StarfieldCube", properties);
|
|
_backgroundColor = FindProperty("_BackgroundColor", properties);
|
|
_starsTint = FindProperty("_StarsTint", properties);
|
|
_starsBrightnesslMin = FindProperty("_StarsBrightnesslMin", properties);
|
|
_starsBrightnesslMax = FindProperty("_StarsBrightnesslMax", properties);
|
|
// Nebula Density
|
|
_densityCube = FindProperty("_DensityCube", properties);
|
|
_densityThresholdLow = FindProperty("_DensityThresholdLow", properties);
|
|
_densityThresholdHigh = FindProperty("_DensityThresholdHigh", properties);
|
|
// Nebula Diffusion
|
|
_diffusionCube = FindProperty("_DiffusionCube", properties);
|
|
_ripplesDistortion = FindProperty("_RipplesDistortion", properties);
|
|
// Nebula Colors
|
|
_ambientTint = FindProperty("_AmbientTint", properties);
|
|
_basementTint = FindProperty("_BasementTint", properties);
|
|
_ripplesTint1 = FindProperty("_RipplesTint1", properties);
|
|
_ripplesTint2 = FindProperty("_RipplesTint2", properties);
|
|
// General
|
|
_exposure = FindProperty("_Exposure", properties);
|
|
}
|
|
|
|
private void ShaderPropertiesGUI(MaterialEditor materialEditor)
|
|
{
|
|
materialEditor.SetDefaultGUIWidths();
|
|
|
|
// Starfield
|
|
EditorGUILayout.BeginVertical("Box");
|
|
EditorGUILayout.LabelField("Starfield", EditorStyles.boldLabel);
|
|
EditorGUILayout.EndVertical();
|
|
|
|
materialEditor.ShaderProperty(_starfieldCube, "Starfield Cubemap");
|
|
materialEditor.ShaderProperty(_backgroundColor, "Background Color");
|
|
materialEditor.ShaderProperty(_starsTint, "Stars Tint");
|
|
materialEditor.ShaderProperty(_starsBrightnesslMin, "Brightness Min");
|
|
materialEditor.ShaderProperty(_starsBrightnesslMax, "Brightness Max");
|
|
EditorGUILayout.Space();
|
|
|
|
// Nebula Density
|
|
EditorGUILayout.BeginVertical("Box");
|
|
EditorGUILayout.LabelField("Nebula Density", EditorStyles.boldLabel);
|
|
EditorGUILayout.EndVertical();
|
|
|
|
materialEditor.ShaderProperty(_densityCube, "Density Cubemap");
|
|
materialEditor.ShaderProperty(_densityThresholdLow, "Density Threshold Low");
|
|
materialEditor.ShaderProperty(_densityThresholdHigh, "Density Threshold High");
|
|
EditorGUILayout.Space();
|
|
|
|
// Nebula Diffusion
|
|
EditorGUILayout.BeginVertical("Box");
|
|
EditorGUILayout.LabelField("Nebula Diffusion", EditorStyles.boldLabel);
|
|
EditorGUILayout.EndVertical();
|
|
|
|
materialEditor.ShaderProperty(_diffusionCube, "Diffusion Cubemap");
|
|
materialEditor.ShaderProperty(_ripplesDistortion, "Ripples Distortion");
|
|
|
|
// Nebula Colors
|
|
EditorGUILayout.BeginVertical("Box");
|
|
EditorGUILayout.LabelField("Nebula Colors", EditorStyles.boldLabel);
|
|
EditorGUILayout.EndVertical();
|
|
|
|
materialEditor.ShaderProperty(_ambientTint, "Ambient Tint");
|
|
materialEditor.ShaderProperty(_basementTint, "Basement Tint");
|
|
materialEditor.ShaderProperty(_ripplesTint1, "Ripples 1 Tint");
|
|
materialEditor.ShaderProperty(_ripplesTint2, "Ripples 2 Tint");
|
|
EditorGUILayout.Space();
|
|
|
|
// General
|
|
EditorGUILayout.BeginVertical("Box");
|
|
EditorGUILayout.LabelField("General", EditorStyles.boldLabel);
|
|
EditorGUILayout.EndVertical();
|
|
|
|
materialEditor.ShaderProperty(_exposure, "Exposure");
|
|
}
|
|
} |