Skip to content

Commit

Permalink
Post Process Gui and other gui fixes
Browse files Browse the repository at this point in the history
- New Options to Post Processing.
- Better Gui Scaling to big windows.
- Hack to fix other aspect ratios that not 16:9.
  • Loading branch information
maikramer committed Mar 13, 2019
1 parent 422a7df commit 549e8fc
Show file tree
Hide file tree
Showing 3 changed files with 112 additions and 42 deletions.
13 changes: 9 additions & 4 deletions Assets/Scripts/Gui/MainGui.cs
Original file line number Diff line number Diff line change
Expand Up @@ -934,13 +934,16 @@ private void CreateMaskMap()
StartCoroutine(TextureManager.Instance.MakeMaskMap());
}

public static void MakeScaledWindow(Rect windowRect, int id, GUI.WindowFunction callback, string title)
public static void MakeScaledWindow(Rect windowRect, int id, GUI.WindowFunction callback, string title,
float scale = 1.0f)
{
var aspect = ProgramManager.Instance.GuiScale.x / ProgramManager.Instance.GuiScale.y;
var posX = windowRect.x * ProgramManager.Instance.GuiScale.x;
var posY = windowRect.y * ProgramManager.Instance.GuiScale.y;
posY += (aspect - 1.0f) * 90f;
var pivotPoint = new Vector2(posX, posY);

GUIUtility.ScaleAroundPivot(ProgramManager.Instance.GuiScale, pivotPoint);
GUIUtility.ScaleAroundPivot(ProgramManager.Instance.GuiScale * scale, pivotPoint);

var newWindowRect = new Rect(posX, posY, windowRect.width, windowRect.height);
newWindowRect = GUI.Window(id, newWindowRect, callback, title);
Expand All @@ -950,13 +953,15 @@ public static void MakeScaledWindow(Rect windowRect, int id, GUI.WindowFunction
windowRect.y = posY;
}

public static Rect MakeScaledBox(Rect windowRect, string title)
private static Rect MakeScaledBox(Rect windowRect, string title, float scale = 1.0f)
{
var aspect = ProgramManager.Instance.GuiScale.x / ProgramManager.Instance.GuiScale.y;
var posX = windowRect.x * ProgramManager.Instance.GuiScale.x;
var posY = windowRect.y * ProgramManager.Instance.GuiScale.y;
posY += (aspect - 1.0f) * 90f;
var pivotPoint = new Vector2(posX, posY);

GUIUtility.ScaleAroundPivot(ProgramManager.Instance.GuiScale, pivotPoint);
GUIUtility.ScaleAroundPivot(ProgramManager.Instance.GuiScale * scale, pivotPoint);

var newWindowRect = new Rect(posX, posY, windowRect.width, windowRect.height);
GUI.Box(newWindowRect, title);
Expand Down
22 changes: 11 additions & 11 deletions Assets/Scripts/Gui/MaterialGui.cs
Original file line number Diff line number Diff line change
Expand Up @@ -72,7 +72,7 @@ private void Awake()
{
_light = LightObject.GetComponent<Light>();
ProgramManager.Instance.SceneObjects.Add(gameObject);
_windowRect = new Rect(10.0f, 265.0f, 300f, 540f);
_windowRect = new Rect(10.0f, 265.0f, 300f, 575f);
}

private void Start()
Expand Down Expand Up @@ -215,16 +215,16 @@ private void DoMyWindow(int windowId)
var temp = _materialSettings.Metallic.Value;
GuiHelper.Slider(new Rect(offsetX, offsetY, 280, 50), "Metallic Multiplier", temp,
out temp, 0.0f, 1.0f);
offsetY += 35;
offsetY += 40;
_materialSettings.Metallic.Value = temp;

GuiHelper.Slider(new Rect(offsetX, offsetY, 280, 50), "Normal Scale", _materialSettings.NormalStrength,
out temp, 0.0f, 8.0f);
offsetY += 35;
offsetY += 40;

GuiHelper.Slider(new Rect(offsetX, offsetY, 280, 50), "Ambient Occlusion Remap Min Max",
_materialSettings.AoRemapMin, out _materialSettings.AoRemapMin, 0.0f, 1.0f);
offsetY += 20;
offsetY += 25;

if (_materialSettings.AoRemapMin > _materialSettings.AoRemapMax)
{
Expand All @@ -234,7 +234,7 @@ private void DoMyWindow(int windowId)
GuiHelper.Slider(new Rect(offsetX, offsetY, 280, 50), _materialSettings.AoRemapMax,
out _materialSettings.AoRemapMax, 0.0f, 1.0f);

offsetY += 35;
offsetY += 40;

GuiHelper.Slider(new Rect(offsetX, offsetY, 280, 50), "Smoothness Remap Min Max",
_materialSettings.SmoothnessRemapMin, out _materialSettings.SmoothnessRemapMin, 0.0f, 1.0f);
Expand All @@ -243,32 +243,32 @@ private void DoMyWindow(int windowId)
_materialSettings.SmoothnessRemapMin = _materialSettings.SmoothnessRemapMax;
}

offsetY += 20;
offsetY += 25;

GuiHelper.Slider(new Rect(offsetX, offsetY, 280, 50), _materialSettings.SmoothnessRemapMax,
out _materialSettings.SmoothnessRemapMax, 0.0f, 1.0f);
offsetY += 35;
offsetY += 40;


GuiHelper.Slider(new Rect(offsetX, offsetY, 280, 50), "Tessellation Amplitude",
_materialSettings.DisplacementAmplitude, out _materialSettings.DisplacementAmplitude, 0.0f, 3.0f);
offsetY += 35;
offsetY += 40;

GuiHelper.Slider(new Rect(offsetX, offsetY, 280, 50), "Texture Tiling (X,Y)", _materialSettings.TexTilingX,
out _materialSettings.TexTilingX, 0.1f, 5.0f);
offsetY += 25;

GuiHelper.Slider(new Rect(offsetX, offsetY, 280, 50), _materialSettings.TexTilingY,
out _materialSettings.TexTilingY, 0.1f, 5.0f);
offsetY += 35;
offsetY += 40;

GuiHelper.Slider(new Rect(offsetX, offsetY, 280, 50), "Texture Offset (X,Y)", _materialSettings.TexOffsetX,
out _materialSettings.TexOffsetX, -1.0f, 1.0f);
offsetY += 25;

GuiHelper.Slider(new Rect(offsetX, offsetY, 280, 50), _materialSettings.TexOffsetY,
out _materialSettings.TexOffsetY, -1.0f, 1.0f);
offsetY += 35;
offsetY += 40;

GUI.Label(new Rect(offsetX, offsetY, 250, 30), "Light Color");
ChooseLightColor(offsetX, offsetY + 20);
Expand Down Expand Up @@ -316,7 +316,7 @@ private void DoMyWindow(int windowId)
private void OnGUI()
{
if (Hide) return;
MainGui.MakeScaledWindow(_windowRect, _windowId, DoMyWindow, "Full Material");
MainGui.MakeScaledWindow(_windowRect, _windowId, DoMyWindow, "Full Material", 0.9f);
}

public void Initialize()
Expand Down
119 changes: 92 additions & 27 deletions Assets/Scripts/Gui/PostProcessGui.cs
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,10 @@ public class PostProcessGui : MonoBehaviour, IHideable
{
private float _bloomIntensity;
private float _bloomScatter;
private float _dofFocusDistance;
private float _dofFocusNearFocusStart;
private float _dofFocusNearFocusEnd;
private float _dofFocusFarFocusStart;
private float _dofFocusFarFocusEnd;
private float _lensDirtIntensity;
private float _vignetteIntensity;
private float _vignetteSmoothness;
Expand All @@ -31,6 +34,8 @@ public class PostProcessGui : MonoBehaviour, IHideable
private Vignette _vignette;
private bool _enablePostProcess = true;
private AmbientOcclusion _ambientOcclusion;
private bool _enableBloom;
private bool _enableVignette;

private void Awake()
{
Expand All @@ -45,7 +50,14 @@ private void Awake()

Profile.TryGet(out _depthOfField);

_dofFocusDistance = _depthOfField ? _depthOfField.focusDistance.value : 0;
if (_depthOfField)
{
_dofFocusNearFocusStart = _depthOfField.nearFocusStart;
_dofFocusNearFocusEnd = _depthOfField.nearFocusEnd;

_dofFocusFarFocusStart = _depthOfField.farFocusStart;
_dofFocusFarFocusEnd = _depthOfField.farFocusEnd;
}

Profile.TryGet(out _vignette);
_vignetteIntensity = _vignette.intensity.value;
Expand All @@ -55,7 +67,7 @@ private void Awake()
Profile.TryGet(out _ambientOcclusion);
_ambientOcclusionIntensity = _ambientOcclusion.intensity.value;

_windowRect = new Rect(10.0f, 265.0f, 300f, 350f);
_windowRect = new Rect(10.0f, 265.0f, 300f, 580f);
}

private void Start()
Expand All @@ -68,8 +80,15 @@ private void UpdateValues()
_bloom.intensity.value = _bloomIntensity;
_bloom.scatter.value = _bloomScatter;
_bloom.dirtIntensity.value = _lensDirtIntensity;
if (_depthOfField != null)
_depthOfField.focusDistance.value = _dofFocusDistance;
if (_depthOfField)
{
_depthOfField.nearFocusStart.value = _dofFocusNearFocusStart;
_depthOfField.nearFocusEnd.value = _dofFocusNearFocusEnd;

_depthOfField.farFocusStart.value = _dofFocusFarFocusStart;
_depthOfField.farFocusEnd.value = _dofFocusFarFocusEnd;
}

_vignette.intensity.value = _vignetteIntensity;
_vignette.smoothness.value = _vignetteSmoothness;
_ambientOcclusion.intensity.value = _ambientOcclusionIntensity;
Expand Down Expand Up @@ -109,48 +128,94 @@ private void Update()
private void DoMyWindow(int windowId)
{
const int offsetX = 10;
var offsetY = 30;
var offsetY = 20;

_enablePostProcess = GUI.Toggle(new Rect(offsetX, offsetY, 280, 30), _enablePostProcess,
"Enable Post Process");
offsetY += 40;
offsetY += 25;

GuiHelper.Slider(new Rect(offsetX, offsetY, 280, 50), "Bloom Scatter", _bloomScatter,
out _bloomScatter, 0.0f, 1.0f);
offsetY += 40;
_bloom.active = GUI.Toggle(new Rect(offsetX, offsetY, 280, 30), _bloom.active,
"Enable Bloom");
offsetY += 25;

GuiHelper.Slider(new Rect(offsetX, offsetY, 280, 50), "Bloom Intensity", _bloomIntensity,
out _bloomIntensity, 0.0f, 1.0f);
offsetY += 45;
if (_bloom && _bloom.active)
{
GuiHelper.Slider(new Rect(offsetX, offsetY, 280, 50), "Bloom Scatter", _bloomScatter,
out _bloomScatter, 0.0f, 1.0f);
offsetY += 40;

GuiHelper.Slider(new Rect(offsetX, offsetY, 280, 50), "Lens Dirt Intensity", _lensDirtIntensity,
out _lensDirtIntensity, 0.0f, 10.0f);
offsetY += 45;
GuiHelper.Slider(new Rect(offsetX, offsetY, 280, 50), "Bloom Intensity", _bloomIntensity,
out _bloomIntensity, 0.0f, 1.0f);
offsetY += 45;

GuiHelper.Slider(new Rect(offsetX, offsetY, 280, 50), "Vignette Intensity", _vignetteIntensity,
out _vignetteIntensity, 0.0f, 1.0f);
offsetY += 40;
GuiHelper.Slider(new Rect(offsetX, offsetY, 280, 50), "Lens Dirt Intensity", _lensDirtIntensity,
out _lensDirtIntensity, 0.0f, 10.0f);
offsetY += 50;
}

_vignette.active = GUI.Toggle(new Rect(offsetX, offsetY, 280, 30), _vignette.active,
"Enable Vignette");
offsetY += 25;

if (_vignette && _vignette.active)
{
GuiHelper.Slider(new Rect(offsetX, offsetY, 280, 50), "Vignette Intensity", _vignetteIntensity,
out _vignetteIntensity, 0.0f, 1.0f);
offsetY += 40;

GuiHelper.Slider(new Rect(offsetX, offsetY, 280, 50), "Vignette Smoothness", _vignetteSmoothness,
out _vignetteSmoothness, 0.0f, 1.0f);
offsetY += 45;
GuiHelper.Slider(new Rect(offsetX, offsetY, 280, 50), "Vignette Smoothness", _vignetteSmoothness,
out _vignetteSmoothness, 0.0f, 1.0f);
offsetY += 50;
}

GuiHelper.Slider(new Rect(offsetX, offsetY, 280, 50), "Ambient Occlusion Intensity",
_ambientOcclusionIntensity,
out _ambientOcclusionIntensity, 0.0f, 4.0f);
offsetY += 45;
offsetY += 50;

_depthOfField.active = GUI.Toggle(new Rect(offsetX, offsetY, 280, 30), _depthOfField.active,
"Enable Depth Of Field");
offsetY += 25;

if (_depthOfField && _depthOfField.active)
{
GuiHelper.Slider(new Rect(offsetX, offsetY, 280, 50), "DOF Near Focus Start", _dofFocusNearFocusStart,
out _dofFocusNearFocusStart, 0.0f, 50.0f);

offsetY += 45;

if (_dofFocusNearFocusStart > _dofFocusNearFocusEnd)
{
_dofFocusNearFocusStart = _dofFocusNearFocusEnd;
}

GuiHelper.Slider(new Rect(offsetX, offsetY, 280, 50), "DOF Near Focus End", _dofFocusNearFocusEnd,
out _dofFocusNearFocusEnd, 0.0f, 50.0f);

offsetY += 40;

GuiHelper.Slider(new Rect(offsetX, offsetY, 280, 50), "DOF Far Focus Start", _dofFocusFarFocusStart,
out _dofFocusFarFocusStart, 0.0f, 50.0f);

offsetY += 45;

if (_dofFocusFarFocusStart > _dofFocusFarFocusEnd)
{
_dofFocusFarFocusStart = _dofFocusFarFocusEnd;
}

GuiHelper.Slider(new Rect(offsetX, offsetY, 280, 50), "DOF Far Focus End", _dofFocusFarFocusEnd,
out _dofFocusFarFocusEnd, 0.0f, 50.0f);
}

if (_depthOfField)
GuiHelper.Slider(new Rect(offsetX, offsetY, 280, 50), "DOF Focus Distance", _dofFocusDistance,
out _dofFocusDistance, 0.0f, 20.0f);
UpdateValues();
GUI.DragWindow();
}

private void OnGUI()
{
if (Hide) return;
MainGui.MakeScaledWindow(_windowRect, _windowId, DoMyWindow, "Post Process");
MainGui.MakeScaledWindow(_windowRect, _windowId, DoMyWindow, "Post Process", 0.9f);
}

public bool Hide { get; set; }
Expand Down

0 comments on commit 549e8fc

Please sign in to comment.