dasasdhba 发表于 2020-3-20 22:49:58

【CTF】自制 & DX11 修复特效合集

本帖最后由 dasasdhba 于 2020-4-9 11:40 编辑

前段时间 WSW 说 Crop 特效在 CTF2.5+ 的 DX11 上炸了
我看了一下 F1,DX11 特效用的是 HLSL 编译得到的 fxc 文件,在 Effects 目录下有源文件.hlsl
然后去翻了一下 Clickteam 论坛:https://community.clickteam.com/threads/105504-Converting-DX9-shaders-to-DX11
根据上面这个帖子,看了一下 CS_Crop.hlsl,发现确实有问题,然后我给改好了(
https://s1.ax1x.com/2020/03/20/82RcHP.png
但还要编译成.fxc,这就涉及到编译工具,然后我特么还去装了 VS{:4_128:}
搞了半天总算编译出来了,经测试正常,hlsl 和 fxc 我打包到我永硕了:
http://dasasdhba.ys168.com/
需者自取

如果以后还有啥特效炸了的话,然后你又不想改啊装个 VS 啥的,反馈到这里我尽量帮忙(


dasasdhba 发表于 2020-3-21 17:24:36

本帖最后由 dasasdhba 于 2020-3-21 17:25 编辑

研究了一下,在非 premultiplied 模式下
CTF 内的图像的 RGB 和 Alpha 值是分开的,在最后渲染的时候一起应用
这个时候 CTF 丢给 Shader 的也是 RGB 值和 Alpha 值分开的
而在 premultiplied 模式下
一开始 RGB 值就会与 Alpha 值相乘,然后渲染 RGBA
这个时候 CTF 会把 RGBA 值和 Alpha 值丢给 Shader
注意是 RGBA 值,于是有些没有做调整的特效就炸了
我实验了一下,要 Color.rgb 和 Color.a 同步变化才行
当然更多特效炸掉的原因是没乘上 In.Tint 然后就全黑了(Clickteam 傻贲)

值得一提的是
官方给出的做法是在 Shader 输入的时候先除去 Alpha 值
然后再做原来的变换算法
最后再乘上 Alpha 值,返回给 CTF 的仍然是 RGBA
这也是我昨天的做法,但说实话这不是更慢了吗(

至于为什么非 premultiplied 模式会出现一些神奇的现象
这个就要去问 Clickteam 了
所以我今天又重新改了一下 Crop,之后打算再改点其他的

我大概看了一下,有大量的 In.Tint 漏乘现象(
此外,几乎所有特效的 premultiplied 模式都是用的 CTF 官方给出的神奇方案(
更神奇的时候我编译这个模式的时候,
https://s1.ax1x.com/2020/03/21/8ffANq.png
所以 Clickteam 是怎么编译出来的(

无视我233 发表于 2020-3-21 22:41:49

tql...drl...
总之感谢

dasasdhba 发表于 2020-4-9 11:46:39

最近从小伙伴那里听说 Standard 的 AND OR XOR 特效不能在 DirectX 上用
于是我照着“字面意思”自己写了个,dx11 下效果正常,但 dx8/9 报编译错误
仔细一看,dx8/9 没有 '&' '|' '^' 运算???????????????
没事,咱自己写个函数
https://s1.ax1x.com/2020/04/09/G48fM9.png
CTF 傻贲
行行行,那咱支持 dx11 又不是不行,下载地址见我永硕

dasasdhba 发表于 2020-4-9 12:06:00

顺便再传两个之前自己做的特效,反正自己存着也没用
HSV:像 Photoshop 一样调整色相 饱和度 明度,由于各种不明原因只能在 dx11 上用
Crop_Rectangle:与 CS_Crop 功能相似,但这个特效是指定一个矩形区域
下载地址还是我的永硕

dasasdhba 发表于 2022-5-14 13:24:19

本帖最后由 dasasdhba 于 2022-5-14 13:31 编辑

新增描边特效,仅描边那些不透明度高于 0.5 的区域,支持调整大小(仅限 dx11)
平滑度最大值目前只有 64,如果电脑特别好的话可以改源文件把最大值调高点再编译((
注意部分 CTF 好像自带一个跟我这个特效同名的但是在 dx11 已经炸掉的 Outline.fx,记得覆盖或者删掉
https://s1.ax1x.com/2022/05/14/O6wxaD.md.png

dasasdhba 发表于 2022-10-16 23:53:32

本帖最后由 dasasdhba 于 2022-10-23 00:41 编辑

从 Godot 的开源 Shader 里面转了个激光特效出来(其实就是 GLSL→HLSL)
https://godotshaders.com/shader/energy-beams/
效果大概这样:

动画效果需要手动写事件让 Animation 参数(fA)自增
然后这个其实最好搭配 Add 用
(在 CTF 里面就是单放一个图层然后给这个图层加 Add)
特效名为 Laser,有需要的可以拿去玩一玩(

Update:新加了 Length 参数(fL)方便使用

顺便也传了几个之前做的但是没发的:
RGB Separate
Line(端午-4 的效果)

dasasdhba 发表于 2022-10-23 00:26:11

本帖最后由 dasasdhba 于 2022-10-23 00:35 编辑

受wsw的smooth_outline以及一个开源shader(https://godotshaders.com/shader/smooth-outline-2d/)的启发重新做了一个更平滑的描边效果,效果大概这样:
https://s1.ax1x.com/2022/10/23/xg81JO.png
如果调低 fAlpha 参数,也能得到发光效果:
https://s1.ax1x.com/2022/10/23/xg8UeI.png
fSize参数取值为0~8,仅支持dx11

特效名为 Glow Outline,已上传至永硕

dasasdhba 发表于 2022-12-8 21:54:56

利用最近所学,我优化了 HSV 特效,使得新版没有使用任何 if:
https://s1.ax1x.com/2022/12/08/zRpH5F.png
下载地址不变。

dasasdhba 发表于 2023-2-19 14:15:15

https://s1.ax1x.com/2023/02/19/pSLbvfU.png
新增(纸面)圆柱效果

dasasdhba 发表于 2023-3-24 18:47:26

新增 Gradient Fill,用于制作渐变,支持 0~90 度方向,支持透明度参数
dx11 支持 8 种颜色,dx9 支持 6 种颜色(算力限制)
https://s1.ax1x.com/2023/03/24/ppBJAde.jpg
制作此特效的契机是 CTF 自带 quick backdrop 在开启 dx11 并使用非常规高度的情况下效果会与预期严重不一致
而「Active Gradient object」即便没有此问题但使用起来仍然会有诸多不便
顺带一提我用的是三次插值,因而得到的渐变也不是线性渐变, 会有一定区别

作为 Effect 也顺便支持叠加到原 Texture 上(关闭 Overwrite),因此用途应该更广泛。

dasasdhba 发表于 2023-4-8 16:19:45

CTF 在开启 dx11 的情况下似乎对于超过窗口长宽的 Texture 将会直接按照窗口长宽来作裁剪再丢给 Shader,我猜测这也是导致自带渐变崩掉的原因之一。
这也进一步导致我的 Gradient Fill 在超过窗口尺寸的情况下只能按照窗口大小来填充,直接没办法用了。
(dx9 没事)

没有找到说明这个事情的相关资料,如果确实没有什么办法调整这个行为的话,那 dx11 下恐怕只能去用扩展来做超过窗口尺寸的渐变了。

对此我只能直呼离谱。

LongZongKuiYan 发表于 2023-4-23 12:40:22

渐变问题太离谱了{:9_338:}{:9_338:}
扩展麻烦就麻烦罢反正至少能用{:9_338:}{:9_338:}
如果谁有正版且有渠道向CTF反馈的可以把这个bug提交一下23333

dasasdhba 发表于 2023-5-23 22:29:43

dasasdhba 发表于 2023-4-8 16:19
CTF 在开启 dx11 的情况下似乎对于超过窗口长宽的 Texture 将会直接按照窗口长宽来作裁剪再丢给 Shader,我 ...

OK,已找到解决方案

经过测试,CTF 只会裁 Backdrop/Quick Backdrop,不会裁 Active
所以非常规尺寸可以用 Active + 我的 Gradient Fill 来解决

dasasdhba 发表于 2023-5-23 22:50:23

本帖最后由 dasasdhba 于 2023-5-23 22:52 编辑

基于多重 fBM 的模拟云彩,转写自:https://godotshaders.com/shader/cloudy-skies/
https://img1.imgtp.com/2023/05/23/1IBu0YjL.gif
基于底色混合,所以不支持直接修改透明度,请使用 Effect 参数。
(不支持 dx9)

marikey 发表于 2023-6-11 11:42:18

学到很多,受教了

dasasdhba 发表于 2024-2-14 18:27:46

本帖最后由 dasasdhba 于 2024-2-15 12:55 编辑

旋转和缩放 Scale & Rotate
Y 反射 Reflection

带 Mask 后缀的是对背景 Texture 生效,否则是处理本体,我的所有 Shader 都符合这个特点。
以及,Scale_Rotate_Mask 的底色是黑色,懒得做成参数了,想改的自己改源文件。


页: [1]
查看完整版本: 【CTF】自制 & DX11 修复特效合集