gpt4 book ai didi

unity3d - Unity、skydome 和 far clipping

转载 作者:行者123 更新时间:2023-12-04 08:38:04 25 4
gpt4 key购买 nike

我正在为 movil VR 开发,所以这里的表演是强制性的。

在 VR 的每一个良好实践中都写着避免 unity 的天空盒并改用天穹。我在 blender 中用它的纹理创建了一个圆顶。

我将圆顶导入为 fbx,应用移动/Unlit 着色器和纹理图像,它看起来很棒。

我的问题是,在运行游戏时,穹顶超出了远剪裁平面。选项:

  • 设置更大的远剪切平面,它会导致很多我想剪切的东西..不被剪切。
  • 设置某种二次渲染,我什至没有尝试,开销听起来很糟糕。
  • 设置高远裁剪平面,然后将其他所有内容的每层剔除设置得较低,这可行但会导致分辨率问题,因为“ Action ”实际上发生在玩家附近。

我没有测试,但我很确定对于 VR 中的圆顶,我们可以使用单个渲染作为背景,双眼都一样(因为它是无限的,不应该有视差。


我按照建议做了,添加了第二个摄像头,Clear Flags: Depth only , culling mask only DomeLayer并实际将相机移动到DomeLayer主摄像头(来自 googleVR 演示场景)设置为 Clear Flags: Don't clear , 剔除掩码到 Everything but DomeLayer

虽然有点效果但是

  1. 两个摄像头之间存在不同步。 enter image description here注意第一个小锥体(主摄像机)的角度和较大的外锥体(圆顶摄像机)的方向,顺便说一句,我不能将摄像机设置为左摄像机或右摄像机的子摄像机,因为它们在我开始游戏之前不存在.

  2. 打开第二个摄像头时的开销有点令人印象深刻.. enter image description here我关闭了半球摄像机,让它运行一段时间然后重新打开,注意 SetPass 和任何其他指标。第二个摄像头的影响是丑陋的..

我在一台没有专用显卡的笔记本电脑上运行,但仍然存在开销,而且它是为了在移动设备上运行..

我做错了什么吗?

最佳答案

您可以使用一些着色器技巧和单个相机来完成此操作。

创建一个新的无光照着色器。

设置 Material 的 RenderQueue 以在几何体之后渲染。这将减少 overdraw 。 https://docs.unity3d.com/Manual/SL-SubShaderTags.html

尝试

"Queue"="Geometry+1"

禁用深度写入 (Zwrite Off) - 这可以节省性能,并防止您的天穹剪裁任何透明度。

启用深度测试 (ZTest LEqual) - 这可以防止您的天空球遮挡其他几何体。

在顶点着色器中,您可以通过摆弄近/远裁剪平面来创建“无穷大”天空球的错觉。

Proj Mat [2][2] = -(far+near) / (far - near)
Proj Mat [3][2] = -2*far*near / (far - near)

http://www.terathon.com/gdc07_lengyel.pdf

float4x4 newMat= UNITY_MATRIX_P;
newMat[2][2]= -(1001.0/999.0);
newMat[3][2]= -2*1000.0/999.0;
v.vertex.xyz *= 100;
v.vertex = mul(UNITY_MATRIX_V,v.vertex);
o.vertex = mul(newMat,v.vertex);

关于unity3d - Unity、skydome 和 far clipping,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42923226/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com