文档正在撰写中…
雷神扩展是做什么的?
雷神扩展可以给整个舞台设置特效,能够在舞台上产生各种视觉效果。
为什么需要用雷神扩展?
在游戏设计中,合适的视觉效果能够让玩家更好地感受到游戏里的氛围。
雷神扩展可以让创作者以一种简单的方式直接给整个舞台加上效果滤镜,让创作者能够用简单的方式实现视觉效果。
目前,雷神扩展支持 9 种特效
特效名称 | 功能 |
异闪 | 持续一段时间的轻微闪烁,横竖两条条带闪烁,以及轻微画面抖动 |
老电影 | 持续的雪花效果,扫描线效果,以及灰度(去除颜色)模式 |
幻影 | 持续的残影特效,让所有运动(变化)的东西留下残影 |
颤抖 | 持续抖动,可以逐渐停下 |
冲击波 | 持续产生波纹扩散效果,效果可大可小,同时只能存在一个 |
噪音模糊 | 持续地让点随机显示附近颜色,实现模糊效果,会不停出现闪烁的噪点 |
高斯模糊 | 普通的模糊效果,不会有动态噪点 |
发光 | 让场景变得更亮,带有不太明显的辉光效果 |
颜色噪音 | 将红色和青色部分分离,可以水平模糊 |
说明中的“持续”意味着这个特效实际上是动态的特效
如何使用
控制
特效具有打开,关闭和移出三种状态,见下图:
- 特效默认处于“移出”状态
- 修改特效参数会自动打开移出的特效,但不会自动打开关闭的特效
- 关闭特效后再次打开可以保留叠加顺序,如果从移出变成打开,叠加顺序会在最后
- 特效的叠加顺序会影响最终效果
异闪
步数:控制异闪的持续时间,值越大时间越久。可以用关闭暂停或者移出打断
噪音量:舞台亮度偏移的强烈程度
错位:两个条带距离左边或和上边的最大偏移位置(例如,0 代表固定在左边和上边,50 代表在左边 50% 部分和上边 50% 部分随机移动,100 代表全舞台随机移动)
老电影
噪音:画面雪花闪动的强烈程度
扫描线:画面出现水平线效果的强烈程度(受噪音程度影响,如果没开启噪音,扫描线效果不生效)
颜色:设置为灰度时,场景失去颜色,变成亮度不同的灰色
幻影
设定幻影每过一帧淡出的量。0% 会导致幻影不再消失。
颤抖
x 和 y 代表抖动的最大幅度,可以设为负数(取绝对值)
消减速度代表抖动幅度的变小速度,0 代表永不变小。大于 0 代表抖动幅度会逐渐停下来,数值越大抖动持续时间越短
“调过 f 帧每轮” 意为每次抖动之间跳过的帧数,0 代表连续抖动,大于 0 代表每过 f 帧抖动 1 帧,在这 f 帧里舞台保持原状,也就是每 (f+1) 帧抖动 1 帧。
冲击波
产生椭圆形的冲击波。
x, y:冲击波产生的位置
能量:冲击波扭曲舞台的强度
大小:冲击波的宽度
衰减:冲击波宽度减小的速度
速度:冲击波扩散的速度
噪音模糊
百分数代表模糊的程度。
和高斯模糊不同的是,这个的效果是动态的,并且会有明显噪点。
高斯模糊
百分数代表模糊的程度。
和噪音模糊不同的是,这个的效果是静态的,效果非常平滑。
发光
增大舞台整体亮度,使亮的物体变得更亮,不影响黑色部分。
百分数意味着变亮的程度。不过设定为负数不能实现变暗。
如果在黑暗的区域还能看到辉光效果
颜色噪音
将舞台的红色和青色部分分开,并且模糊
偏移:分开的两个幻影的距离,不能设为负数反向分开
噪音:分开的两个幻影水平波动的程度,设为 0 则不波动
使用样例
更多细节
- 雷神扩展实现这些特效的方法并非直接逐个计算每个像素点的最终颜色,而是修改了 Scratch 的绘画部分,直接在舞台显示的时候通过 WebGL 片段着色器 进行效果处理,将计算大量像素点颜色的任务交给更适合处理这类问题的 GPU,速度更快。
- 效果在关闭时,相关的片段着色器仍在内存中,下次打开时响应速度快;在移出时,相关的着色器从内存释放,下次打开时会稍微慢一点。
- 在同时使用多个效果的时候,效果会被叠加,可以借此获得更加丰富的效果,当然,这样也会消耗更多的 GPU 性能。(此部分可以在未来优化)
- 叠加的顺序会影响最终效果,不过目前还没有用于控制叠加顺序的积木,要想控制顺序,需要先移出特效,然后重新按先后顺序启动特效。
- 雷神扩展会影响整个舞台,但不会影响提问的回答框,变量和列表显示,白猫的输入框,以及其他不通过舞台 Canvas 绘制的内容。
- 雷神扩展只有在舞台改变以及设定了持续效果的时候才会对特效进行计算,例如在舞台不动的时候打开发光效果,效果只会被计算一次。 如果打开了持续效果,例如噪音模糊,或者老电影效果,会持续进行 GPU 计算。
- 大部分以“%”为单位的数值的范围都是 0 到 100。
- 目前点击停止后效果不会自动移出,建议在不需要特效时及时移出效果,节省性能。
更新计划
- 点击停止后,自动移出效果
- 对造型或者造型文件夹(即将推出)单独应用特效。
- 通过编写着色器代码自定义特效(和创建 Python 文件和 JSON 文件的方法类似)
- 支持 Multi-pass,性能会有飞速提升(目前的方法是先对 Canvas 采样获得 Texture,然后把 Texture 给 GPU 做处理,这是比较慢的 IO 操作,OpenGL ES 3.0 以上的版本支持 Multi-pass,可以把所有操作放在 GPU 中完成)
此插件和文档由 Shawn 创建和维护,由 -6 进行文档撰写和维护
-6 Scratch 创作者✉️ 1195132772@qq.com | 飞书链接 | QQ: 1195132772
讨论
<iframe
width="100%"
height="800px"
scrolling="no"
src="https://www.ccw.site/embed?id=dev-extensions-quake&type=comment"
title="Gandi Quake 雷神 评论区"
frameBorder="0"
allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share"
allowFullScreen
scrolling="0"
></iframe>