美文网首页
CocosCreator游戏性能优化(3):GPU优化之降低计算

CocosCreator游戏性能优化(3):GPU优化之降低计算

作者: 小木沐木 | 来源:发表于2021-01-21 18:49 被阅读0次

    本文从降低计算或设计分辨率来分如何提升性能, 仅提供一些可参考的思路。

    本文链接  CocosCreator游戏性能优化(3):GPU优化之降低计算分辨率

    相关链接  CocosCreator游戏性能优化(1):性能分析工具

                     CocosCreator游戏性能优化(2):合批渲染之RenderToTarget

    一、降低计算分辨率

    GPU的Fragment Shader即片元着色器程序在执行的时候,会并行每个像素(严格定义是光栅化后的每个片元,也即resolution)都执行一次。

    此时主要的性能小号取决于两方面:

    1、片元着色器程序内部逻辑的复杂度和计算量。

    2、需要执行的片元数量。

    现在我们从削减片元数量的角度来提升性能

    假设我们的图片TextureA。应用了ShaderA。

    TextureA的宽高分别是1920和1080。

    此时我们的片元着色器程序执行次数calcCount = 1920*1080 = 2,073,600次。即200万次。

    这在很多普通机器上是可能存在性能问题的,即便shader逻辑不复杂。

    因此我们TextureA的宽高减半, 传入片元着色器程序。计算后的calcCount = 960*540= 518,400次。即50万次。

    执行完shader后通过线性拉伸来使用该处理过后地textureA,如下。

    TextureB = TextureA;

    TextureB.scale = 2;

    我们发现计算量降低为原来的1/4,而图的精度值仅降低了1/2.

    因此,我们我们在对图的渲染精度要求不高或不需要的情况下,应尽可能地降低其计算分辨率,来提升性能。

    通过上述分析启发,我们做游戏时,最初在决定设计分辨率的时候,应该预先考虑到这个问题。

    二、降低RenderTexture分辨率

            在使用GPU渲染到纹理时,可以尽量减小目标纹理分辨率。使片元数量降低,从而降低计算量。

            离屏渲染,和目标FrameBuffer分辨率有关。如果目标纹理分辨率能够降低,那么游戏中大部分对象的分辨率都会比较低,因而会带来非常可观的性能效率提升。

            最后将RenderTexture传入节点进行scale拉伸,得到我们需要的实际显示效果。

    本文链接    CocosCreator游戏性能优化(3):GPU优化之降低计算分辨率

    相关链接    CocosCreator游戏性能优化(1):性能分析工具

                       CocosCreator游戏性能优化(2):合批渲染之RenderToTarget

    相关文章

      网友评论

          本文标题:CocosCreator游戏性能优化(3):GPU优化之降低计算

          本文链接:https://www.haomeiwen.com/subject/xrudzktx.html