Jovi_GLSL 插件完整保姆级教程
1. 插件简介
GitHub原地址: https://github.com/Amorano/Jovi_GLSL
Jovi_GLSL 是一个专门为 ComfyUI 设计的着色器插件,它的作用就像给你的图像处理工具箱装上了一个"超级特效引擎"。这个插件可以让你使用 GLSL 着色器来处理图像,提供了超过100多个函数库支持,并且在大多数情况下能提供10倍的速度提升。
想象一下,如果说普通的图像处理就像用画笔一笔一笔地画画,那么 Jovi_GLSL 就像是给你一台高速喷绘机,可以瞬间完成复杂的视觉效果。它特别擅长处理:
- 颜色调整和变换(比如灰度化、反色等)
- 图像滤镜效果(模糊、锐化、边缘检测等)
- 噪声生成(各种纹理效果)
- 几何变换(旋转、缩放、扭曲等)
- 动画效果(时间相关的变化)
2. 如何安装
方法一:通过 ComfyUI Manager 安装(推荐)
- 打开 ComfyUI Manager
- 在搜索框中输入 "Jovi_GLSL"
- 找到后点击安装即可
方法二:手动安装
- 打开命令行工具
- 进入你的 ComfyUI 安装目录
- 运行以下命令:
git clone https://github.com/Amorano/Jovi_GLSL.git
- 然后安装依赖:
# 如果使用内置 Python
.\python_embed\python.exe -s -m pip install -r .\ComfyUI\custom_nodes\Jovi_GLSL\requirements.txt
# 如果使用虚拟环境
pip install -r .\ComfyUI\custom_nodes\Jovi_GLSL\requirements.txt
3. 节点详细解析
3.1 核心节点类型
Jovi_GLSL 插件主要包含两种类型的节点:Dynamic GLSL 动态节点和手写的 GLSL 节点。
3.1.1 Dynamic GLSL 节点
这个节点就像是一个"万能变形器",它可以根据你加载的着色器文件自动变成不同功能的节点。
参数详解:
| 参数名 (UI显示) | 参数名 (代码里) | 参数值 | 建议值 | 通俗解释 (能干嘛的) | 专业解释 | 怎么用/举个例子 |
|---|---|---|---|---|---|---|
| 分辨率 | res | 数值对(宽,高) | 512, 512 | 设置输出图像的大小,就像设置画布尺寸 | 设置渲染输出的像素分辨率 | 如果要生成高清图,设置为 1024, 1024 |
| 当前帧 | frame | 整数 | 0 | 当前是第几帧,用于制作动画效果 | 当前渲染帧的索引 | 制作动画时从0开始递增 |
| 帧率 | frameRate | 小数 | 24 | 每秒显示多少帧,就像电影的播放速度 | 动画的帧率,影响时间计算 | 30表示每秒30帧,更流畅 |
| 时间 | time | 小数 | -1 | 直接设置时间值,像时钟一样控制效果 | 直接的时间值,覆盖帧率计算 | 设置为5.0表示5秒时的效果 |
| 批处理数量 | batch | 整数 | 0 | 一次性生成多少张图,像连拍功能 | 批量处理的帧数 | 设置为10会生成10张连续的图 |
| 背景色 | matte | 颜色值 | 0,0,0,255 | 背景颜色,就像画布的底色 | GL清除颜色或背景色 | 设置为白色:255,255,255,255 |
| 边缘处理 | edge | 选项 | Clamp | 图像边缘超出时怎么处理 | 纹理边缘的采样模式 | Clamp夹紧、Wrap循环、Mirror镜像 |
| 随机种子 | seed | 整数 | 0 | 控制随机效果的起始点 | 噪声生成的种子值 | 相同种子产生相同的随机效果 |
3.1.2 内置着色器节点
这些节点是预先写好的特效节点,每个都有特定的功能,就像不同的滤镜。
GRAYSCALE 灰度化节点
这个节点就像把彩色照片变成黑白照片的功能。
参数详解:
| 参数名 (UI显示) | 参数名 (代码里) | 参数值 | 建议值 | 通俗解释 (能干嘛的) | 专业解释 | 怎么用/举个例子 |
|---|---|---|---|---|---|---|
| 输入图像 | image | 图像 | - | 要处理的彩色图片 | 输入的纹理图像 | 连接任何彩色图像 |
| 转换权重 | convert | 向量3 | 0.299, 0.587, 0.114 | 红绿蓝三个颜色的重要程度 | RGB通道的转换权重 | 默认值是标准的灰度转换比例 |
| 分辨率 | res | 数值对 | 512, 512 | 输出图像大小 | 输出分辨率 | 根据需要调整 |
| 当前帧 | frame | 整数 | 0 | 当前帧数 | 帧索引 | 静态图片保持0 |
| 帧率 | frameRate | 小数 | 24 | 动画帧率 | 帧率设置 | 静态图片可忽略 |
| 时间 | time | 小数 | -1 | 时间控制 | 时间参数 | 静态效果设为-1 |
| 批处理 | batch | 整数 | 0 | 批量处理数量 | 批处理帧数 | 单张图片设为0 |
| 背景色 | matte | 颜色 | 0,0,0,255 | 背景颜色 | 背景色设置 | 通常用默认值 |
| 边缘处理 | edge | 选项 | Clamp | 边缘处理方式 | 纹理采样模式 | Clamp适合大多数情况 |
| 随机种子 | seed | 整数 | 0 | 随机种子 | 种子值 | 灰度化不涉及随机 |
INVERT 反色节点
这个节点就像照片的负片效果,把所有颜色都变成相反的。
参数详解:
| 参数名 (UI显示) | 参数名 (代码里) | 参数值 | 建议值 | 通俗解释 (能干嘛的) | 专业解释 | 怎么用/举个例子 |
|---|---|---|---|---|---|---|
| 输入图像 | image | 图像 | - | 要反色的图片 | 输入纹理 | 连接任何图像 |
| 反色强度 | strength | 小数 | 1.0 | 反色效果的强弱,1.0是完全反色 | 反色效果的强度 | 0.5是半透明反色效果 |
| 分辨率 | res | 数值对 | 512, 512 | 输出图像大小 | 输出分辨率 | 匹配输入图像尺寸 |
| 当前帧 | frame | 整数 | 0 | 当前帧数 | 帧索引 | 静态图片保持0 |
| 帧率 | frameRate | 小数 | 24 | 动画帧率 | 帧率设置 | 静态图片可忽略 |
| 时间 | time | 小数 | -1 | 时间控制 | 时间参数 | 静态效果设为-1 |
| 批处理 | batch | 整数 | 0 | 批量处理数量 | 批处理帧数 | 单张图片设为0 |
| 背景色 | matte | 颜色 | 0,0,0,255 | 背景颜色 | 背景色设置 | 通常用默认值 |
| 边缘处理 | edge | 选项 | Clamp | 边缘处理方式 | 纹理采样模式 | Clamp适合大多数情况 |
| 随机种子 | seed | 整数 | 0 | 随机种子 | 种子值 | 反色不涉及随机 |
BLUR 模糊节点
这个节点就像给图片加上了一层雾气,让图像变得模糊。
参数详解:
| 参数名 (UI显示) | 参数名 (代码里) | 参数值 | 建议值 | 通俗解释 (能干嘛的) | 专业解释 | 怎么用/举个例子 |
|---|---|---|---|---|---|---|
| 输入图像 | image | 图像 | - | 要模糊的图片 | 输入纹理 | 连接任何图像 |
| 模糊半径 | radius | 小数 | 5.0 | 模糊的程度,数值越大越模糊 | 模糊核的半径 | 10.0产生较强的模糊效果 |
| 模糊方向 | direction | 向量2 | 1.0, 1.0 | 模糊的方向,可以做定向模糊 | 模糊的方向向量 | (1,0)只水平模糊,(0,1)只垂直模糊 |
| 分辨率 | res | 数值对 | 512, 512 | 输出图像大小 | 输出分辨率 | 匹配输入图像尺寸 |
| 当前帧 | frame | 整数 | 0 | 当前帧数 | 帧索引 | 静态图片保持0 |
| 帧率 | frameRate | 小数 | 24 | 动画帧率 | 帧率设置 | 静态图片可忽略 |
| 时间 | time | 小数 | -1 | 时间控制 | 时间参数 | 静态效果设为-1 |
| 批处理 | batch | 整数 | 0 | 批量处理数量 | 批处理帧数 | 单张图片设为0 |
| 背景色 | matte | 颜色 | 0,0,0,255 | 背景颜色 | 背景色设置 | 通常用默认值 |
| 边缘处理 | edge | 选项 | Clamp | 边缘处理方式 | 纹理采样模式 | Clamp适合大多数情况 |
| 随机种子 | seed | 整数 | 0 | 随机种子 | 种子值 | 模糊不涉及随机 |
SHARPEN 锐化节点
这个节点就像给图片戴上了眼镜,让图像的边缘变得更加清晰。
参数详解:
| 参数名 (UI显示) | 参数名 (代码里) | 参数值 | 建议值 | 通俗解释 (能干嘛的) | 专业解释 | 怎么用/举个例子 |
|---|---|---|---|---|---|---|
| 输入图像 | image | 图像 | - | 要锐化的图片 | 输入纹理 | 连接任何图像 |
| 锐化强度 | strength | 小数 | 1.0 | 锐化的程度,越大越锐利 | 锐化效果的强度 | 2.0产生很强的锐化效果 |
| 锐化半径 | radius | 小数 | 1.0 | 锐化影响的范围 | 锐化核的半径 | 0.5产生细致的锐化 |
| 分辨率 | res | 数值对 | 512, 512 | 输出图像大小 | 输出分辨率 | 匹配输入图像尺寸 |
| 当前帧 | frame | 整数 | 0 | 当前帧数 | 帧索引 | 静态图片保持0 |
| 帧率 | frameRate | 小数 | 24 | 动画帧率 | 帧率设置 | 静态图片可忽略 |
| 时间 | time | 小数 | -1 | 时间控制 | 时间参数 | 静态效果设为-1 |
| 批处理 | batch | 整数 | 0 | 批量处理数量 | 批处理帧数 | 单张图片设为0 |
| 背景色 | matte | 颜色 | 0,0,0,255 | 背景颜色 | 背景色设置 | 通常用默认值 |
| 边缘处理 | edge | 选项 | Clamp | 边缘处理方式 | 纹理采样模式 | Clamp适合大多数情况 |
| 随机种子 | seed | 整数 | 0 | 随机种子 | 种子值 | 锐化不涉及随机 |
NOISE 噪声节点
这个节点就像在图片上撒了一层随机的点点,可以制作各种纹理效果。
参数详解:
| 参数名 (UI显示) | 参数名 (代码里) | 参数值 | 建议值 | 通俗解释 (能干嘛的) | 专业解释 | 怎么用/举个例子 |
|---|---|---|---|---|---|---|
| 噪声类型 | type | 选项 | Perlin | 噪声的样式,像不同的纹理贴图 | 噪声算法类型 | Perlin适合自然纹理 |
| 缩放比例 | scale | 小数 | 1.0 | 噪声的密集程度,越大越密集 | 噪声的空间缩放 | 0.1产生大块的噪声 |
| 噪声速度 | speed | 小数 | 1.0 | 噪声变化的快慢 | 噪声动画速度 | 2.0噪声变化更快 |
| 噪声偏移 | offset | 向量2 | 0.0, 0.0 | 噪声的起始位置 | 噪声的2D偏移 | 改变数值可以移动噪声图案 |
| 分辨率 | res | 数值对 | 512, 512 | 输出图像大小 | 输出分辨率 | 根据需要调整 |
| 当前帧 | frame | 整数 | 0 | 当前帧数 | 帧索引 | 用于动画噪声 |
| 帧率 | frameRate | 小数 | 24 | 动画帧率 | 帧率设置 | 影响噪声动画速度 |
| 时间 | time | 小数 | -1 | 时间控制 | 时间参数 | 动态噪声会用到 |
| 批处理 | batch | 整数 | 0 | 批量处理数量 | 批处理帧数 | 生成多帧噪声动画 |
| 背景色 | matte | 颜色 | 0,0,0,255 | 背景颜色 | 背景色设置 | 噪声的基底颜色 |
| 边缘处理 | edge | 选项 | Clamp | 边缘处理方式 | 纹理采样模式 | 影响噪声的边缘效果 |
| 随机种子 | seed | 整数 | 0 | 随机种子 | 种子值 | 不同种子产生不同噪声图案 |
GRADIENT 渐变节点
这个节点就像用渐变色彩笔在画布上画出平滑的颜色过渡。
参数详解:
| 参数名 (UI显示) | 参数名 (代码里) | 参数值 | 建议值 | 通俗解释 (能干嘛的) | 专业解释 | 怎么用/举个例子 |
|---|---|---|---|---|---|---|
| 渐变类型 | type | 选项 | Linear | 渐变的样式:直线、圆形等 | 渐变的几何类型 | Linear直线渐变、Radial径向渐变 |
| 起始颜色 | color1 | 颜色 | 255,255,255,255 | 渐变的开始颜色 | 渐变起始色 | 白色到黑色的渐变 |
| 结束颜色 | color2 | 颜色 | 0,0,0,255 | 渐变的结束颜色 | 渐变终止色 | 配合起始色形成过渡 |
| 渐变方向 | direction | 向量2 | 1.0, 0.0 | 渐变的方向 | 渐变的方向向量 | (1,0)水平渐变,(0,1)垂直渐变 |
| 渐变中心 | center | 向量2 | 0.5, 0.5 | 渐变的中心点 | 渐变的中心位置 | (0.5,0.5)是图像中心 |
| 分辨率 | res | 数值对 | 512, 512 | 输出图像大小 | 输出分辨率 | 根据需要调整 |
| 当前帧 | frame | 整数 | 0 | 当前帧数 | 帧索引 | 静态渐变保持0 |
| 帧率 | frameRate | 小数 | 24 | 动画帧率 | 帧率设置 | 静态图片可忽略 |
| 时间 | time | 小数 | -1 | 时间控制 | 时间参数 | 静态效果设为-1 |
| 批处理 | batch | 整数 | 0 | 批量处理数量 | 批处理帧数 | 单张图片设为0 |
| 背景色 | matte | 颜色 | 0,0,0,255 | 背景颜色 | 背景色设置 | 通常用默认值 |
| 边缘处理 | edge | 选项 | Clamp | 边缘处理方式 | 纹理采样模式 | Clamp适合大多数情况 |
| 随机种子 | seed | 整数 | 0 | 随机种子 | 种子值 | 渐变不涉及随机 |
4. 使用技巧和建议
4.1 新手入门建议
- 先从简单的效果开始,比如灰度化、反色等
- 调整参数时小幅度改变,观察效果变化
- 多尝试不同的参数组合,找到最佳效果
4.2 性能优化
- 由于 GLSL 在 GPU 上运行,大多数情况下能提供10倍的速度提升
- 对于大批量处理,使用 batch 参数可以提高效率
- 避免过高的分辨率设置,除非确实需要
4.3 创意应用
- 结合多个节点可以创造复杂的视觉效果
- 使用时间参数可以制作动态效果
- 噪声节点特别适合制作自然纹理
4.4 自定义着色器
- 你可以添加自己的着色器,它们会在 ComfyUI 加载时编译成节点
- 自定义着色器会显示 🦄 标记
- 内置着色器显示 🌈 标记
5. 常见问题解答
Q1: 插件安装后找不到节点怎么办?
答: 确保插件正确安装在 custom_nodes 文件夹中,并且依赖项已经正确安装。重启 ComfyUI 后应该能在节点菜单中找到 JOVI_GLSL 分类。
Q2: 处理图像时出现错误怎么办?
答: 检查输入图像的格式是否正确,确保图像是 RGB 或 RGBA 格式。如果是蒙版图像,也需要确保格式兼容。
Q3: 如何制作动画效果?
答: 设置 batch 参数大于0,并调整 frame 和 frameRate 参数。每一帧都会根据时间参数产生不同的效果。
Q4: 自定义着色器怎么添加?
答: 将自定义着色器文件放在 ComfyUI/custom_nodes/Jovi_GLSL/user 目录下,重启 ComfyUI 后会自动加载。
Q5: 为什么我的效果和预期不一样?
答: 检查所有参数设置,特别是 seed、time 和 batch 参数。不同的设置会产生完全不同的效果。
6. 总结
Jovi_GLSL 插件为 ComfyUI 用户提供了强大的图像处理能力,特别适合需要高性能处理和创意视觉效果的场景。通过合理使用各种节点和参数,你可以创造出专业级的视觉效果。记住,熟练掌握这个插件需要时间和实践,建议多尝试不同的参数组合,找到最适合你需求的设置。