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); } }