合成层

合成层

在向用户呈现渲染图像时,有时希望将场景的元素分离到不同的层中。每个这样的层可以单独渲染,然后合成在一起形成最终的场景。这可以帮助提高每个渲染层的稳定性和质量,但代价是一些性能。

这些层被称为合成层,Snapdragon Spaces SDK允许开发人员访问不同类型的合成层。以下是这些类型的简要总结。更多详细信息可以在特定引擎的文档中找到。

支持的渲染器

并非所有在此处描述的层都适用于所有渲染API(OpenGLES、Vulkan等)。有关更多详细信息,请参阅任何特定引擎的文档。

 

层类型

投影层

投影层代表从每只眼睛使用透视投影渲染的平面投影图像。这通常用于从用户的视点渲染虚拟世界。投影层是从主摄像机的透视图自动生成的,并渲染到XR头显。不需要采取任何措施来渲染这个自动生成的投影层。目前还不能提交额外的投影层。

 

四边形层

四边形层适用于显示用户界面元素或渲染到虚拟世界的2D内容,四边形层仅从前方可见,没有厚度。

Unity Gaze Pointer 合成层示例

 

深度层

深度层包含将深度信息匹配到最终图像的所需数据。深度图像仅与投影层一起提交。


仅支持VR

深度提交仅在选定的VR硬件上支持。在Unity中,可以通过打开“项目设置” > “XR插件管理” > “OpenXR”并选择深度提交模式为Depth 16位或Depth 24位来启用深度层。然后,深度图像对应于默认投影层将自动生成并自动提交,开发人员无需进一步操作。

排序顺序

所有合成层都按照“画家算法”进行排序和渲染,其中较低的层首先被渲染,较高的层在其上被渲染。

层的数量

最多可使用16个合成层。这个总数包括负责从主摄像机渲染内容的默认投影层 - 实际计数为1 + 15个额外的合成层。每个使用的层都会带来额外的性能开销。如果层的最大数量被超过,最高的层将不会被渲染。

提示!

为了获得最佳性能,请尽量使用较少的层。

 层的尺寸

合成层的最大允许尺寸由硬件确定,但通常支持高达16k纹理的尺寸。