# CopyProbeOcclusionArrayFrom

> This function copies the entire source array into a Vector4 property array named unity_ProbesOcclusion for use with instanced Shadowmask rendering.

## Definition

* **Type:** Method
* **Namespace:** [UnityEngine](/engine/6000.7/script-reference/unityengine.md)
* **Assembly:** UnityEngine.CoreModule

## CopyProbeOcclusionArrayFrom(List\<Vector4>)

This function copies the entire source array into a Vector4 property array named `unity_ProbesOcclusion` for use with instanced Shadowmask rendering.

```csharp
public void CopyProbeOcclusionArrayFrom(List<Vector4> occlusionProbes)
```

### Parameters

**** (\[List\<Vector4>]\(https\://learn.microsoft.com/dotnet/api/system.collections.generic.list-1)): The array of probe occlusion values to copy from.

### Remarks

If the array property doesn't exist on the MaterialPropertyBlock, it will be created with the length of the source array.

Call [LightProbes.CalculateInterpolatedLightAndOcclusionProbes](/engine/6000.7/script-reference/unityengine/lightprobes/calculateinterpolatedlightandocclusionprobes.md) to calculate probe occlusion values at the given world space positions.

ArgumentNullException is thrown if `occlusionProbes` is `null`.

Note that all MaterialPropertyBlock arrays can only have a maximum of 1023 elements. Warnings are printed and the excess array elements are ignored if the source array exceeds the range.

Additional Resources: [MaterialPropertyBlock.CopySHCoefficientArraysFrom](/engine/6000.7/script-reference/unityengine/materialpropertyblock/copyshcoefficientarraysfrom.md), [Graphics.RenderMeshInstanced](/engine/6000.7/script-reference/unityengine/graphics/rendermeshinstanced.md), [CommandBuffer.DrawMeshInstanced](/engine/6000.7/script-reference/unityengine/rendering/commandbuffer/drawmeshinstanced.md).

## CopyProbeOcclusionArrayFrom(Vector4\[])

This function copies the entire source array into a Vector4 property array named `unity_ProbesOcclusion` for use with instanced Shadowmask rendering.

```csharp
public void CopyProbeOcclusionArrayFrom(Vector4[] occlusionProbes)
```

### Parameters

**** (\[Vector4\[]]\(/engine/6000.7/script-reference/unityengine/vector4)): The array of probe occlusion values to copy from.

### Remarks

If the array property doesn't exist on the MaterialPropertyBlock, it will be created with the length of the source array.

Call [LightProbes.CalculateInterpolatedLightAndOcclusionProbes](/engine/6000.7/script-reference/unityengine/lightprobes/calculateinterpolatedlightandocclusionprobes.md) to calculate probe occlusion values at the given world space positions.

ArgumentNullException is thrown if `occlusionProbes` is `null`.

Note that all MaterialPropertyBlock arrays can only have a maximum of 1023 elements. Warnings are printed and the excess array elements are ignored if the source array exceeds the range.

Additional Resources: [MaterialPropertyBlock.CopySHCoefficientArraysFrom](/engine/6000.7/script-reference/unityengine/materialpropertyblock/copyshcoefficientarraysfrom.md), [Graphics.RenderMeshInstanced](/engine/6000.7/script-reference/unityengine/graphics/rendermeshinstanced.md), [CommandBuffer.DrawMeshInstanced](/engine/6000.7/script-reference/unityengine/rendering/commandbuffer/drawmeshinstanced.md).

## CopyProbeOcclusionArrayFrom(List\<Vector4>, int, int, int)

This function copies the source array into a Vector4 property array named `unity_ProbesOcclusion` with the specified source and destination range for use with instanced Shadowmask rendering.

```csharp
public void CopyProbeOcclusionArrayFrom(List<Vector4> occlusionProbes, int sourceStart, int destStart, int count)
```

### Parameters

**** (\[List\<Vector4>]\(https\://learn.microsoft.com/dotnet/api/system.collections.generic.list-1)): The array of probe occlusion values to copy from.**** (\[int]\(https\://learn.microsoft.com/dotnet/api/system.int32)): The index of the first element in the source array to copy from.**** (\[int]\(https\://learn.microsoft.com/dotnet/api/system.int32)): The index of the first element in the destination MaterialPropertyBlock array to copy to.**** (\[int]\(https\://learn.microsoft.com/dotnet/api/system.int32)): The number of elements to copy.

### Remarks

If the array property doesn't exist on the MaterialPropertyBlock, it will be created with the length of the spcified range.

Call [LightProbes.CalculateInterpolatedLightAndOcclusionProbes](/engine/6000.7/script-reference/unityengine/lightprobes/calculateinterpolatedlightandocclusionprobes.md) to calculate probe occlusion values at the given world space positions.

ArgumentNullException is thrown if `occlusionProbes` is `null`.

ArgumentOutOfRangeException is thrown if the source or destination range is invalid.

Note that all MaterialPropertyBlock arrays can only have a maximum of 1023 elements. Warnings are printed and the excess array elements are ignored if the source array exceeds the range.

Additional Resources: [MaterialPropertyBlock.CopySHCoefficientArraysFrom](/engine/6000.7/script-reference/unityengine/materialpropertyblock/copyshcoefficientarraysfrom.md), [Graphics.RenderMeshInstanced](/engine/6000.7/script-reference/unityengine/graphics/rendermeshinstanced.md), [CommandBuffer.DrawMeshInstanced](/engine/6000.7/script-reference/unityengine/rendering/commandbuffer/drawmeshinstanced.md).

## CopyProbeOcclusionArrayFrom(Vector4\[], int, int, int)

This function copies the source array into a Vector4 property array named `unity_ProbesOcclusion` with the specified source and destination range for use with instanced Shadowmask rendering.

```csharp
public void CopyProbeOcclusionArrayFrom(Vector4[] occlusionProbes, int sourceStart, int destStart, int count)
```

### Parameters

**** (\[Vector4\[]]\(/engine/6000.7/script-reference/unityengine/vector4)): The array of probe occlusion values to copy from.**** (\[int]\(https\://learn.microsoft.com/dotnet/api/system.int32)): The index of the first element in the source array to copy from.**** (\[int]\(https\://learn.microsoft.com/dotnet/api/system.int32)): The index of the first element in the destination MaterialPropertyBlock array to copy to.**** (\[int]\(https\://learn.microsoft.com/dotnet/api/system.int32)): The number of elements to copy.

### Remarks

If the array property doesn't exist on the MaterialPropertyBlock, it will be created with the length of the spcified range.

Call [LightProbes.CalculateInterpolatedLightAndOcclusionProbes](/engine/6000.7/script-reference/unityengine/lightprobes/calculateinterpolatedlightandocclusionprobes.md) to calculate probe occlusion values at the given world space positions.

ArgumentNullException is thrown if `occlusionProbes` is `null`.

ArgumentOutOfRangeException is thrown if the source or destination range is invalid.

Note that all MaterialPropertyBlock arrays can only have a maximum of 1023 elements. Warnings are printed and the excess array elements are ignored if the source array exceeds the range.

Additional Resources: [MaterialPropertyBlock.CopySHCoefficientArraysFrom](/engine/6000.7/script-reference/unityengine/materialpropertyblock/copyshcoefficientarraysfrom.md), [Graphics.RenderMeshInstanced](/engine/6000.7/script-reference/unityengine/graphics/rendermeshinstanced.md), [CommandBuffer.DrawMeshInstanced](/engine/6000.7/script-reference/unityengine/rendering/commandbuffer/drawmeshinstanced.md).
