Пример #1
0
 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);
 }
Пример #2
0
    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);
    }
Пример #3
0
 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");
     }
 }