huawei AREngine 默认使用 builtin 渲染管线绘制预览流, 在如今行业普遍使用的自定义渲染管线有点儿过时。 看 ARFoundation 的实现, 已经默认支持builtin和urp的无缝切换, 于是就想着把 AREngine 的预览流绘制使用urp来实现一遍。
builtin的预览流实现:
首先预览流信息直接由GPU端直传到 glsl(shader)里了, 这个不需要经过cpu, 比如说转yuv这些格式, 这个效率是非常高了。 像官方c#里的代码的实现很多都是冗余的代码, 完全没有必要且可以删减。
真正传递camera信息过来是在glsl里使用了特使的标记 samplerExternalOES:
uniform samplerExternalOES _MainTex;
关于Android是如何获取预览流并绑定纹理具体可以参考链接。
在使用 samplerExternalOES 纹理前, 需要开启camera, 这个步骤既可以通过 AREngine的 SesssionComponent 组件, 也可以使用 unity 自带的 WebCamera来实现。 获取到纹理之后, 如何显示在屏幕上呢?文章来源:https://www.toymoban.com/news/detail-433358.html
AREngine 使用的 CommandBuffer Blit, 这点跟 ARCore是一致的, 且绑定了 BeforeForwardOpaque、BeforeGBuffer 两个Event, 分别对应 前向渲染 和延时渲染。文章来源地址https://www.toymoban.com/news/detail-433358.html
m_VideoCommandBuffer = new CommandBuffer
到了这里,关于URP 管线下的 AREngine 预览流绘制的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!