|
|
//======= Copyright (c) Valve Corporation, All rights reserved. ===============
//
// Purpose: Sets cubemap to use in the compositor.
//
//=============================================================================
using UnityEngine;using Valve.VR;
namespace Valve.VR{ public class SteamVR_Skybox : MonoBehaviour { // Note: Unity's Left and Right Skybox shader variables are switched.
public Texture front, back, left, right, top, bottom;
public enum CellSize { x1024, x64, x32, x16, x8 } public CellSize StereoCellSize = CellSize.x32;
public float StereoIpdMm = 64.0f;
public void SetTextureByIndex(int i, Texture t) { switch (i) { case 0: front = t; break; case 1: back = t; break; case 2: left = t; break; case 3: right = t; break; case 4: top = t; break; case 5: bottom = t; break; } }
public Texture GetTextureByIndex(int i) { switch (i) { case 0: return front; case 1: return back; case 2: return left; case 3: return right; case 4: return top; case 5: return bottom; } return null; }
static public void SetOverride( Texture front = null, Texture back = null, Texture left = null, Texture right = null, Texture top = null, Texture bottom = null) { var compositor = OpenVR.Compositor; if (compositor != null) { var handles = new Texture[] { front, back, left, right, top, bottom }; var textures = new Texture_t[6]; for (int i = 0; i < 6; i++) { textures[i].handle = (handles[i] != null) ? handles[i].GetNativeTexturePtr() : System.IntPtr.Zero; textures[i].eType = SteamVR.instance.textureType; textures[i].eColorSpace = EColorSpace.Auto; } var error = compositor.SetSkyboxOverride(textures); if (error != EVRCompositorError.None) { Debug.LogError("<b>[SteamVR]</b> Failed to set skybox override with error: " + error); if (error == EVRCompositorError.TextureIsOnWrongDevice) Debug.Log("<b>[SteamVR]</b> Set your graphics driver to use the same video card as the headset is plugged into for Unity."); else if (error == EVRCompositorError.TextureUsesUnsupportedFormat) Debug.Log("<b>[SteamVR]</b> Ensure skybox textures are not compressed and have no mipmaps."); } } }
static public void ClearOverride() { var compositor = OpenVR.Compositor; if (compositor != null) compositor.ClearSkyboxOverride(); }
void OnEnable() { SetOverride(front, back, left, right, top, bottom); }
void OnDisable() { ClearOverride(); } }}
|