u3d吧 关注:4,715贴子:7,948
  • 2回复贴,共1

【动态合批】

只看楼主收藏回复

batches == draw call
帧数是衡量效能的值 30 不卡 60流畅
动态合批 原理 实现(Unity实现)
条件:
相同材质球 正在视野中
================》有办法能够让不同的物件合批
符合条件的对象合并到一个DC中渲染
针对的物体 没有static的物体!!!!!!!!!!
DynamicBatching要勾上!
粒子的原理 :利用了四边形面片, 始终朝向摄像机
1.变到世界空间
2.一次DC全部绘制完
=====================
区别
1.动态合批 不需要 预先复制 模型顶点
2.运行时CPU消耗,世界空间变换开销
======================
无法合批
1.Mesh>900个面不合了
2.代码动态改变材质变量
3.顶点+法线+uv ====只能批处理300顶点以下
顶点+法线+uv0+uv1+切向量=========只能批处理180顶点以下
4.改变Renderer.material会造成一份材质拷贝,打断批处理
========================


IP属地:上海1楼2023-10-31 15:58回复
    动态中断情况:
    位置不相邻。中间夹杂不同材质其他物体
    1、符合条件 线 静态=》GPU Instancing=>动态
    2.缩放不能合批
    3.灯光贴图 有和没有不能合批(灯光数据作为 额外通道 存在 顶点数据不一样)
    4.多PassShader 不能合批,会切换渲染状态
    5.前向渲染中, 受到多个不同灯光影响不能合批


    IP属地:上海2楼2023-10-31 16:04
    回复
      广告
      立即查看
      例外情况:
      阴影
      阴影和物体自身不是一个贴图
      阴影支持合批
      阴影和物体分成不同的批次进行渲染
      只要shadow cast使用参数相同的也能进行dynamic batching
      CPU
      1.批处理,小的合成大的
      2.数据从内存加载到显存
      3.显存得到合并网格
      4.一次性提交到命令缓冲区 发出DC
      -------------------------------------------------
      粒子系统怎么优化?
      半透明粒子
      Unity:无法合批,物体使用不同的材质
      查阅文档:调整渲染队列,渲染次序调整
      ----------------------------------------------------
      蒙皮网格怎样渲染合批


      IP属地:上海3楼2023-10-31 16:17
      回复