# OnPreRender()

> Event function that Unity calls before a Camera renders the scene.

## Definition

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

```csharp
public void OnPreRender()
```

### Remarks

In the Built-in Render Pipeline, Unity calls `OnPreRender` on MonoBehaviours that are attached to the same GameObject as an enabled [Camera](/engine/6000.0/script-reference/unityengine/camera.md) component, just before that Camera renders the scene. Use `OnPreRender` to execute your own code at this point in the render loop; for example, you could change visual settings to affect the scene while a given Camera is rendering. `OnPreRender` can be a coroutine. For similar functionality that does not require the script to be on the same GameObject as a Camera component, refer to [Camera.onPreRender](/engine/6000.0/script-reference/unityengine/camera/onprerender-1.md). **Note**: `OnPreRender` depends on the Built-in Render Pipeline and won't be called in projects using the Scriptable or Universal Render Pieplines. For similar functionality in the Scriptable Render Pipeline, refer to [RenderPipelineManager](/engine/6000.0/script-reference/unityengine/rendering/renderpipelinemanager.md). Unity calls `OnPreRender` after the Camera performs its culling operation. This means that if you make a change that affects what the Camera sees, the change will take effect from the next frame. To make a change to what the Camera sees in the current frame, use [MonoBehaviour.OnPreCull()](/engine/6000.0/script-reference/unityengine/monobehaviour/onprecull.md). When Unity calls `OnPreRender`, the Camera's render target and depth textures are not yet set up. If you need to access these, you can execute code later in the render loop using a [CommandBuffer](/engine/6000.0/script-reference/unityengine/rendering/commandbuffer.md).

### Examples

```csharp

// This script lets you enable/disable fog per camera.
// by enabling or disabling the script in the title of the Inspector
// you can turn fog on or off per camera.

using UnityEngine;
using System.Collections;

public class ExampleClass : MonoBehaviour
{
    private bool revertFogState = false;

    void OnPreRender()
    {
        revertFogState = RenderSettings.fog;
        RenderSettings.fog = enabled;
    }

    void OnPostRender()
    {
        RenderSettings.fog = revertFogState;
    }
}
```
