void Awake() { _compute = Instantiate(_compute); // m_Pattern = GetComponent<TransformPattern>(); if (m_Pattern) { m_Pattern.CreateTransforms(); m_InstCount = m_Pattern.Transforms.Count; } UpdateBuffers(); #region Compute shader // Get the compute kernal and set the position buffer reference kernel = _compute.FindKernel("TransformUpdate"); _compute.SetBuffer(kernel, "BaseTransformBuffer", m_BaseTransformBuffer); _compute.SetBuffer(kernel, "ModifiedTransformBuffer", m_ModifiedTransformBuffer); _compute.SetBuffer(kernel, "PositionCurve", m_PosCurveBuffer); _compute.SetBuffer(kernel, "RotationCurve", m_RotCurveBuffer); _compute.SetBuffer(kernel, "ScaleCurve", m_ScaleCurveBuffer); _compute.SetFloat("InstanceCount", (float)m_InstCount); _compute.Dispatch(kernel, ThreadGroupCount, 1, 1); #endregion #region Instance shader m_InstMat = new Material(m_InstMat); m_InstMat.name += "(Clone)"; m_InstMat.SetBuffer("ModifiedTransformBuffer", m_ModifiedTransformBuffer); m_InstMat.SetBuffer("BaseTransformBuffer", m_BaseTransformBuffer); #endregion }