Skip to main content

TextureFX/图像效果

TextureFX是用来创建基于GPU/shader的图像着色器节点的规范。着色器使用SDSL语言规范来编写,它是对于HLSL的扩展。我们必须要区分以下基本概念Sources、Mixers、Filters 和 Utils。

以下是你编写自己的图像效果的时候需要了解的内容:

创建一个新的图像效果

在你的.vl文档的同一目录下新建叫做\shaders的文件夹。在这个文件夹中创建带有后缀_TextureFX.sdsl的文件,例如:

\MyProgram.vl
\shaders\MyFx_TextureFX.sdsl

一个.sdsl的着色器文件内部将会包含source, mixer, filter或者utility TextureFX。对于一个简单的反向滤波器,下面的代码就是所需要的一切。

shader MyFx_TextureFX : FilterBase
{
float4 Filter(float4 tex0col)
{
tex0col.rgb = 1 - tex0col.rgb;
return tex0col;
}
};
note

有三件事情对于节点工厂选取你的文件,并且将它解释为一个TextureFX的着色器至关重要:

  • 着色器的名字必须在vvvv系统中,以及在你的文件中必须唯一
  • 着色器必须以_TextureFX结尾
  • 文件的名字必须看起来像这样:[shader-name]_TextureFX.sdsl

目录和种类

在默认情况下,每个TextureFX的节点都会显示在Stride\Textures的目录下。想要将节点移动到别的目录下,请使用节点属性。

想要定义节点的种类是"Experimental", "Internal", "Obsolete" and "Advanced" 的时候,有两种方式:

  • 同样你可以在你的shader的文件名字中加入对种类的定义,但是必要忘记着色器的名字和文件的名字必须相同
  • 可以在节点属性的目录中定义它

继承基础着色器

系统中已经有非常丰富的着色器你可以直接继承。并且允许多重继承!

  • 这些着色器与Stride一起发布:使用Shader Explorer来查看可以继承的着色器(需要安装Stride)
  • 着色器与VL.Stride一起发布:请查看这些.sdsl文件,路径是C:\Program Files\vvvv\vvvvgamma...\lib\packs\VL.Stride.Runtime...\stride\Assets\Effects

推荐的基础着色器

TextureFX

TextureFX派生自ImageEffectShader、SpriteBase、ShaderBase、Texturing和ShaderUtils。

FilterBase

从TextureFX继承派生出来,允许你使用Mix()函数,可以输入两个可切换的贴图和一个驱动参数。

note

使用 tex0col 输入并不是强制的,你还是可以添加其他的贴图输入到采样器的。

MixerBase

从TextureFX继承派生出来,允许你实现一个Mix()的函数,可以让实现在两个纹理之间根据参数的变换来切换。

note

使用 tex0coltex1col 输入不是强制性的,您仍然可以添加其他纹理输入以进行采样。

ShaderUtils