使用unity开发Pico程序,场景中锯齿问题

发布时间 2023-12-02 15:37:43作者: 天翊无影

1、问题

使用unity【非HDR】开发Pico程序,场景中锯齿问题,设置了unity的抗锯齿和渲染方式,及悬挂抗锯齿的脚本,都不能很好的解决项目中图片、文字的锯齿问题,通过摸索找到了妥善的方法

1、修改项目中图片的 GenerateMIpMaps 为勾选状态,MipMapsPreserveCoverage这个可以未勾选,若是勾选则把其下属属性 改成 1 若不然图片在pico中出现 界面分层的问题

2、在Awake中 添加  XRSettings.eyeTextureResolutionScale=2f 此项渲染会消耗比较大,还需看情况进行修改

这样场景的图片和文字会变得无比的清晰

pico相关知识地址

https://developer-cn.pico-interactive.com/document/unity/modify-eye-texture-resolution/

2、引用

修改 Eye Buffer 分辨率大小

Eye Buffer(即眼部缓冲区)处于 VR 设备端 3D 图像渲染的中间一环。在渲染过程中,系统会将每只眼睛的标准视图渲染到 Eye Buffer 中,然后将 Eye Buffer 作为渲染纹理提供给 ATW 线程进行畸变和采样处理。
Eye Buffer 分辨率(即渲染分辨率)大小会影响画面质量和应用性能。分辨率越低,画面质量越低,但同时也会降低延迟并提升应用性能。反之,分辨率越高,画面质量越高,但同时也会提高延迟并降低应用性能。你可根据实际情况,通过调整渲染分辨率来提高图像质量或改善性能。

注意事项

提高应用的渲染分辨率可提升画面质量,但可能会对设备的电池寿命造成潜在影响,此外,根据所显示内容的渲染压力,可能会导致 CPU/GPU 节流。通过默认使用较低分辨率的方式,能够确保设备在电源消耗和性能之间保持良好的平衡,但会降低画面质量。

使用建议

  • 如果你的应用已经具备良好的性能,则可在项目代码库中增加像素密度,提高渲染分辨率,从而提供更加清晰的视觉效果。反之,如果应用无法保持良好的性能,则可以通过降低渲染分辨率来提升性能,但这会降低视觉质量。
  • 修改 Eye Buffer 像素大小时,系统总是会重新分配眼部纹理,所以该操作成本较高。如果需要在应用运行时动态修改眼部渲染像素,可以考虑修改渲染视口尺寸。
  • 根据 PICO 商店应用审核标准,你需确保应用在满电设备上运行至少 45 分钟而不触发低电量警告。建议你测试应用的热行为和电池行为,以尽可能地避免意外问题,同时最大化设备的性能和电池寿命。
  • 修改方法

    Eye Buffer 分辨率值默认为 1.0,一般不推荐修改。根据实际需要,你可以通过修改 XRSettings.eyeTextureResolutionScale 的值来修改 Eye Buffer 分辨率大小。分辨率取值范围为 0.8 至 2.0。值越大,分辨率越高。不建议设置高于 1.5 的值。
XRSettings.eyeTextureResolutionScale = 1.0f;
如果使用了通用渲染管线(URP),请使用如下方法:
if (GraphicsSettings.renderPipelineAsset != null) {  ((UniversalRenderPipelineAsset)GraphicsSettings.renderPipelineAsset).renderScale = 1;  
}