Documentation

Unity Engine


User Manual

Script Reference

Unity Engine


BufferSlice<T>

Represents a typed view into a portion of a device buffer, enabling efficient memory management and type-safe buffer operations.
Read time 2 minutesLast updated 12 days ago

Definition

public struct BufferSlice<T> : IEquatable<BufferSlice<T>> where T : struct

Remarks

Unity uses the BufferSlice struct to split one large buffer allocation into smaller buffers, each with explicit types. This provides efficient memory management by allowing multiple logical buffers to share a single physical allocation while maintaining type safety.
BufferSlice is commonly used with:
The slice maintains a reference to the underlying BufferID and specifies an offset measured in elements of type T.

Examples

// Create a large buffer for multiple data typesBufferID sharedBuffer = context.CreateBuffer(1000, sizeof(float));// Create different views into the same buffervar floatSlice = new BufferSlice<float>(sharedBuffer, 0); // Elements 0-499var vectorSlice = new BufferSlice<Vector3>(sharedBuffer, 500); // Elements 500-998// Write data through different slicesvar floatData = new NativeArray<float>(500, Allocator.Temp);var vectorData = new NativeArray<Vector3>(166, Allocator.Temp);context.WriteBuffer(floatSlice, floatData);context.WriteBuffer(vectorSlice, vectorData);

Fields

Value

Description

IdBuffer ID.
OffsetThe number of elements to offset, measured from the beginning of the buffer. The value must not exceed the end of the buffer allocation.

Constructors

Constructor

Description

BufferSlice`1(UnityEngine.LightTransport.BufferID,System.UInt64)Construct a new BufferSlice struct by defining an offset from the beginning of a buffer. The buffer is defined by the BufferID.

Methods

Method

Description

SafeReinterpretReinterpret the slice as having a different data type (type punning), performing checks to ensure the reinterpret is valid.
UnsafeReinterpretReinterpret the slice as having a different data type (type punning), but does not check if the reinterpret is valid.