• 性能优化——渲染优化笔记


    影响渲染效率的两个基本参数:DrawCall和Triangle
        中低端机上Batch的主题范围(5%~95%)控制在[0,250]以内
        面数:lod的方式来降低渲染面数
        Camera.Render函数堆栈分析:
            RenderForward.RenderLoopJob的自身消耗比较高通常是由于Batch数量比较高告知的
            Culling耗时在10%~20%的范围比较合理,如果较高可以排查一下几个方面
                GameObject小物件数量 如果数量过多可以采用动态加载  分块显示   CullingGroup Culling Distance等方法优化Culling的耗时
                如果项目中使用了多线程渲染并且开启了OcclusionCulling,通常会导致子线程的压力过大导致整体Culling过高  虽然OcclusionCulling降低了渲染消耗但是自身的消耗也值得注意需要研发团队测试消耗再确定是否需要开启这个功能
            Render.Mesh 对应的是无法合批的渲染耗时,它的调用次数对应相应的Batch数量
            ParticleSystem.ScheduleGeometryJobs:指在Culling之前主线程要等待子线程计算Particle的位置,然后才能Culling。建议降低粒子复杂程度
            ParticleSystem.Draw:粒子的DrawCall数量  如果该函数过高可以考虑减少粒子系统的数量【真人真机测试->内存管理->具体资源信息->粒子系统】
                可以通过图集和调整Order in Layer减少粒子渲染的穿插
            Shader.CreateGPUProgram:shader第一次渲染时候产生的消耗,与shader的复杂程度相关 对此可以将Shader通过ShaderVariantCollection进行预加载,加载后通过ShaderVariantCollection.WarmUp来触发Shader.CreateGPUProgram,并缓存此csv,避免重复调用
            《一种Shader变体收集和打包编译优化的思路》https://answer.uwa4d.com/question/5da86670e84db43d6efbda72    
        开启多线程渲染:由于uwa线上报告CPU时间占用只统计了主线程耗时,如果开开起来多线程渲染建议内部测试时候提交两个版本便于分析渲染平静
        GPU Instancing:用于草  树木  建筑等在场景中重复出现的事物时,有显著优化
        SPR Batcher:注意:Shader需要兼容SRP   粒子不支持   shader变体会打断DC合批

  • 相关阅读:
    H7-TOOL的CANFD/CAN接口脱机烧写操作说明, 已经更新(2022-07-12)
    springboot+shiro+layuimini实现后台管理系统的权限控制(一)基础环境搭建
    第七章(1):深度神经网络的基本结构、训练方法和在机器学习中的重要性
    delphi调用edge的截图功能
    百度地图——轨迹上传
    Docker 环境 Nacos2 MySQL8
    VirtualBox 中 Ubuntu 无法打开terminal
    linux下mysql8安装
    nginx源码分析--基数树
    JAVA在线考试系统计算机毕业设计Mybatis+系统+数据库+调试部署
  • 原文地址:https://blog.csdn.net/qq_43761888/article/details/126003083