2017-01-16 4 views
0

私は、Pixelの携帯電話でGoogleの空想のためのゲームに取り組んでいます。私はレンズ歪みに合わせるために各目をRenderTextureにレンダリングするディストーションシェーダで再生する方法を探しています。Unityデイドリームディストーションシェーダ

私はそれは私が歪みを担当している、UnlitTexture.shaderを見つけることが許さStereoRenderEffect.cs

using UnityEngine; 

/// @cond 
[RequireComponent(typeof(Camera))] 
[AddComponentMenu("GoogleVR/StereoRenderEffect")] 
public class StereoRenderEffect : MonoBehaviour { 
#if !UNITY_HAS_GOOGLEVR || UNITY_EDITOR 
    private Material material; 

    private Camera cam; 

    private static readonly Rect fullRect = new Rect(0, 0, 1, 1); 

    void Awake() { 
    cam = GetComponent<Camera>(); 
    } 

    void Start() { 
    material = new Material(Shader.Find("GoogleVR/UnlitTexture")); 
    } 

    void OnRenderImage(RenderTexture source, RenderTexture dest) { 
    GL.PushMatrix(); 
    int width = dest ? dest.width : Screen.width; 
    int height = dest ? dest.height : Screen.height; 
    GL.LoadPixelMatrix(0, width, height, 0); 
    // Camera rects are in screen coordinates (bottom left is origin), but DrawTexture takes a 
    // rect in GUI coordinates (top left is origin). 
    Rect blitRect = cam.pixelRect; 
    blitRect.y = height - blitRect.height - blitRect.y; 
    RenderTexture oldActive = RenderTexture.active; 
    RenderTexture.active = dest; 
    Graphics.DrawTexture(blitRect, source, fullRect, 0, 0, 0, 0, Color.white, material); 
    RenderTexture.active = oldActive; 
    GL.PopMatrix(); 
    } 
#endif // !UNITY_HAS_GOOGLEVR || UNITY_EDITOR 
} 

に次のコードを発見しました。 #if !UNITY_HAS_GOOGLEVR || UNITY_EDITOR のように、エディタで実行している場合にのみ機能します。私はアプリが実際のデバイス上で実行されているときに同じことをする方法を探していますが、それを見つけることはできません。誰かがどこを見るか知っていますか?

+1

このコードは、エディタでの実際のビルドの表示をシミュレートします。だから、GVR SDKはすでにデバイスビルドのためにそれをやっています。これを手動で行う必要はありません。 –

+0

私の知る限りでは、私の必要性のために 'StereoRenderEffect'シェーダを修正したいだけです。 2番目のフルスクリーンシェーダを追加するのは高価すぎるので、私はそれを微調整したい。 –

答えて

0

これは現在、DaydreamとUnityでは不可能です。

ただし、CardboardとUnityでこれを行うことはできます。