返回顶部
v

vvvv-shadersvvvv着色器

Helps write SDSL shaders for Stride and vvvv gamma — TextureFX, shader mixins, compute shaders, and ShaderFX composition. SDSL is a superset of HLSL, so use this skill when writing or debugging .sdsl shader files, GPU shaders, visual effects, HLSL code for vvvv, working with the Stride rendering pipeline, composing shader mixins, or any GPU/compute work. Trigger even if the user says 'HLSL', 'shader', 'GPU effect', 'render pass', or 'compute' in a vvvv context.

作者: admin | 来源: ClawHub
源自
ClawHub
版本
V 1.0.1
安全检测
已通过
281
下载量
免费
免费
0
收藏
概述
安装方式
版本历史

vvvv-shaders

SDSL Shaders for vvvv gamma / Stride

什么是SDSL

SDSL(Stride着色语言)是Stride的着色器语言——它是HLSL的超集,增加了四个关键特性:支持继承的shader类、多重继承(混入)、用于自动阶段间数据流的streams系统,以及用于干净方法替换的override。着色器定义在.sdsl文件中。

Streams系统

Streams取代了手动定义的VSINPUT/VSOUTPUT结构体。只需声明一次,即可随处访问:

hlsl
stream float4 MyData : TEXCOORD5; // 声明自定义流变量

// 在顶点着色器中:
streams.MyData = float4(1, 0, 0, 1); // 写入

// 在像素着色器中:
float4 d = streams.MyData; // 读取(自动插值)

关键内置流:

  • - streams.ShadingPosition(SVPosition)——裁剪空间位置
  • streams.ColorTarget(SVTarget0)——像素着色器输出
  • streams.Position(float4)——对象空间位置
  • streams.TexCoord(TEXCOORD0)——纹理坐标
  • streams.normalWS——世界空间法线

基础着色器层级

Stride核心(Stride和vvvv中均可用)

着色器提供内容
ShaderBaseVSMain/PSMain入口点
Texturing
Texture0-9、Sampler、PointSampler、LinearSampler、TexCoord | | Transformation | World、View、Projection、WorldViewProjection矩阵 | | PositionStream4 | Position、PositionWS、DepthVS | | NormalStream | meshNormal、normalWS、tangentToWorld | | ComputeShaderBase | CSMain入口、Compute()钩子、线程组 | | ComputeColor | 通过Compute()返回float4的接口 | | ComputeVoid | 通过Compute()返回void的接口 | | Global | Time、TimeStep(cbuffer PerFrame) |

仅vvvv可用(纯Stride中不可用)

着色器继承自用途
VSPSBaseShaderBase、PositionStream4、NormalStream、TransformationDrawFX基础
FilterBase
TextureFX | 像素处理纹理效果 | | MixerBase | TextureFX | 混合纹理 | | TextureFX | ImageEffectShader、Camera、ShaderUtils | 纹理效果基础 |

重要:VSPSBase已包含Transformation、NormalStream和PositionStream4。请勿重复继承它们。

文件命名 → 自动节点生成

vvvv根据文件名后缀自动从着色器创建节点:

后缀节点类型描述
TextureFX.sdslTextureFX图像处理效果
DrawFX.sdsl
DrawFX | 绘制/渲染着色器 |
| _ComputeFX.sdsl | ComputeFX | 计算着色器 |
| _ShaderFX.sdsl | ShaderFX | 通用着色器效果 |

示例:MyBlur_TextureFX.sdsl会自动创建一个MyBlur TextureFX节点。

基础TextureFX结构

hlsl
shader MyEffect_TextureFX : FilterBase
{
float Intensity = 1.0;

float4 Filter(float4 tex0col)
{
return tex0col * Intensity;
}
};

注意右大括号后的分号——这是必需的。

语法规则

关于关键的SDSL语法规则(static const作用域、分号、override、变量初始化、常见错误、分支发散),请参见syntax-rules.md

关键字

关键字用途
shader定义着色器类
override
重写父类方法时必须使用 | | base | 访问父类实现 | | stage | 确保成员在组合中只定义一次 | | stream | 可在每个着色器阶段访问的成员 | | streams | 访问当前阶段的流数据 | | static | 无需继承即可调用的静态方法 | | compose | 声明着色器混入的组合槽 | | clone | 强制创建组合着色器的独立实例 | | abstract | 无方法体的方法(子类必须实现) |

继承与混入

hlsl
// 单继承
shader Child : Parent
{
override float4 Filter(float4 tex0col)
{
return base.Filter(tex0col) * 0.5;
}
};

