用于统一的谷歌纸板在Android设备上禁用AA

时间:2015-04-14 16:50:45

标签: android unity3d google-cardboard

我正在开发使用谷歌纸板SDK统一的Android的简单VR应用程序。我正在使用unity 5(免费)和最新版本的纸板包装(0.4.9),我正在测试sony xperia z3 compact(lolipop)和三星galaxy note 3(kitkat)

我遇到的问题是,我无法打开抗锯齿,或者说google sdk包,似乎禁用了它。我不介意一些锯齿状的角落,但事实是那些角落在远离它们时会闪烁。我尝试将纹理分开(因为闪烁可能是重叠的结果),但问题仍然存在。

它不能成为android的统一导出的问题,因为如果我使用由统一提供的库存相机构建相同的项目(测试示例在google纸板统一包内提供),可以使用Cardboard主游戏对象,AA正在工作。它不能比这更简单,一旦立方体和一个摄像头...我尝试打开和关闭播放器设置中的32位显示缓冲区选项,尝试强制打开GL ES 2.0和各种其他勾选/取消勾选内部统一提示跨网,没有成功。

所以我的问题是,是否还有其他人有同样的问题。以及如何解决它?

我希望我的问题和对问题的描述足够详细。

干杯

4 个答案:

答案 0 :(得分:3)

Cardboard.cs类包含一个RenderTexture,它是相机渲染的内容,然后将其重新渲染到手机屏幕,并对镜头进行失真校正。这会绕过Unity对屏幕的正常渲染,因此项目的AA设置不会产生任何影响。

要了解Unity中AA设置的效果,您可以执行以下几项操作:

  1. 关闭Cardboard.SDK.nativeDistortionCorrection,以便Unity直接绘制到屏幕上,或
  2. 编辑Cardboard.CreateStereoScreen()并更改在那里分配的RenderTexture上的设置。
  3. 但是,失真的原生代码重新渲染不会在帧缓冲中使用抗锯齿,所以我不确定你会在#2中看到多少效果。无论如何,肯定会有性能损失。

答案 1 :(得分:0)

关闭失真校正解决了这个问题。然后,您可以将Unity项目反别名设置设置为4x或8x。现在看起来很棒 - 在iPhone 6 +上观看时不再犹豫不决。

Unity 5运行Google Cardboard SDK v0.5 -

关闭失真校正: 转到层次结构| CardboardMain |在Inspector中取消选中Distortion Correction

在Unity中启用4x或8x Anti Alasing: 转到编辑|项目设置|质量|在Inspector中将Anti Aliasing设置为4x或8x Multi Sampling。

答案 2 :(得分:0)

如果您不想关闭失真校正,则需要将纹理的深度从16位更改为32位,将纹理的格式更改为ARGB32。为此,请转到 BaseVRDevice.cs ,然后找到 CreateStereoScreen 功能并将其更改为

public virtual RenderTexture CreateStereoScreen() {
    Debug.Log("Creating new default cardboard screen texture.");
    return new RenderTexture(Screen.width, Screen.height,32, RenderTextureFormat.ARGB32);
  }

答案 3 :(得分:0)

我遵循了serg hov的建议,但即使在应用该修复后,AA也没有使用失真。

关闭失真是没有意义的,所以我想知道失真和AA工作的解决方案是什么。它适用于Gear VR,所以必须有一种方法让它适用于Cardboard VR。