zoukankan      html  css  js  c++  java
  • Shader Optimization Tips

    Author : http://www.cnblogs.com/open-coder/p/3982999.html

    During the last few months, I have been working on the Graphics and shader optimization work. 
    Good FPS is the balance between art and technocal. A good designed level  and game play should take account the potional performance issue. After the optimization work on the high level was done, we could deep into the lower level, and do some invistigation of shader part.
    Here are some tips that you could try:
    1) Don’t reinvent the wheel, use instrinsic functions; Some one would like to write his own ‘dot’ function, this is not allowed;
    2) Use the most appropriate data types in calculations (float, float2, float3 and float4);
    3) Get rid of typecasting when it’s not need. Such as convert float3 to float4, float to float4, fixed to half, half to float…
    4) Instead of integers rely on floats for math;
    5) When indexing into arrays of constants use integers instead of floats;
    6) Combine scalar constants into full vectors, pack array elements into full constant vectors;
    7) For conditional compilation use boolean constants declared as static;
    8) Whennever possible vectorize code by joining similar operations together;
    9) Do not use expensive functions, such as  log, exp, pow, sin, cos;
    10) Well arrange the variable calculations among application objects, per vertex and per fragment. Per fragment is the most expensive, per vertex is less expensive, and per object is cheap;
    11) Get rid of clip as possible, some one will suggest use alpha blend to replace alpah test;
    12) Remove branch statements. Some powerful device will support branch well, like K1 device uber-shader;
    13) Reduce the bandwith that pass from vertex shader to fragment shader;
    14) Use constant variables when you could make sure what those value is:
    15) Be careful on the precision such as float, half, fixed. Use theme properly, and get rid of typecast whenever possible.

     

    Reference
    http://amd-dev.wpengine.netdna-cdn.com/wordpress/media/2012/10/Dark_Secrets_of_shader_Dev-Mojo.pdf
    http://blog.hvidtfeldts.net/index.php/2011/07/optimizing-glsl-code/
    http://hi.baidu.com/haibo19981984/item/fef0a36de646e508a1cf0f93

  • 相关阅读:
    udp和tcp
    以查询代替临时变量
    memcached内存管理
    设计模式适配器模式
    排序算法
    防止表单重复提交
    php的引用
    按位与,按位异或,按位取反
    git常用操作
    http
  • 原文地址:https://www.cnblogs.com/open-coder/p/3982999.html
Copyright © 2011-2022 走看看