Version: 2019.4

# Matrix4x4.Perspective

マニュアルに切り替える
public static Matrix4x4 Perspective (float fov, float aspect, float zNear, float zFar);

## パラメーター

 fov Vertical field-of-view in degrees. aspect Aspect ratio (width divided by height). zNear Near depth clipping plane value. zFar Far depth clipping plane value.

## 戻り値

Matrix4x4 The projection matrix.

## 説明

Create a perspective projection matrix.

Projection matrices in Unity follow OpenGL convention, i.e. clip space near plane is at `z=-1`, and far plane is at `z=1`.

The returned matrix embeds a z-flip operation whose purpose is to cancel the z-flip performed by the camera view matrix. If the view matrix is an identity or some custom matrix that doesn't perform a z-flip, consider multiplying the third column of the projection matrix (i.e. m02, m12, m22 and m32) by -1.

Note that depending on the graphics API used, projection matrices in shaders can follow different convention, for example the D3D-style clip space has near plane at zero and far plane at one; and "reversed Z" projection has near plane at one and far plane at zero. To calculate projection matrix value suitable for passing to shader variables, use GL.GetGPUProjectionMatrix.

```using UnityEngine;public class ExampleScript : MonoBehaviour
{
void Start()
{
// create projection matrix: 60 FOV, square aspect,
// near plane 1, far plane 100
var matrix = Matrix4x4.Perspective(60, 1, 1, 100);
// will print:
// 0.20000 0.00000  0.00000  0.00000
// 0.00000 0.20000  0.00000  0.00000
// 0.00000 0.00000 -0.02020 -1.02020
// 0.00000 0.00000  0.00000  1.00000
Debug.Log("projection matrix\n" + matrix);        // get shader-compatible projection matrix value
var shaderMatrix = GL.GetGPUProjectionMatrix(matrix, false);
// on a Direct3D-like graphics API, will print:
// 0.20000 0.00000 0.00000 0.00000
// 0.00000 0.20000 0.00000 0.00000
// 0.00000 0.00000 0.01010 1.01010
// 0.00000 0.00000 0.00000 1.00000
Debug.Log("shader projection matrix\n" + shaderMatrix);
}
}
```