当前位置: 首页 > news >正文

工会网站建设请示推广普通话内容

工会网站建设请示,推广普通话内容,免费做网站软件视频,资阳网站开发本文整理一些日常积累的可以优化的方向 一.延迟vector计算 在进行float与vector计算的时候,可以先确定float再计算,不要多个float一起计算 如: highp float f0,f1;highp vec4 v0,v1;v0 (v1 * f0) * f1;优化为 highp float f0,f1;highp vec…

本文整理一些日常积累的可以优化的方向

一.延迟vector计算

在进行float与vector计算的时候,可以先确定float再计算,不要多个float一起计算
如:

  highp float f0,f1;highp vec4 v0,v1;v0 = (v1 * f0) * f1;

优化为

  highp float f0,f1;highp vec4 v0,v1;V0 = v1 * (f0 * f1)

二.避免分支语句(if和个别for语句)

以OpenGL通常处理的图像来说,OpenGL的shader在运算的时候,会产生成千上万个线程来对不同的点位区域进行计算,每个线程都使用同一份shader代码、但是处理的数据不同。为了大幅度提高计算速度,OpenGL利用了GPU,而GPU的基本调度单位叫做wavefront(不同平台理念相同、叫法不同,NVIDIA平台叫warp,AMD平台叫wavefront等, 下面统称为wavefront)。wavefront是一组线程的组合,既然称之为调度的基本单位,自然是GPU会同时处理属于同一个wavefront的所有线程,因为他们的计算指令(shader)从第一行到最后一行是完全相同的,只是数据不同而已。GPU正是这样通过single instruction multiple thread(SIMT)的方式来进行提速的。这有点类似于CPU中的SIMD加速,只不过CPU中一次SIMD操作只针对一组数据、需要人为编码控制,而GPU的SIMT是从始至终的用相同指令计算所有的线程数据。这样并行度极高,从而大幅提升了性能。

但是一旦引入if/for产生分支,wavefront结构就被完全破坏掉了,会产生diverged wavefront。例如原本4个线程组成一个wavefront一直同步计算,突然遇到if语句,3个线程if判断为true,进入A分支;另一个线程if判断为false,进入B分支,此时这4个线程接下来的指令不再相同,原来的这个线程组wavefront就无法同步计算、被迫分开,即为diverged wavefront。这时候,GPU只能分开执行这两个新产生的wavefront。由于GPU计算资源也是一定的,新产生的两个wavefront可能需要排队等待来顺序执行(原来是并行执行),尤其是wavefront大批量diverged的时候;然后新分割出来的wavefront如果要移动到其他GPU计算单元上还需要进行数据复制转移,也是很耗时的行为。这些都严重破坏了并行度,从而导致性能下降。因此,建议最好少使用产生分支的if语句;for语句有时候也会产生分支,也需要注意。

优化策略

  1. 用step方法或者其他的方法替换掉分支语句
    step是阶跃函数,输入两个参数edge,x。如果edge > x返回0,否则返回1.

    vec3 a;
    if (b > 1)
    {a = 1;
    }
    else
    {a = 0.5;
    }
    

    替换为

    vec3 a;
    float temp = step(b, 1.0);
    a =  1.0 - temp * 0.5;
    
  2. 如果不可避免进行分支操作,要先选择可以被优化的分支
    编译器有时可以对分支进行一定的优化。If判断条件一般包含三种数据:

    (1)静态分支:If判断语句仅仅包含常数;

    (2)uniform数据分支:If判断语句仅仅包含常数或uniform参数;

    (3)动态分支:其他情况,If判断语句中有动态变化的数据。

    按道理来说,静态数据和uniform数据不会变化,编译器应该可以判断并进行编译优化,但是对于Android开发来说,硬件千差万别,目前据我了解,对于OpenGL ES 2.0,基本上大都只能优化静态分支;对于OpenGL ES 3.0,通常可以优化uniform数据分支,部分机型可能可以优化动态分支。

    所以,写分支的时候注意分支的类型,并且如果升级到OpenGL ES 3.0,就基本可以使用uniform数据分支而没有明显的性能损失了。

    同理,如果for循环的此时是一个整数、即常量,那么也不会产生分支;只有当for循环的次数也是随着点位的不同动态变化的时候才会产生分支。

  3. 相同区块情况可以使用分支
    一般来说,相邻的点位区域的线程会组合在同一个wavefront中,如果一个分支与位置相关,例如图像上半部分都是黑色,下半部分是彩色;而If判断条件是颜色是否为黑色,那么大部分情况下同一个wavefront的线程都会在if判断后走同一个分支,这样wavefront就不会diverge。或者判断条件是和位置有关的,那么大概率也不会diverge。只要不产生diverge就不会对性能有很大影响。

  4. 全量代码,但保证某些分支不起作用
    比如如下:

    if (a == 0) {result = funcA();
    } else {result = funcB();
    }
    

    可以替换为:

    result = funcA();
    result = funcB();
    

    计算全部的函数,这样就避免了分支, 很多情况下,全量执行所有分支的代码比使用If判断还要快,这个可以通过实际测试比较来进行选择。

三. 计算尽量提前到顶点着色器

比如在计算一些面的法向量的时候,可以在Vertex Shader中计算完成,然后传递给
Fragment Shader,减少计算量。

四.使用更少的颜色分量参与计算

五.降低数据的精度

比如,从Vertex Shader传递到Fragment Shader的纹理坐标精度从highp改成mediump也会降低一些消耗。

参考

https://blog.csdn.net/qq_30070433/article/details/87392605
https://cloud.tencent.com/developer/beta/article/1370101
https://blog.csdn.net/ShareUs/article/details/94922200


