• LOD优化


    没错……最近在倒腾Simplygon,用于LOD的生成。没错,这个东西非常酷,从方方面面提升了帧率……读了官网的关于LOD优化的文章,感觉很有感触,因此写下这篇博客。


    Over-Shading

    硬件的机能是有限的,因此,我们需要对硬件的机能进行最有效的利用和榨取……众所周知的,小多边形对于硬件的利用效率是比较低下的。众多的硬件供应商都推荐屏幕上最小的三角形都至少是16个像素大小,而且尽量避免细长的三角形——因为这种三角形一方面边太长,另一方面对于面积的贡献也不大。

    下面给出了两个三角形以及屏幕上的像素点,而且像素点被集成在2*2的Quads中。所有的像素操作都是针对于Quad的。

    Triangle&Pixels

    在着色的过程中,如果三角形盖住了这个像素点,那么这个像素点就会被画出来。由于像素的操作都是针对于Quad的,那么可以看出来小三角形对于机能的利用率更低:

    Efficiency

    从上图中可以看出来右边的三角形对硬件有着更好的利用率,虽然只是大了一点点……

    而且,因为现在大多数的GPU都支持更高位数的SIMD units,下图中,我们要覆盖住16个像素才能够最大限度的利用硬件。
    Wider SIMD Units

    总而言之言而总之,如果一个Mesh的面越细分,那么渲染起来就越贵。如果使用LOD的优化,那么就可以将远处的Mesh的细分面数减少,从而提升硬件的利用效率。


    Data Per Frame

    对于XBox One以及PS4来说,数据带宽的传递速度上限为100GB/s,如果说我们的游戏运行帧率为60fps,那么每帧能够传输的带宽最多只能达到1.6GB/s。在某些游戏中,这可能成为瓶颈。

    如果使用LOD优化,那么能够减少远处的物件的顶点数,从而优化这种情况。此外,还可以使用mip-map来减少传输的贴图大小。最后,可以将极远的东西直接设为Invisible……虽然粗暴,但是还是很有效的。


    Draw Calls

    Draw call is the killer… ——沃·资基朔德

    现在的大多数GPU都很善于处理顶点数据和多边形数据,但是如果要新开一个Batch,这个开销还是不小的。每个新的材质以及新的物件都可能会新开这么一个Batch。

    因此如果要针对于Draw Call进行优化,一方面可以将各种物件进行merge,从而在一次Draw Call里面就绘制出来。另一方面,可以尝试将各种Texture集合成一个大的Texture,从而减少材质的Draw Call。

  • 相关阅读:
    我cnblogs的主题
    Scala Error: error while loading Suite, Scala signature Suite has wrong version expected: 5.0 found: 4.1 in Suite.class
    Spark之路 --- Scala用JFreeChart画图表实例
    Spark之路 --- Scala IDE Maven配置(使用开源中国的Maven库)和使用
    Spark之路 --- Windows Scala 开发环境安装配置
    epoll函数
    Linux网络编程目录
    函数wait和waitpid
    会话
    进程组
  • 原文地址:https://www.cnblogs.com/arrowinmyknee/p/5470394.html
Copyright © 2020-2023  润新知