IMHOTEP Framework
 All Classes Namespaces Functions Variables Enumerations Enumerator Properties Pages
SteamVR_SphericalProjection.cs
1 //======= Copyright (c) Valve Corporation, All rights reserved. ===============
2 //
3 // Purpose: Applies spherical projection to output.
4 //
5 //=============================================================================
6 
7 using UnityEngine;
8 
9 [ExecuteInEditMode]
10 public class SteamVR_SphericalProjection : MonoBehaviour
11 {
12  static Material material;
13 
14  public void Set(Vector3 N,
15  float phi0, float phi1, float theta0, float theta1, // in degrees
16  Vector3 uAxis, Vector3 uOrigin, float uScale,
17  Vector3 vAxis, Vector3 vOrigin, float vScale)
18  {
19  if (material == null)
20  material = new Material(Shader.Find("Custom/SteamVR_SphericalProjection"));
21 
22  material.SetVector("_N", new Vector4(N.x, N.y, N.z));
23  material.SetFloat("_Phi0", phi0 * Mathf.Deg2Rad);
24  material.SetFloat("_Phi1", phi1 * Mathf.Deg2Rad);
25  material.SetFloat("_Theta0", theta0 * Mathf.Deg2Rad + Mathf.PI / 2);
26  material.SetFloat("_Theta1", theta1 * Mathf.Deg2Rad + Mathf.PI / 2);
27  material.SetVector("_UAxis", uAxis);
28  material.SetVector("_VAxis", vAxis);
29  material.SetVector("_UOrigin", uOrigin);
30  material.SetVector("_VOrigin", vOrigin);
31  material.SetFloat("_UScale", uScale);
32  material.SetFloat("_VScale", vScale);
33  }
34 
35  void OnRenderImage(RenderTexture src, RenderTexture dest)
36  {
37  Graphics.Blit(src, dest, material);
38  }
39 }
40