zoukankan      html  css  js  c++  java
  • Unity3d的批渲染 batch rendering

    批渲染(Batch)

    batch render 是大部分引擎提高渲染效率的方法,基本原理就是通过将一些渲染状态一致的物体合成一个大物体,一次提交给gpu进行绘制,假设不batch的话,就要提交给非常多次,这能够显著的节省drawcall,实际上这主要节省了cpu的时间。cpu从提交多次到提交一次。对gpu来说也不用多次切换渲染状态。当然能batch的前提一定是渲染状态一致的一组物体。

    Unity3d的批渲染分为两种,动态和静态


    静态批

    要求:必须使用同一张material,然后在编辑器里设置为static batching的。
    特点:静态批是无法运动的。

    所以一般制作流程上,对于场景这些静态的物体都採用静态批。美术会依据场景的规模,将相邻的一片物件的贴图合并到一张或几张1024或512的大图上,这样这些物件能够使用同一个material。就能够静态批在一起。大幅节省dc。
    静态批的时候Unity3d会在执行时生成一个合并的大模型。而且为这个模型指定一张共同的贴图。所以这个批在一起的数量是有限的,假设批在一起的定点数过多,它就会自己主动分成两个批。一个静态批的上限我自測大约在60000多个顶点单元。

    动态批

    动态批是对那些没有标记成static batching的物体在runtime unity自己主动将他们批在一起。这个是能够支持运动物体的,可是限制较为严格:
    1.一个批次总顶点单元少于900
    2.批在一起的全部的模型应用相同的缩放值
    3.使用同样的材质
    4.同样的一张lightmap
    5.不能使用多pass的shader
    6.不能接收阴影

    所以通常是小的运动的模型才比較easy动态批在一起。当然unity又说可能在兴许版本号放宽这个限制

  • 相关阅读:
    python gzip get url
    nginx 日志解析,nginx缓存
    Keepalived
    SEO 搜索引擎优化
    检测网站是否支持gzip的本地代码
    使用logrotate做nginx日志轮询
    YUI Compressor下载
    Adobe Illustrator有 机会装一下
    同步时间
    买不起书啊nginx http server filetype:pdf 30刀
  • 原文地址:https://www.cnblogs.com/yutingliuyl/p/7146452.html
Copyright © 2011-2022 走看看