33 lines
1.1 KiB
C#
33 lines
1.1 KiB
C#
using UnityEngine;
|
|
|
|
public class ComputeController : MonoBehaviour
|
|
{
|
|
[SerializeField] private ComputeShader _computeShader;
|
|
[SerializeField] private Texture2D _inputTexture;
|
|
[SerializeField] private RenderTexture _resultTexture;
|
|
private int _kernelHandle;
|
|
private static readonly int Result = Shader.PropertyToID("result");
|
|
private static readonly int SourceTexture = Shader.PropertyToID("source_texture");
|
|
|
|
private void Start()
|
|
{
|
|
_kernelHandle = _computeShader.FindKernel("cs_main");
|
|
|
|
_resultTexture = new(100, 100, 24)
|
|
{
|
|
enableRandomWrite = true,
|
|
name = "Test"
|
|
};
|
|
_resultTexture.Create();
|
|
|
|
_computeShader.SetTexture(_kernelHandle, Result, _resultTexture);
|
|
_computeShader.SetTexture(_kernelHandle, SourceTexture, _inputTexture);
|
|
|
|
_computeShader.Dispatch(_kernelHandle, _resultTexture.width / 8, _resultTexture.height / 8, 1);
|
|
}
|
|
|
|
private void OnGUI()
|
|
{
|
|
GUI.DrawTexture(new(0, 0, _resultTexture.width, _resultTexture.height), _resultTexture);
|
|
}
|
|
} |