static const uint3 gridSize = uint3(32, 32, 32); struct FluidGridData { RWStructuredBuffer dataGrid; __subscript(uint3 index) -> T { get { return dataGrid[index.x + index.y * gridSize.x + index.z * gridSize.x * gridSize.y]; } set { dataGrid[index.x + index.y * gridSize.x + index.z * gridSize.x * gridSize.y] = newValue; } } __subscript(uint x, uint y, uint z) -> T { get { return dataGrid[x + y * gridSize.x + z * gridSize.x * gridSize.y]; } set { dataGrid[x + y * gridSize.x + z * gridSize.x * gridSize.y] = newValue; } } };