# Camera Node

## Description

Provides access to various parameters of the **Camera** currently being used for rendering. This is comprised of values the **Camera**'s GameObject, such as Position and Direction, as well as various projection parameters.

## Ports

| Name        | Direction           | Type  | Binding | Description |
|:------------ |:-------------|:-----|:---|:---|
| Position      | Output | Vector 3 | None | Position of the Camera's GameObject in world space |
| Direction       | Output | Vector 3 | None | The Camera's forward vector direction |
| Orthographic    | Output | Vector 1 | None | Returns 1 if the Camera is orthographic, otherwise 0 |
| Near Plane       | Output | Vector 1 | None | The Camera's near plane distance |
| Far Plane       | Output | Vector 1 | None | The Camera's far plane distance |
| Z Buffer Sign   | Output | Vector 1 | None | Returns -1 when using a reversed Z Buffer, otherwise 1 |
| Width       | Output | Vector 1 | None | The Camera's width if orthographic |
| Height       | Output | Vector 1 | None | The Camera's height if orthographic |

## Generated Code Example

The following example code represents one possible outcome of this node.

```
float3 _Camera_Position = _WorldSpaceCameraPos;
float3 _Camera_Direction = -1 * mul(UNITY_MATRIX_M, transpose(mul(UNITY_MATRIX_I_M, UNITY_MATRIX_I_V)) [2].xyz);
float _Camera_Orthographic = unity_OrthoParams.w;
float _Camera_NearPlane = _ProjectionParams.y;
float _Camera_FarPlane = _ProjectionParams.z;
float _Camera_ZBufferSign = _ProjectionParams.x;
float _Camera_Width = unity_OrthoParams.x;
float _Camera_Height = unity_OrthoParams.y;
```