第五代!Shader Model 5.0详解
Shader Model 5.0
Shader Model 5.0的主要新特性在于:
1.新的指令设置,能够更随意数据读、写、控制数据
2.Vertex Shader、Hull Shader、Domain Shader、Geometry Shader、Pixel Shader、Compute Shader 融汇贯通共享指令集。
3.以3D物体作为编程的出发点,功能和子流程的编写和执行更简便
Compute Shader相比其它同类编程模型在并行处理器方面的优势是:不论是哪种Shader类型的图形编程,它们都共享一个统一的指令集合,如Pixel Shader和Vertex Shader等等,一如上面第2条所列举Shader之种类。
Shader Model 5.0
尽管Compute Shader是DirectX 11的“新”特性,但Shader Model还是可以通过减少部分特性集合运行于较老的硬件上。这样就允许开发者来做选择:到底是要将低版本的Shader Model运用到极致?还是选择更高版本的Shader Model来进行简化,再在老硬件上获得最大的性能?
DirectX 11提供了一种选择:这是开发者所要面对的选择,虽然这种选择可能本质目的上并无大异,殊途同归!
Shader Model 4.0 -> DirectX 10 class or newer GPUs
Shader Model 4.1 -> DirectX 10.1 class or newer GPUs
Shader Model 5.0 -> DirectX 11 class GPUs only
当然,许多有趣的算法和技术确实只有在支持Shader Model 5.0的DirectX 11 GPU上才能执行和实现。这里我们列举了Shader Model 5.0的相比Shader Model 4.0的重大改进:
上面两幅图的实际上说的是同一个问题,只是我们或许的途径不一样。从表格中,我们可以看到,Shader Model 5.0开始支持3D线程的拆分,而Shader Model 4.0以及此前的只支持2D,同步线程数量上限也从Shader Model 4.0的768条上升到1024条,提高了33%理论上,Shader Model 5.0能够带来更好的性能表现。线程组中,线程间的互访缓存,也从Shader Model 4.0的16k上升到双倍的32k。
而片上共享的缓存的变化,Shader Model 5.0则是革新的。以往的Shader Model 4.0仅仅提供了256b只写共享缓存,而Shader Model 5.0测提了高达32k的可读可写共享缓存,效能大大提高!其它诸如:64bit精度运算(双倍精度)、Atomic Operation、Gather4以及Append\Consume Buffers,在Shader Model 5.0上都得到了支持。