繁体   English   中英

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

[英]Google cardboard for unity disables AA on android device

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

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

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

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

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

干杯

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

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

  1. 关闭Cardboard.SDK.nativeDistortionCorrection,以便Unity直接绘制到屏幕上,或者
  2. 编辑Cardboard.CreateStereoScreen()并更改在那里分配的RenderTexture上的设置。

但是,失真的本机代码重新渲染不会在帧缓冲区中使用抗锯齿,所以我不确定你会在#2中看到多少效果。 无论如何,肯定会有性能损失。

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

Unity 5运行Google Cardboard SDK v0.5 -

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

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

如果您不想关闭失真校正,则需要将纹理的深度从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);
  }

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM