» cn.EX9 Rendering
This site relies heavily on Javascript. You should enable it if you want the full experience. Learn more.

cn.EX9 Rendering

English | French | Italian

The original english version of this page is newer and may contain information this translation does not have! Click here to view the english version.

DX9 - 迄今为止发生了些什么事

从一开始就用vvvv的朋友一定还记得当时节点中并没有EX9这个分类。DX9 (最开始叫 DX8 ) 倒是一直都在。EX9这个分类的引入就是为了在vvvv支持效果。

DX9分类中的基本物体易于使用,但仍不够灵活。它们将几何结构和绘制效果(也就是着色器)结合到了一个节点中。没有灯光,没有多纹理贴图,而用 ArbitraryPoint (Transform) 节点来变形DX9节点总归觉得怪怪的,因为实际上它与下行节点的顶点缓存搅到一块儿去了。DX9节点内部实现是采用 direct3d fixed function pipeline (对某些人来说这还是有点参考价值的).

EX9 - 有关Effects(效果), VertexShader(顶点着色器)- 和PixelShader(像素着色器)

EX9类别向vvvv中引入了 可编程流水线 。几何体的创建从实际绘制中剥离开了,通过应用EX9.Effect类别的节点,用户自己可以对这种绘制自行编程修改。

效果就是顶点着色器和像素着色器的容器,依次代表绘制过程的两个步骤:几何体上的每个顶点在绘制时首先通过 顶点着色器 ,在顶点着色器中可以对顶点组件做些脚本处理。之后在渲染流水线中,几何体上每个可见的顶点再通过一个 像素着色器 这也是一个脚本语言程序, 在这里面你就可以考虑灯光,纹理贴图和其它决定像素颜色的参数。

VVVV 出厂时自带了少量的默认效果:

  • Constant(固定式): 就像DX9基本物体那样以某种颜色或纹理绘制几何体。
  • Flat, Gouraud, Phong(平面着色,高洛德着色/高氏着色,): 在点光源或平行光照明下,它们实现了传统的着色算法以取得三维外观。

(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

EX9.FurtherReading

anonymous user login

Shoutbox

~11h ago

joreg: Two #vvvv workshops this week in #berlin: Friday: Physical Computing, Saturday: Computer Vision. Tickets: upcoming-full-day-vvvv-gamma-workshops-in-berlin

~1d ago

joreg: @cznickesz also feel free to join our chat for such questions: chat

~1d ago

cznickesz: @joreg: Yeah, I´ll give it a try! Thx

~1d ago

joreg: @cznickesz: we're hoping this week. but depends on feedback. please test your project and let us know if it works.

~1d ago

cznickesz: @joreg: I should stop asking my questions so cryptic ;-) So right away: is final Beta39 hours, days or weeks away?

~1d ago

joreg: @cznickesz: the idea of an RC is exactly to make sure your projects will work with it. your last chance to report problems with b39.

~1d ago

cznickesz: So how "RC" is the "RC3"? I have to update an old project soon and I´m wondering if I should wait and directly update to Beta39

~1d ago

joreg: @takuma, the "one frame" issue was fixed in RC3 for beta39, see: beta39-release-candidate

~1d ago

Takuma: @joreg thank!! Ill try this. Are there a way to send video texture from vvvv to vl? fromimage node in vl somehow only sends 1 frame

~1d ago

cznickesz: @ravasquez thx, so I need to stop avoiding nuget in the end ;-)