从一开始就用vvvv的朋友一定还记得当时节点中并没有EX9这个分类。DX9 (最开始叫 DX8 ) 倒是一直都在。EX9这个分类的引入就是为了在vvvv支持效果。
DX9分类中的基本物体易于使用,但仍不够灵活。它们将几何结构和绘制效果(也就是着色器)结合到了一个节点中。没有灯光,没有多纹理贴图,而用 ArbitraryPoint (Transform) 节点来变形DX9节点总归觉得怪怪的,因为实际上它与下行节点的顶点缓存搅到一块儿去了。DX9节点内部实现是采用 direct3d fixed function pipeline (对某些人来说这还是有点参考价值的).
EX9类别向vvvv中引入了 可编程流水线 。几何体的创建从实际绘制中剥离开了,通过应用EX9.Effect类别的节点,用户自己可以对这种绘制自行编程修改。
效果就是顶点着色器和像素着色器的容器,依次代表绘制过程的两个步骤:几何体上的每个顶点在绘制时首先通过 顶点着色器 ,在顶点着色器中可以对顶点组件做些脚本处理。之后在渲染流水线中,几何体上每个可见的顶点再通过一个 像素着色器 这也是一个脚本语言程序, 在这里面你就可以考虑灯光,纹理贴图和其它决定像素颜色的参数。
VVVV 出厂时自带了少量的默认效果:
(Flat不进行插值,每个平面的阴影都由该平面的第一个顶点色决定。Gouraud是在使用最广泛的一种着色方式,着色的效果要好得多。它可对3D模型各顶点的颜色进行线形插入计算完成平滑、融 合处理,将每个多边形上的每个点赋以一组色调值,同时将多边形着上较为顺滑的渐变色,使其外观具有更强烈的实时感和立体动感,不过其着色速度比平面着色慢 得多。Phong 全平面使用顶点法线向量。效果好、代价高。)
这些效果能用于快速原型工作,但实在显得笨拙,好在我们可以使其很快适应多光源和多材质,表现出特殊的着色器之类的。
在一头栽进着色器的编程之前,我们必须弄清楚一些术语。要确保自己通过阅读 EX9.Geometry 来理解Meshes(网格模型)和Vertexbuffers(顶点缓存)。同时建议在继续深入以前先看看 EX9.Spaces。即使它们对你来说还过于抽象,现在先了解以下也便于今后在着色时遇到不同的空间时知道回头到哪里补课。
要明白vvvv在你的屏幕上绘制几何体时里面到底在发生些什么故事请看数据流程图:
EX9.Dataflow
你也应该知道一些效果文件的架构的基本知识:
EX9.Effect.File
效果文件是如何被解析成vvvv效果节点的:
EX9.Effect.Node
当你开始创造自己的效果时,你或许从此起步的手把手教你完整地走一遍的模板效果:
EX9.Effect.Template
在真正开始编写你自己的程序之前应该看一下关于HLSL的一个简单介绍:
EX9.HLSL.Introduction
最后时一组编写着色器时非常有用的参考站点:
EX9.HLSL.Semantics vvvv支持的语义系统
EX9.HLSL.Annotations vvvv支持的标注
Direct3D Effect States render- and samplerstates
HLSL Intrinsic Functions built in functions
HLSL DataTypes
Shader Models vs. Shader Profiles
vs_2_0 registers
ps_2_0 registers
vs_3_0 registers
ps_3_0 registers
anonymous user login
~4h ago
~6d ago
~6d ago
~7d ago
~20d ago
~1mth ago
~1mth ago
~1mth ago
~1mth ago
~1mth ago