Untiy Native Render Plugin在VR中的绘制(二): 透明排序

这篇博客探讨了在Unity VR环境中使用Native Render Plugin遇到的透明物体排序问题及其解决方案。作者提出两种策略:1) 使用双Camera,一个用于不透明物体,另一个专门处理透明物体,确保Native渲染在两者之间;2) 利用CommandBuffer调用NativeRenderPlugin,在渲染管线中插入Native渲染。通过调整Camera参数、Culling Mask和Depth,以及利用OnWillRenderObject方法,实现了更灵活和高效的透明排序效果。
摘要由CSDN通过智能技术生成

上篇已经能在VR中画出来了, 但是还存在两个问题:
1. 透明物体会被Native画的东西挡住
2. VR中Native画的东西透视关系有点问题, 跟Unity绘制的场景不能很好地融合在一起

先来解决一个透明排序的问题, 这个问题有两个思路去解决:

双Camera

双Camera的思路就是, 一个Camera只画不透明物体, OnPostRender中回调Native Renderer, 另一个Camera只画透明物体. 这样Native的绘制就能在两者之间进行, 有几个细节:

  • 先保证两个Camera的参数一样
  • 第一个Camera的Culling Mask把TransparentFX去掉
  • 第二个Camera的Culling Mask只保留TransparentFX
  • 所有透明物体设置layer为TransparentFX
  • 第二个Camera的Clear Flags设置为Don’t Clear, 这样两个Camera的画面才能结合到一起
  • 第二个Camera的Depth设置成比第一个Camera大, 代表后画

插入CommandBuffer

Unity5.2在CommandBuffer入加入了调用NativeRenderPlugin的支持, 这就可以让我们可以在渲染管线的各个阶段之前插入我们想要的效果. 具体到我们的需求, 可以简化为:


    private CommandBuffer commandBuffer;

    void Start()
    {
        SetUnityStreamingAssetsPath(Application.streamingAssetsPath);

    
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值