MeshDrawCommand派发机制

所谓MeshDrawCommand的派发机制,即生成之后分派到对应Pass并在绘制的时候调用!

我将其与生成分开,派发机制就有筛选与派发两个阶段

一、筛选

所谓筛选就是对可见性,相关性的检测,力图减少无用功。

可见性:对于生成了的MeshDrawCommands,在Render函数里边InitView的时候要进行场景可见性的检测与剔除。如何实现?将对应几何体的MeshDrawCommand排除掉!这是在ComputeViewVisibility函数里边实现的。

相关性:场景中有多个物体,并且有多个pass,那么不可能说每个所有物体都走所有pass,因此就要进行相关性的检测,相关性检测分为静态物体与动态物体分开进行,两者都是由ComputeViewVisibility函数发起:

静态物体相关性:调用了ComputeAndMarkRelevanceForViewParallel函数:

ComputeAndMarkRelevanceForViewParallel(RHICmdList, Scene, View, ViewCommands, ViewBit, HasDynamicMeshElementsMasks, HasDynamicEditorMeshElementsMasks, HasViewCustomDataMasks);

实现静态物体MeshDrawCommand的与pass的相关性测试与标记。最终静态物体所需的MeshDrawCommand都会用参数ViewCommands记录下来。

跟踪ViewCommands:

定义:

FViewCommands& ViewCommands = ViewCommandsPerView[ViewIndex];调用:

ComputeAndMarkRelevanceForViewParallel(…,&ViewCommands,…)

    new FRelevancePacket(&):ViewCommands(传递引用)//传入&参数:Packets.Add(Packet);

         FRelevancePacket ::AnyThreadTask()//再调用此函数:Packets[Index]->AnyThre
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值