// 多重继承(混入)
shader MyShader : FilterBase, ColorUtils, MathUtils
{
float4 Filter(float4 tex0col)
{
float3 linear = ColorUtils.GammaToLinear(tex0col.rgb);
return float4(linear, tex0col.a);
}
};

// 静态函数调用(无需继承)
float3 result = ColorUtils.LinearToGamma(col.rgb);

枚举绑定 — 着色器中的C#枚举

在着色器(.sdsl)中:
hlsl
[EnumType(MyNamespace.BlendMode, MyAssembly)]
int Mode = 0;

在C#(.cs)中:
csharp
namespace MyNamespace;
public enum BlendMode
{
Normal = 0,
Add = 1,
Multiply = 2,
Screen = 3
}

要求:

  • - 枚举DLL必须预编译(不能来自动态csproj)
  • 程序集名称即项目名称
  • 枚举DLL更改后必须重启vvvv

GPU最佳实践

防止数学错误

hlsl
float3 safeLog = log2(max(x, 1e-10)); // 避免log2(0)
float3 safe = x / max(y, 0.0001); // 避免除以零
float3 safePow = pow(max(x, 0.0), gamma); // 避免pow(负数)

纹理采样

hlsl
// 在TextureFX中,tex0col已从Texture0采样
float4 Filter(float4 tex0col)
{
// 采样额外纹理:
float4 tex1 = Texture1.Sample(Texturex1Sampler, streams.TexCoord);
return lerp(tex0col, tex1, 0.5);
}

ShaderFX / ComputeColor模式

使用compose关键字的可组合着色器节点:

hlsl
shader MyTonemap_ShaderFX : ComputeColor, TonemapOperators
{
compose ComputeColor ColorIn;

[EnumType(MyNamespace.TonemapOp, MyAssembly)]
int Operator = 1;

float Exposure = 0.0;

override float4 Compute()
{
float4 color = ColorIn.Compute();
color.rgb *= exp2(Exposure);
color.rgb = ApplyTonemap(color.rgb, Operator);
return color;
}
};

在vvvv连线中,将ShaderFX节点连接到TextureFX的compose输入以链式处理。

混入组合 — 虚方法分发

带有虚方法的基础着色器,由动态组合的混入重写:

hlsl
// 基础着色器声明虚方法
shader ColorProcessorBase
{
float4 ProcessColor(float4 inPixel) { return inPixel; }
};

// 宿主着色器使用组合
shader ColorTransform_TextureFX : TextureFX
{
stage compose ColorProcessorBase Processor;

stage override float4 Shading()
{
float4 col = Texture0.SampleLevel(PointSampler, streams.TexCoord, 0);
return Processor.ProcessColor(col);
}
};

模板/泛型着色器

hlsl
// 带类型参数的声明
shader ComputeColorWave : ComputeColor, Texturing
{
override float4 Compute()
{
return float4(sin(streams.TexCoord.x * Frequency), 0, 0, 1);
}
};

// 通过继承实例化
shader MyEffect : ComputeColorWave<2.0f> { };

支持的模板参数类型:float、int、float2、float3、float4、Texture2D、SamplerState。

组合数组

多个相同类型的组合着色器:

hlsl
compose ComputeColor lights[];

override float4 Compute()
{
float4 total = 0;
foreach (var light in lights)
total += light.Compute();
return total;
}

跨着色器共享结构体类型

定义一次,在发射/模拟/绘制管线中使用:

hlsl

标签

skill ai

通过对话安装

该技能支持在以下平台通过对话安装:

OpenClaw WorkBuddy QClaw Kimi Claude

方式一:安装 SkillHub 和技能

帮我安装 SkillHub 和 vvvv-shaders-1776205285 技能

方式二:设置 SkillHub 为优先技能安装源

设置 SkillHub 为我的优先技能安装源,然后帮我安装 vvvv-shaders-1776205285 技能

通过命令行安装

skillhub install vvvv-shaders-1776205285

下载

⬇ 下载 vvvv-shaders v1.0.1(免费)

文件大小: 5.71 KB | 发布时间: 2026-4-15 11:11

v1.0.1 最新 2026-4-15 11:11
Improved skill descriptions: better triggering for HLSL/shaders, Spreads/collections, ImportAsIs/dotnet, VL packages, reactive channels. Fixed broken cross-skill reference in troubleshooting.

Archiver·手机版·闲社网·闲社论坛·羊毛社区· 多链控股集团有限公司 · 苏ICP备2025199260号-1

Powered by Discuz! X5.0   © 2024-2025 闲社网·线报更新论坛·羊毛分享社区·http://xianshe.com

p2p_official_large
返回顶部