URP 管线下的 AREngine 预览流绘制

本文介绍了如何在 Unity 的 Universal Render Pipeline (URP) 下,使用 C# 和 Shader 实现 Huawei AREngine 预览流的绘制。通过创建自定义的 ARBackgroundRenderFeature 和 RenderPass,实现了预览流在 URP 中的无缝集成。在 PC 平台,由于平台差异,需要额外处理以模拟手机上的预览效果。文章还强调了在 URP 管线中完全切换 AREngine 需要对其他渲染部分进行相应调整。

huawei AREngine 默认使用 builtin 渲染管线绘制预览流, 在如今行业普遍使用的自定义渲染管线有点儿过时。 看 ARFoundation 的实现, 已经默认支持builtin和urp的无缝切换, 于是就想着把 AREngine 的预览流绘制使用urp来实现一遍。

builtin的预览流实现:

首先预览流信息直接由GPU端直传到 glsl(shader)里了, 这个不需要经过cpu, 比如说转yuv这些格式, 这个效率是非常高了。 像官方c#里的代码的实现很多都是冗余的代码, 完全没有必要且可以删减。

AREngine渲染预览流

真正传递camera信息过来是在glsl里使用了特使的标记 samplerExternalOES:

 uniform samplerExternalOES _MainTex;

关于Android是如何获取预览流并绑定纹理具体可以参考链接

在使用 samplerExternalOES 纹理前, 需要开启camera, 这个步骤既可以通过 AREngine的 SesssionComponent 组件, 也可以使用 unity 自带的 WebCamera来实现。 获取到纹理之后, 如何显示在屏幕上呢?

AREngine 使用的 CommandBuffer Blit, 这点跟 ARCore是一致的, 且绑定了 BeforeForwardOpaque、BeforeGBuffer 两个Event, 分别对应 前向渲染 和延时渲染。


                
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值