Skip to content

multiview

MultiView用于优化XR设备上的渲染效率,在引擎中默认是开启的。在使用Multiview时,可以通过单次渲染生成左右眼视图,因此在自定义Shader中需使用内建变量gl_ViewID_OVR分别访问左右眼的相机信息,从而绘制出正确的左右眼视图。

对于左右眼信息的访问,如NS_MATRIX_V视图矩阵、NS_MATRIX_P投影矩阵、NS_CAMERA_POSITION相机位置等信息,可以参考章节5.6.2.9Common/PerCamera.glsl的内容。

在使用MultiView时,单次渲染会将内容输出到绑定了两层纹理数组的FBO上,因此Shader中对于采样器、采样坐标需进行处理,相关采样器与宏定义可以参考章节5.6.2.8Common/MultiView.glsl。

Shader使用示例 alt textalt text

默认创建的MaterialShader模块中已经包含对MultiView扩展的声明:

字段说明
#NS_DECLARE_MULTIVIEW在XR设备上,相当于“#extension GL_OVR_multiview2 : enable”,在其他平台,该字段无任何意义
#NS_DECLARE_MULTIVIEW_NUM在XR设备上,相当于“layout (num_views = 2) in;”,在其他平台,该字段无任何意义