# Prepare(IDeviceContext, IWorld, BufferSlice<Vector3>, float, int)

> Prepare the integrator.

## Definition

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

```csharp
public void Prepare(IDeviceContext context, IWorld world, BufferSlice<Vector3> positions, float pushoff, int bounceCount)
```

### Parameters

**** (\[IDeviceContext]\(/engine/6000.5/script-reference/unityengine/lighttransport/idevicecontext)): Device context.**** (\[IWorld]\(/engine/6000.5/script-reference/unityengine/lighttransport/iworld)): The integration World that Unity uses to ray trace against, when integrating validity.**** (\[BufferSlice\<Vector3>]\(/engine/6000.5/script-reference/unityengine/lighttransport/bufferslice1)): [BufferSlice](/engine/6000.5/script-reference/unityengine/lighttransport/bufferslice1.md) containing the probe positions to integrate.**** (\[float]\(https\://learn.microsoft.com/dotnet/api/system.single)): The offset to add to the rays traced from each probe position. You can use this parameter to prevent self-intersections when 32 bit floating point precision is an issue, for instance when integrating a large open world.**** (\[int]\(https\://learn.microsoft.com/dotnet/api/system.int32)): Number of light bounces.

### Remarks

The preparation can take a significant time if the world is large or OpenCL kernels haven't been written to cache yet.
