private void UpdatePrimitivesBuffer()
    {
        List <SignedDistancePrimitive> prims = new List <SignedDistancePrimitive>();

        for (int i = 0; i < primitives.Count; i++)
        {
            RaymarchPrimitive raymarchObject = primitives[i];
            if (!raymarchObject)
            {
                continue;
            }

            prims.Add(raymarchObject.primitive);
        }

        // Check the number of primitives.
        if (prims.Count == 0)
        {
            primitivesBufferSize = 0;
            return;
        }

        FreePrimitivesBuffer();
        primitivesBufferSize = prims.Count;
        primitivesBuffer     = new ComputeBuffer(primitivesBufferSize, Marshal.SizeOf(typeof(SignedDistancePrimitive)), ComputeBufferType.Default);
        primitivesBuffer.SetData(prims);
    }
 private void Awake()
 {
     script = (RaymarchPrimitive)target;
 }