Project1

标题: mv shader+rendertexture [打印本页]

作者: yagami    时间: 2022-8-23 05:33
标题: mv shader+rendertexture
本帖最后由 yagami 于 2022-8-23 16:03 编辑

好久没来了,做了个比较常用的功能 ,屏幕后处理效果 这里做了几个简单的例子

使用方法如下


toys.js.zip (2.9 KB, 下载次数: 15, 售价: 1 星屑)


作者: 1071257831    时间: 2022-8-23 08:11
本帖最后由 1071257831 于 2022-8-23 15:11 编辑

插件看起来可以,
我给插件写了一个帮助方便用,如果有冒犯到了您,我会第一时间删除。

其次,插件开启滤镜效果后打开菜单再关闭,滤镜效果会自动失效。

@H6J0)N0]3_Y}ABTG1HP%%0.png (61.24 KB, 下载次数: 28)

@H6J0)N0]3_Y}ABTG1HP%%0.png

toys.rar

2.26 KB, 下载次数: 15


作者: yagami    时间: 2022-8-23 16:07
本帖最后由 yagami 于 2022-8-23 17:28 编辑
1071257831 发表于 2022-8-23 08:11
插件看起来可以,
我给插件写了一个帮助方便用,如果有冒犯到了您,我会第一时间删除。


第一个问题是切换场景没保存状态 这个改了
第二个可能是因为贴图没主动gc导致的,不是很清楚 我加了内存释放你可以试试,附件更新了
这个其实主要是个思路,效果能扩展,我只是用了几个最简单shader,使用场景也能扩展,比如战斗场景里也能用,这个就靠后人自我发挥吧
比如下面这个效果 我并没整合进去 shader和参数如下 ,就当练手吧

JAVASCRIPT 代码复制
  1. var frag2 = " \
  2.             varying vec2 vTextureCoord;\
  3.                 uniform sampler2D uSampler;\
  4.                 uniform float m_time;\
  5.                 uniform float period;\
  6.                 uniform float velocity;\
  7.                 uniform float amplitude;\
  8.                 uniform float brightness;\
  9.                 float PI = 3.14159;\
  10.                 void main(void){\
  11.                   float v = sin((vTextureCoord.x - m_time * velocity) * 2.0 * PI * period);\
  12.                   vec4 color = texture2D(uSampler, vTextureCoord + vec2(0.0, v * amplitude * vTextureCoord.x));\
  13.                 \
  14.                   if (color.a > 0.0) {\
  15.                     float delta = sin((vTextureCoord.x + 0.001 - m_time * velocity) * 2.0 * PI * period) - v;\
  16.                     if (delta < 0.0) {\
  17.                       color = mix(color, vec4(1.0), -delta * brightness);\
  18.                     }\
  19.                   }\
  20.                   gl_FragColor = color;\
  21.                 }\
  22.                 ";
  23.  
  24.                 var simpleShader = new PIXI.Filter(vert, frag2);
  25.                 renderSprite._filters = [simpleShader];
  26.                 var filter = renderSprite._filters[0].uniforms
  27.                 filter.period = 3.0
  28.                 filter.amplitude = 0.04
  29.                 filter.velocity = 0.3
  30.                 filter.brightness = 8.0
  31.                 filter.m_time = filterstate.m_time





欢迎光临 Project1 (https://rpg.blue/) Powered by Discuz! X3.1