我正在为movil VR开发,所以这里的表演是强制性的。
它是写在每一个虚拟现实的良好实践中,以避免统一的天框和使用天穹代替。我在搅拌机里创造了一个圆顶,它的质地和所有的东西。
我导入穹顶作为fbx,应用移动/无光着色器和纹理图像,它看起来很棒。
我的问题是,当运行游戏时,圆顶从遥远的剪裁飞机上出来。选项:
我没有测试,但我很确定在虚拟现实的圆顶,我们可以使用单一渲染作为背景,相同的两个眼睛(因为它是在无限的,不应该视差。
我这样做了,添加了第二个相机,Clear Flags: Depth only,culling mask only DomeLayer,实际上把相机移到了DomeLayer主摄像机(从googleVR演示场景)设置为Clear Flags: Don't clear,将掩码设置为Everything but DomeLayer。
它很管用,但是

注意小的第一锥的角度(主摄像机)和更大的外锥的方向(圆顶摄像机),顺便说一下,我不能将相机设置为左或右摄像机的子级,因为在我开始游戏之前它们并不存在。

我关掉了圆顶相机,让它运行了一段时间,打开它,注意到SetPass和任何其他指标。第二部相机的冲击力很难看。
我在一个没有专用显卡的笔记本上运行,但是开销在那里,这个东西应该在移动设备上运行。
我做错什么了吗?
发布于 2017-04-07 16:12:30
你可以通过一些着色技巧和一台相机来完成这一任务。
创建一个新的未亮着色器。
将材料的RenderQueue设置为几何图形后的渲染。这将减少透支。https://docs.unity3d.com/Manual/SL-SubShaderTags.html
试一试
"Queue"="Geometry+1"禁用深度写入(Zwrite )-这节省了性能,并防止您的天穹剪裁任何透明度。
启用深度测试(ZTest LEqual) --这可以防止天球遮挡其他几何学。
在顶点着色器中,通过摆弄近/远剪辑平面,你可以在“无穷大”处创造天球的错觉。
Proj Mat [2][2] = -(far+near) / (far - near)
Proj Mat [3][2] = -2*far*near / (far - near)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);发布于 2017-03-21 18:13:20
为您的skyDome添加一个新相机,并执行以下步骤
发布于 2017-03-21 17:59:45
只需使用两个摄像头,第一个会渲染你所有的环境,第二个只会渲染你的圆顶。只需通过以下步骤更改每个摄像机将呈现的内容:
1)第一摄像机:将标签设置为MainCamera,然后参数清除标志:不清除和筛选掩码:混合.(选择除DomeLayer之外的每一层)
2)创建一个名为DomeLayer的新层
3)创建第二个摄像机,作为第一个摄像机的子摄像机,然后设置参数:、Clear标志:深度仅限和剔除面具: DomeLayer。另外,第二个照相机Depth参数应该是-1。
4)然后将Dome对象放置在DomeLayer上,将所有其他对象放置在除DomeLayer之外的任何层上
下面是一个例子场景的一些截图:
第一摄像机:

第二摄像机(第一台相机的子摄像机):

通过这种方式,您可以单独设置两个摄像机的剪辑平面,而不影响性能。
https://stackoverflow.com/questions/42923226
复制相似问题