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