You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
146 lines
5.1 KiB
146 lines
5.1 KiB
// Copyright (c) 2023 Nico de Poel
|
|
//
|
|
// Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
// of this software and associated documentation files (the "Software"), to deal
|
|
// in the Software without restriction, including without limitation the rights
|
|
// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
// copies of the Software, and to permit persons to whom the Software is
|
|
// furnished to do so, subject to the following conditions:
|
|
//
|
|
// The above copyright notice and this permission notice shall be included in all
|
|
// copies or substantial portions of the Software.
|
|
//
|
|
// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
|
// THE SOFTWARE.
|
|
|
|
using System;
|
|
using System.Collections;
|
|
using System.Collections.Generic;
|
|
using System.IO;
|
|
using System.Reflection;
|
|
using System.Text;
|
|
using FidelityFX.FSR2;
|
|
using UnityEngine;
|
|
using UnityEngine.Rendering.PostProcessing;
|
|
using FidelityFX.FSR3;
|
|
|
|
public class DebugDumper : MonoBehaviour
|
|
{
|
|
private PostProcessLayer _layer;
|
|
|
|
private float _scaleFactor = 1.0f;
|
|
private float _lastScaleTime = 0f;
|
|
|
|
void Start()
|
|
{
|
|
var sb = new StringBuilder("SystemInfo:\n");
|
|
foreach (var property in typeof(SystemInfo).GetProperties(BindingFlags.Static | BindingFlags.Public))
|
|
{
|
|
sb.AppendLine($"- {property.Name} = {property.GetValue(null)}");
|
|
}
|
|
|
|
Debug.Log(sb);
|
|
|
|
_layer = GetComponent<PostProcessLayer>();
|
|
}
|
|
|
|
void OnEnable()
|
|
{
|
|
ScalableBufferManager.ResizeBuffers(_scaleFactor, _scaleFactor);
|
|
}
|
|
|
|
void OnDisable()
|
|
{
|
|
ScalableBufferManager.ResizeBuffers(1f, 1f);
|
|
}
|
|
|
|
void Update()
|
|
{
|
|
if (Input.GetKeyDown(KeyCode.F12))
|
|
{
|
|
string path = Path.Combine(Directory.GetCurrentDirectory(), $"screenshot-{DateTime.Now:yyyyMMdd-HHmmss}.png");
|
|
ScreenCapture.CaptureScreenshot(path);
|
|
Debug.Log($"Screenshot saved to: {path}");
|
|
}
|
|
|
|
if (_layer == null)
|
|
return;
|
|
|
|
if (Input.GetButtonDown("Fire1"))
|
|
{
|
|
if (_layer.antialiasingMode == PostProcessLayer.Antialiasing.None)
|
|
{
|
|
_layer.antialiasingMode = PostProcessLayer.Antialiasing.AdvancedUpscaling;
|
|
_layer.upscaling.upscalerType = default;
|
|
}
|
|
else
|
|
{
|
|
int newUpscalerType = (int)_layer.upscaling.upscalerType + 1;
|
|
if (newUpscalerType >= Enum.GetValues(typeof(Upscaling.UpscalerType)).Length)
|
|
{
|
|
_layer.antialiasingMode = PostProcessLayer.Antialiasing.None;
|
|
_layer.upscaling.upscalerType = default;
|
|
}
|
|
else
|
|
{
|
|
_layer.antialiasingMode = PostProcessLayer.Antialiasing.AdvancedUpscaling;
|
|
_layer.upscaling.upscalerType = (Upscaling.UpscalerType)newUpscalerType;
|
|
}
|
|
}
|
|
}
|
|
|
|
if (Input.GetButtonDown("Fire2"))
|
|
{
|
|
int quality = (int)_layer.upscaling.qualityMode;
|
|
quality = (quality + 1) % Enum.GetValues(typeof(Fsr2.QualityMode)).Length;
|
|
_layer.upscaling.qualityMode = (Fsr2.QualityMode)quality;
|
|
}
|
|
|
|
if (Input.GetButtonDown("Fire3"))
|
|
{
|
|
_layer.upscaling.exposureSource =
|
|
_layer.upscaling.exposureSource != Upscaling.ExposureSource.Auto ? Upscaling.ExposureSource.Auto : Upscaling.ExposureSource.Default;
|
|
}
|
|
|
|
if (Input.GetButtonDown("Jump"))
|
|
{
|
|
_layer.upscaling.ResetHistory();
|
|
}
|
|
|
|
float vertical = Input.GetAxis("Vertical");
|
|
if (vertical is < -0.3f or > 0.3f && Time.realtimeSinceStartup > _lastScaleTime + 0.3f)
|
|
{
|
|
_scaleFactor += 0.05f * Math.Sign(vertical);
|
|
_scaleFactor = Mathf.Clamp(_scaleFactor, 0.1f, 1.0f);
|
|
|
|
ScalableBufferManager.ResizeBuffers(_scaleFactor, _scaleFactor);
|
|
_lastScaleTime = Time.realtimeSinceStartup;
|
|
}
|
|
}
|
|
|
|
private void OnGUI()
|
|
{
|
|
if (_layer == null)
|
|
return;
|
|
|
|
float scale = Screen.height / 720f;
|
|
if (scale > Mathf.Epsilon)
|
|
{
|
|
GUI.matrix = Matrix4x4.Scale(new Vector3(scale, scale, scale));
|
|
}
|
|
|
|
GUILayout.Label($"Upscaler: {(_layer.antialiasingMode == PostProcessLayer.Antialiasing.AdvancedUpscaling ? _layer.upscaling.upscalerType.ToString() : "None")}");
|
|
GUILayout.Label($"Quality: {_layer.upscaling.qualityMode}");
|
|
GUILayout.Label($"Exposure: {(_layer.upscaling.exposureSource)}");
|
|
GUILayout.Label($"Scale: {Mathf.RoundToInt(_scaleFactor * 100)}%");
|
|
if (Input.GetButton("Jump"))
|
|
{
|
|
GUILayout.Label("Reset");
|
|
}
|
|
}
|
|
}
|