zoukankan      html  css  js  c++  java
  • 性能一 Exploring Mobile vs. Desktop OpenGL Performance

     

    opengl insight

    Exploring Mobile vs. Desktop
    OpenGL Performance

    Jon McCaffrey

    前面那些内容以前看过 应该写在谋篇帖子里了

     Fullscreen effect


    pp优化的核心在于 减pass 因为这全是system mem sync read modify write...

    1.全屏特效 如果不需要 neighboring pixelx 用frame buffer ftech 和base做到一起 带宽可以做到最低

    2.particle的bloom去掉 用mask 区分共用一次bloom mask用mrt出

    3.ubershader把pp互相挪到一起 参见2014gdc unreal

    Offscreen Effect

    1.用downsample+bilinear做blur for bloom and environment reflection

    2.这种方式每个像素只画一次 就是deferred lighting的优点 利用这一点 减小overdraw

    Fragment

    优化核心 用profiler测 bound

    1.float

    2.如果顶点少 考虑逐顶点计算
    3.lightmap

    4.lookup texture (bandwidth memory 换alu)例如beckmon参数 一维 cache命中率高 

    5.texture fetch 这里bound ------如果varyings太多 register压力导致不能有更多fragment同时处理 以便把 tsp 或者usse 的开销 通过调度掩盖掉

    Vertexshading

    2.varyings 数量限制住 太多不但增加memory开销导致并行fragment数量受限

    3.顶点带宽 每个tile都会拉一遍 除非已经在cache(下一块tile数据已经在cache)里 vertex用低精度数据 OES vertex half float

    4.交错interleaved vertex attribute 这样cache命中高 pos normal uv pos normal uv

    5 频繁改变的vertex attribute和static的buffer 分开放 比如每次更新的可能只是pos而 normal uv不变 把这两组数据分开(看起来animation才会有这个问题 scene全部数据都是static

    ====================================

    https://cdn2.unrealengine.com/Resources/files/GDC2014_Next_Generation_Mobile_Rendering-2033767592.pdf

    pp

    =============

    cover latency

    https://developer.qualcomm.com/qfile/28557/80-nu141-1_b_adreno_opengl_es_developer_guide.pdf

    https://developer.apple.com/metal/Metal-Shading-Language-Specification.pdf

  • 相关阅读:
    (转) 网络流之最大流算法(EdmondsKarp)
    如何在面试中发现优秀程序员
    Java中Volatile关键字详解
    比AtomicLong还高效的LongAdder 源码解析
    AtomicInteger的用法
    synchronized详解
    Java内部锁的可重用性(Reentrancy)
    Java可重入锁
    关于原生javascript的this,this真是个强大的东东
    js时间戳怎么转成日期格式
  • 原文地址:https://www.cnblogs.com/minggoddess/p/10600672.html
Copyright © 2011-2022 走看看