• 效率优化[gdc13]dx11效率优化


    工作之余抽点时间出来写写博文,希望对新接触的朋友有帮助。今天在这里和大家一起学习一下效率优化

        http://developer.amd.com/wordpress/media/2013/04/DX11PerformanceReloaded.ppsx

        nv和amd同共呈现的一个dx11面上硬件优化方面的信息,非常棒的底层识知的绍介,不仅仅是dx11,dx9的开发者也会受益很多。

        面里很多识知在其他地方也提到过,不过或是学习新的西东,或是习复已有的识知,开卷有益吧。

        每日一道理
    成熟是一种明亮而不刺眼的光辉,一种圆润而不腻耳的音响,一种不须要对别人察颜观色的从容,一种终于停止了向周围申诉求告的大气,一种不理会哄闹的微笑,一种洗刷了偏激的淡漠,一种无须声张的厚实,一种并不陡峭的高度。

        

    • 运行时辰shader的asm会被编译成ISA呆板编汇,才能被运行,这个进程会消费定一cpu运算,形成卡顿,那么前提把须要的shader应用一下,来cache up是一个不错的选择。
    • 防止应用D3DXSHADER_IEEE_STRICTNESS编译选项,会影响优化
    • buffer须要根据用处来设置应相的flag来到达最有效率,详见这个文章吧:http://blog.csdn.net/ccanan/article/details/8854962
    • index/vertex buffer来修改序顺进而升提cache效率仍旧是提议的,期早nv一些具工后来在项目里应用发明没有升提,当初仍旧提议应用D3DXOptimizeFaces/D3DXOptimizeVertices来优化,或者自己做一些offline的具工也可以
    • dx11面上的constant buffer,有了更大的优化间空,根据update频率行进分区
    • 应用batch&cache尽量加增render state的转换和不必要的设置
    • 比拟提议把vertex stream行进分离,depth pass用的pos+uv和lighting pass用的tangent/binormal分在不同stream面里,进步IA(Input assembly)效率
      • 2到3个stream是比拟好的
    • vertex shader
      • indexed constant fetch&texture fetch是dependent fetches,这个会影响效率
      • 较少vertex shader output size, 对于a卡说来,4 float4一下的比拟好
    • ps在dx11面里可以以scatter的式方来入写rt,不再是一个fragment只能写一个地方,这个对算法的影响蛮大的
    • 一些令指是比拟费的:rcp, rsq, sin, cos, i2f, f2i, int 的乘除运算也是比拟慢的,最好应用float
    • attribute的值插也是在ps面里算计的,所以尽量加增attribute的输入,对于a卡说来,pack到float4面里比拟有意义
    • GPR(general purpose register),这个比拟影响效率,我们可以把hlsl的编汇令指面里的register数量作为一个考参,这些部份会明显加增GPR数量
      • 时临变量的长生命周期
      • fetch dependencies(indexed constants比如)
      • 嵌套动态分支
      • 如果骼骨类的constant array比拟大,不如换成texture来比拟高效
    • DepthTest
      • nv的d24格式比拟快,尽量用,amd是d16于用shadow最快
    • ROP阶段,文中的Export阶段(pixel shader到render target阶段)
      • 效率和优化
      • 这里有一些格式不是有特定支撑的,所以应用一些更费的格式来模拟的,比如面上的一些16bit的和32bit的一个度速
    • texture filter:
      • trilinear效率可能最多到blinear的2倍
      • anisotropic的则是bilinear的n倍,n的数量是anisotropic面里的tap数
      • gather令指特棒,能用就用
    • compute shader,dx11头号大杀器
      • thread group shared memory
      • atomic operations
      • synchronization
      • 不过compute shader和cpu端很像,一样的部份就不记了,think in hardware

    文章结束给大家分享下程序员的一些笑话语录: 苹果与谷歌之争就是封闭收费与自由免费思想之争。(别急着把google来膜拜哦?那可是一家公司,以赚钱为目标的公司!当年我Party就是这样把广大劳动人民吸引过来的。今天的结果你们都看到了。)

  • 相关阅读:
    47-python基础-python3-字符串-常用字符串方法(五)-rjust()-ljust()-center()
    46-python基础-python3-字符串-常用字符串方法(四)-join()-split()
    45-python基础-python3-字符串-常用字符串方法(三)-startswith()-endswith()
    44-python基础-python3-字符串-常用字符串方法(二)-isalpha()-isalnum()-isdigit()-isspace()-istitle()
    43-python基础-python3-字符串-常用字符串方法(一)-upper()-lower()-isupper()-islower()
    42-python基础-python3-字符串-原始字符串
    40-python基础-python3-字典常用方法-setdefault()
    39-python基础-python3-字典常用方法-get()
    38-python基础-python3-检查字典中是否存在键或值
    HTTP协议详解
  • 原文地址:https://www.cnblogs.com/jiangu66/p/3061631.html
Copyright © 2020-2023  润新知