cleanup
This commit is contained in:
parent
3378a181a8
commit
92a46ea5e0
|
@ -1,6 +1,4 @@
|
||||||
using UnityEngine;
|
using UnityEngine;
|
||||||
using UnityEngine.Serialization;
|
|
||||||
using UnityEngine.UIElements;
|
|
||||||
|
|
||||||
public class ComputeController : MonoBehaviour
|
public class ComputeController : MonoBehaviour
|
||||||
{
|
{
|
||||||
|
@ -9,14 +7,10 @@ public class ComputeController : MonoBehaviour
|
||||||
[SerializeField] private Texture2D _inputTexture;
|
[SerializeField] private Texture2D _inputTexture;
|
||||||
[SerializeField] private RenderTexture _resultTexture;
|
[SerializeField] private RenderTexture _resultTexture;
|
||||||
|
|
||||||
[Header("Config")]
|
[Header("State")]
|
||||||
[SerializeField] private int _width;
|
[SerializeField] private int _width;
|
||||||
[SerializeField] private int _height;
|
[SerializeField] private int _height;
|
||||||
[SerializeField] private float _scale = 1;
|
[SerializeField] private float _sin;
|
||||||
[SerializeField] private bool _resize;
|
|
||||||
|
|
||||||
[Header("state")]
|
|
||||||
[SerializeField] private float sin;
|
|
||||||
|
|
||||||
private int _kernelHandle;
|
private int _kernelHandle;
|
||||||
private const int NumThreadX = 8;
|
private const int NumThreadX = 8;
|
||||||
|
@ -32,36 +26,37 @@ public class ComputeController : MonoBehaviour
|
||||||
|
|
||||||
private void Start()
|
private void Start()
|
||||||
{
|
{
|
||||||
SetWidthHeight();
|
InitializeTextures();
|
||||||
|
|
||||||
|
InitializeShader();
|
||||||
_kernelHandle = _computeShader.FindKernel("cs_main");
|
|
||||||
|
|
||||||
RunComputeShader();
|
RunComputeShader();
|
||||||
}
|
}
|
||||||
|
|
||||||
private void RunComputeShader()
|
private void InitializeTextures()
|
||||||
{
|
{
|
||||||
|
_width = Mathf.RoundToInt(_inputTexture.width);
|
||||||
|
_height = Mathf.RoundToInt(_inputTexture.height);
|
||||||
_resultTexture = new(_width, _height, 24);
|
_resultTexture = new(_width, _height, 24);
|
||||||
_resultTexture.name = "ResultTexture";
|
_resultTexture.name = "ResultTexture";
|
||||||
_resultTexture.enableRandomWrite = true;
|
_resultTexture.enableRandomWrite = true;
|
||||||
_resultTexture.Create();
|
_resultTexture.Create();
|
||||||
|
|
||||||
_computeShader.SetTexture(_kernelHandle, SourceTexture, _inputTexture);
|
|
||||||
_computeShader.SetTexture(_kernelHandle, Result, _resultTexture);
|
|
||||||
|
|
||||||
DispatchShader();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private void DispatchShader()
|
private void InitializeShader()
|
||||||
|
{
|
||||||
|
_kernelHandle = _computeShader.FindKernel("cs_main");
|
||||||
|
_computeShader.SetTexture(_kernelHandle, SourceTexture, _inputTexture);
|
||||||
|
_computeShader.SetTexture(_kernelHandle, Result, _resultTexture);
|
||||||
|
}
|
||||||
|
|
||||||
|
private void RunComputeShader()
|
||||||
{
|
{
|
||||||
_computeShader.Dispatch(_kernelHandle, _width / NumThreadX, _height / NumThreadY, 1);
|
_computeShader.Dispatch(_kernelHandle, _width / NumThreadX, _height / NumThreadY, 1);
|
||||||
}
|
}
|
||||||
|
|
||||||
private void OnGUI()
|
private void OnGUI()
|
||||||
{
|
{
|
||||||
CheckScale();
|
|
||||||
|
|
||||||
ShaderUpdate();
|
ShaderUpdate();
|
||||||
|
|
||||||
GUI.DrawTexture(new Rect(0, 0, _width, _height), _inputTexture);
|
GUI.DrawTexture(new Rect(0, 0, _width, _height), _inputTexture);
|
||||||
|
@ -70,24 +65,8 @@ public class ComputeController : MonoBehaviour
|
||||||
|
|
||||||
private void ShaderUpdate()
|
private void ShaderUpdate()
|
||||||
{
|
{
|
||||||
sin = (Mathf.Sin(Time.unscaledTime) + 1) / 2;
|
_sin = (Mathf.Sin(Time.unscaledTime) + 1) / 2;
|
||||||
_computeShader.SetFloat(SinScaled, sin);
|
_computeShader.SetFloat(SinScaled, _sin);
|
||||||
DispatchShader();
|
RunComputeShader();
|
||||||
}
|
|
||||||
|
|
||||||
private void CheckScale()
|
|
||||||
{
|
|
||||||
if (_resize)
|
|
||||||
{
|
|
||||||
_resize = false;
|
|
||||||
SetWidthHeight();
|
|
||||||
RunComputeShader();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
private void SetWidthHeight()
|
|
||||||
{
|
|
||||||
_width = Mathf.RoundToInt(_inputTexture.width * _scale);
|
|
||||||
_height = Mathf.RoundToInt(_inputTexture.height * _scale);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
|
@ -9,6 +9,6 @@ float sin_scaled;
|
||||||
void cs_main(uint3 id : SV_DispatchThreadID)
|
void cs_main(uint3 id : SV_DispatchThreadID)
|
||||||
{
|
{
|
||||||
float4 color = source_texture[id.xy];
|
float4 color = source_texture[id.xy];
|
||||||
color.rgb = color.rgb * sin_scaled * 2;
|
color.rgb = color.rgb * sin_scaled;
|
||||||
result[id.xy] = color;
|
result[id.xy] = color;
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue