interface IArray<T>
Description
Represents types that provide a subscript operator so that they can be used like an immutable array.
Generic Parameters
T
The element type returned by the subscript operator.
Methods
Remarks
This interface is implemented by Array, vector, matrix, StructuredBuffer and RWStructuredBuffer types.
Example
The follow example shows how to define a generic function that computes the sum of all elements in an array-like type.
T sum<T:IFloat, U:IArray<T>>(U array)
{
T result = T(0);
for (int i = 0; i < array.getCount(); i++)
{
result = result + array[i];
}
return result;
}
RWStructuredBuffer<float> outputBuffer;
[numthreads(1, 1, 1)]
void computeMain(int3 dispatchThreadID : SV_DispatchThreadID)
{
float arr[3] = { 1.0, 2.0, 3.0 };
float4 v = float4(1.0, 2.0, 3.0, 4.0);
float2x2 m = float2x2(1.0, 2.0, 3.0, 4.0);
outputBuffer[0] = sum(arr); // 6.0
// treat `v` as array of `float`.
outputBuffer[1] = sum(v); // 10.0
// treat `m` as array of `float2`.
float2 innerSum = sum(m);
outputBuffer[2] = sum(innerSum); // 10.0
}