public static void Apply(ComputeShader shader, ConstantBufferVariable buffer) { shader.SetInt("FrameIndex", buffer.FrameIndex); shader.SetVector("FrameOffset", buffer.FrameOffset); shader.SetFloat("GrainStrange", buffer.GrainStrange); shader.SetFloat("VignetteStrange", buffer.VignetteStrange); }
private void OnRenderImage(RenderTexture source, RenderTexture destination) { InitializeRenderTexture(m_Camera.pixelWidth, m_Camera.pixelHeight); ConstantBufferVariable.Apply(m_OldCinemaComputer, m_ConstantBuffer); var kernelOldCinema = m_OldCinemaComputer.FindKernel("OldCinema"); m_OldCinemaComputer.SetTexture(kernelOldCinema, "TextureColorSRV", source); m_OldCinemaComputer.SetTexture(kernelOldCinema, "TextureColorUAV", m_TextureOldCinema); m_OldCinemaComputer.Dispatch(kernelOldCinema, Mathf.CeilToInt(m_Camera.pixelWidth / 8.0f), Mathf.CeilToInt(m_Camera.pixelHeight / 8.0f), 1); Graphics.Blit(m_TextureOldCinema, destination); }
public void AddVariable(ConstantBufferVariable var) { if (!VariableDictionary.TryGetValue(var.Name, out var v)) { VariableDictionary.Add(var.Name, var); } else if (v.StartOffset != var.StartOffset || v.Size != var.Size) { throw new ArgumentException($"Variable {var.Name} already exists in constant buffer definition. " + $"But start offset {var.StartOffset} and {v.StartOffset} or sizes {var.Size} and {v.Size} are not match"); } }