在本页阅读全文(共9页)
● DirectX 10不是救世主
运算能力?我们不是有现成的运算能力么?DirectX 10硬件的构架可以执行任何类型的shader从而让ALU实现通用计算过程,直接调用这些能力不就好了?
抱歉,即便抛开各种程序员对数学理解过程的障碍,在DirectX 10环境下的通用计算代码因为与几何过程“优秀”的关联性,实际上是没办法随心所欲的被使用的。
强行插入流水线的通用计算指令会被流水线识别成几何过程,这往往会直接影响正常执行中的图形指令的连续结构,造成不必要的甚至是致命的执行延迟,通用计算代码又没什么办法融入到常规的Pixel shader代码中去,使用通用计算代码得到的效率提升甚至可能远比它所造成的损失低得多。Deferred shading面对体系巨大的通用计算能力却只能望洋兴叹,着实是一种巨大的浪费……
NVIDIA公司开发的基于CUDA的光线追踪套件
NVIDIA公司曾经尝试突破这种局面,它利用自己的CUDA接口开发过一系列的针对DirectX和Open GL环境下多光源和延迟渲染甚至是光线追踪的应用,虽然C++的编译环境在一定程度上降低了编程难度同时提高了执行效率,但是由于DirectX 10本身的缺陷,这些应用在效率上距离实用还相去甚远。在CUDA3.0之前我们没有看到有效的针对性应用。这种情况下,人们显然急需一名救世主的出现。
还好,DirectX 11来了,救世主降临了。
本文导航