在一些特定需求下,可能需要实现在VR中左右眼渲染不同的东西以实现相应的效果。比如,左右眼渲染左右眼全景图,模拟双眼立体效果,那么就需要左右眼去渲染不同的全景图。那么,要实现左右眼渲染不同内容,有两种不同的实现方法。
第一种,就是添加两个相机,这种方法只有在默认渲染管线的时候才能使用,并且效率是比较低的,因为多了两个相机,不仅增加了DrawCall,还可能导致帧率下降,机器发热等情况出现。所以不太建议用这种方法,不过,如果资源不是太大,太多,在不影响整体性能的情况下,这种方法,也是最简单,最容易实现的。具体实现方法是:文章源自大腿Plus-https://www.zhaoshijun.com/archives/1825
- 在 Main Camera 对象下创建两个子相机,并根据实际情况命名子相机(例如: LeftCamera 和 RightCamera)。
- 点击左右眼相机。
右侧 Inspector 面板中显示 Camera 设置框。
- 将左眼相机的 Target Eye 设置为 Left。
- 点击右眼相机。
右侧 Inspector 面板中显示 Camera 设置框。
- 将右眼相机的 Target Eye 设置为 Right。
- 然后设置左右眼渲染层级,只渲染对应层级的内容。主相机不渲染这两个相机渲染的层级。
第二种,这种方法是基于URP渲染管线的,在URP渲染管线中的Shader有一个EyeIndex,属性,可以根据这个属性去渲染不同内容,在URP渲染管线中,我做了两个Shader,一个是Cubemap的shader,一个是Texture2D的shader。可以实现全景图的效果。(我用的是shadergraph连线实现的,不太会写shader,只会用这种方式实现)文章源自大腿Plus-https://www.zhaoshijun.com/archives/1825
1,VREyeStereoRenderCubemap文章源自大腿Plus-https://www.zhaoshijun.com/archives/1825
文章源自大腿Plus-https://www.zhaoshijun.com/archives/1825
2,VREyeStereoRenderTexture2D文章源自大腿Plus-https://www.zhaoshijun.com/archives/1825
文章源自大腿Plus-https://www.zhaoshijun.com/archives/1825
除了用到这两个shader外,还需要一些设置,因为默认不支持EyeIndex输出。需要打开ProjectSetting->XR Plug-in Management下面对应的XR平台设置,将StereoRenderingMode改成Multiview就可以了。也就是打开立体渲染。文章源自大腿Plus-https://www.zhaoshijun.com/archives/1825 文章源自大腿Plus-https://www.zhaoshijun.com/archives/1825
评论