效率优化[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阶段)
    • 效率优化[gdc13]dx11效率优化_第1张图片
    • 这里有一些格式不是有特定支撑的,所以应用一些更费的格式来模拟的,比如面上的一些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就是这样把广大劳动人民吸引过来的。今天的结果你们都看到了。)

你可能感兴趣的:(优化)