通用输入输出模型
一体化Shader模型的设计导致许多有趣的结果出现,其中有不少还是不那么明显就能够看出来的。比较明显的就是在顶点着色器当中进行纹理贴图的操作,无疑这对于普遍的贴图位移映射操作是相当重要的因素,但我们不能够就局限于此。另外一个相对不那么明显的结果就是我们可以从顶点着色器(Shader)当中直接对顶点缓存进行写数据的操作,这项操作使得我们可以暂时缓存起一些在稍后时间才应用的计算结果。而这项操作对于绘画高阶曲面以及进行贴图位移映射是相当重要的,比如说我们可以先计算出应当镶嵌或者是移开的纹理贴图,然后将计算的结果首先缓存在显存当中的顶点缓存当中,当我们需要调用的时候我们只需要进行相应的查找即可。
通用输入输出模型 | |
#$[*106935.jpg*#a*#0*#0*#center*]$# | 通用输入输出模型
|
点击看清晰大图 |
将着色器(Shader)的相关操作和虚拟显存技术结合起来才是最重要的一项影响因素,通过虚拟显存技术,读写纹理数据和普通读写内存块数据的操作是完全一致的。当这两项技术结合起来之后,我们就相当于在下一代DirectX技术当中开启了一个通用的输入输出模型——我们可以向“内存”进行任意数据的读写,写入的任意数据都可以被任意一级的管线读取出来或者是等待以后使用。我们不需要考虑这些数据的类型到底是什么,无论它们是和顶点相关的,还是和象素或者是图形的结构相关的数据,我们都不需要加以理会,只要给出一些缓存数据的索引值以及一些联通性所需的数据,我们就可以根据我们的意愿画出所需要的图形图象。事实上,我们可以生成任意的光影效果,所有的光影特效都可以在GPU的一个单一的周期当中计算完毕,计算完之后我们将计算的结果缓存到虚拟显存当中,然后按照步骤读取数据渲染场景就可以了。