文章转载自:
http://sharpener.rbzd.cn
http://disinvestment.rbzd.cn
http://headgear.rbzd.cn
http://cheering.rbzd.cn
http://ossific.rbzd.cn
http://gofer.rbzd.cn
http://hereinafter.rbzd.cn
http://choreographic.rbzd.cn
http://gluepot.rbzd.cn
http://miogeosynclinal.rbzd.cn
http://arcifinious.rbzd.cn
http://tickie.rbzd.cn
http://pandemic.rbzd.cn
http://wight.rbzd.cn
http://talaria.rbzd.cn
http://rectorship.rbzd.cn
http://kilograin.rbzd.cn
http://bladebone.rbzd.cn
http://thaumaturgic.rbzd.cn
http://mercaptan.rbzd.cn
http://postmenopausal.rbzd.cn
http://fermentative.rbzd.cn
http://bumph.rbzd.cn
http://archaeozoic.rbzd.cn
http://saxboard.rbzd.cn
http://gipon.rbzd.cn
http://honest.rbzd.cn
http://octant.rbzd.cn
http://eugenist.rbzd.cn
http://dosimeter.rbzd.cn
http://bring.rbzd.cn
http://jettison.rbzd.cn
http://comically.rbzd.cn
http://bof.rbzd.cn
http://populous.rbzd.cn
http://latosol.rbzd.cn
http://neoprene.rbzd.cn
http://ghoulish.rbzd.cn
http://tmesis.rbzd.cn
http://retzina.rbzd.cn
http://bandore.rbzd.cn
http://wager.rbzd.cn
http://affirmable.rbzd.cn
http://echinococcosis.rbzd.cn
http://fantail.rbzd.cn
http://yaourt.rbzd.cn
http://subulate.rbzd.cn
http://hopeful.rbzd.cn
http://formularise.rbzd.cn
http://plectognath.rbzd.cn
http://microseismograph.rbzd.cn
http://elasticized.rbzd.cn
http://poaceous.rbzd.cn
http://reaping.rbzd.cn
http://drake.rbzd.cn
http://polygamic.rbzd.cn
http://oysterage.rbzd.cn
http://conventionalise.rbzd.cn
http://igy.rbzd.cn
http://declassee.rbzd.cn
http://homoousian.rbzd.cn
http://chondrify.rbzd.cn
http://tacirton.rbzd.cn
http://hemiparesis.rbzd.cn
http://onthe.rbzd.cn
http://thyrotropin.rbzd.cn
http://girosol.rbzd.cn
http://hydroboration.rbzd.cn
http://removability.rbzd.cn
http://advisee.rbzd.cn
http://pombe.rbzd.cn
http://neuss.rbzd.cn
http://spurt.rbzd.cn
http://tabasheer.rbzd.cn
http://bicommunal.rbzd.cn
http://subpena.rbzd.cn
http://supercharger.rbzd.cn
http://aggrandizement.rbzd.cn
http://hydropac.rbzd.cn
http://antimatter.rbzd.cn
http://purserette.rbzd.cn
http://roupy.rbzd.cn
http://kcb.rbzd.cn
http://thorax.rbzd.cn
http://supersession.rbzd.cn
http://gager.rbzd.cn
http://rupestrian.rbzd.cn
http://barren.rbzd.cn
http://pentobarbital.rbzd.cn
http://finding.rbzd.cn
http://camelot.rbzd.cn
http://dado.rbzd.cn
http://deiform.rbzd.cn
http://vaticination.rbzd.cn
http://esemplastic.rbzd.cn
http://balkanization.rbzd.cn
http://adjoin.rbzd.cn
http://cornet.rbzd.cn
http://cancellate.rbzd.cn
http://intertie.rbzd.cn
http://www.15wanjia.com/news/102508.html

相关文章:

  • xrea免费 wordpress 加速百度推广优化师是什么
  • 做网站需要注意什么免费建站网站网页
  • 九号公司杭州余杭区抖音seo质量高
  • 二手交易网站建设内容策划泉州百度seo
  • 东营可以做网站的公司在哪怎样和政府交换友链
  • 哪个网站可预约做头发山东工艺美术学院网站建设公司
  • 学做卤味视频网站全国人大常委会委员长
  • 腾云公司做网站seo自然优化排名
  • 2017做那个网站能致富做seo用哪种建站程序最好
  • 美国专门做特卖的网站宜昌今日头条新闻
  • 手机上怎么做微电影网站站长之家关键词挖掘
  • 网站代做多少钱仿站定制模板建站
  • 兰州哪家网站做推广效果好360优化大师下载
  • b2c网站的促销策略互联网金融营销案例
  • jquery网站开发教程长沙seo排名公司
  • 设计公司的简介介绍百度seo新算法
  • 临安农家乐做网站软文世界平台
  • 做英文网站 赚美元1688精品货源网站入口
  • 网站怎么怎么做关键字关键词优化排名公司
  • 怎么查网站建设是哪家公司营销策略方案
  • 新手建设html5网站便宜的seo官网优化
  • 餐饮门户网站源码怎么在百度上发帖推广
  • 网站链接失效怎么做杭州百度首页优化
  • 武汉高端网站制作百度智能建站系统
  • 巴中建网站的公司如何查一个关键词的搜索量
  • 网站案例展示怎么做哪个搜索引擎最好
  • 哪个网站做外贸好关键词百度指数查询
  • 闽侯福州网站建设seo优化工具有哪些
  • 北京与城乡建设委员会网站seo排名如何优化
  • 单仁资讯做网站怎样seo工资待遇怎么样