@@ -44,6 +44,8 @@ float isOnLine(vec2 point, vec2 start, vec2 end, float width, float aspect) {
4444 return float (withinLine);
4545}
4646
47+ // IDEA : マルチサンプリングしてるんだけど、もっといい方法ありそうだけどな〜
48+ // IDEA ; 普通にマウスからの距離でいけないかな〜
4749vec4 createSmudge(){
4850 vec2 offsets[9 ];
4951 offsets[0 ] = vec2 (- 1 , - 1 ); offsets[1 ] = vec2 ( 0 , - 1 ); offsets[2 ] = vec2 ( 1 , - 1 );
@@ -60,6 +62,7 @@ vec4 createSmudge(){
6062 return smudgedColor / 9.0 ;
6163}
6264
65+ // IDEA : 速度からサンプリングして擬似的なモーションブラーしてるんだけど、ここで速度による拡散作れないかな〜
6366vec4 createMotionBlur(vec4 baseColor, vec2 velocity, float motion, int samples) {
6467 vec4 motionBlurredColor = baseColor;
6568 vec2 scaledVelocity = velocity * motion;
@@ -71,9 +74,7 @@ vec4 createMotionBlur(vec4 baseColor, vec2 velocity, float motion, int samples)
7174 return motionBlurredColor / float (samples);
7275}
7376
74-
7577void main() {
76- // Convert UV coordinates to range [-1, 1]
7778 vec2 st = vUv * 2.0 - 1.0 ;
7879
7980 // velocity vector
@@ -94,11 +95,19 @@ void main() {
9495 vec3 color = uColor;
9596
9697 // map texture to color
98+ // TODO:ここのミックスもよう使い勝手わるい
9799 vec4 textureColor = texture2D (uTexture, vUv);
98100 vec3 finalColor = mix (color, textureColor.rgb, textureColor.a);
99101
100- float onLine = isOnLine(st, uPrevMouse, uMouse, modifiedRadius, uAspect);
101- bufferColor.rgb = mix (bufferColor.rgb, finalColor, onLine) ;
102+ // ここ0 || 1で かえって来る
103+ float onLine = length (uVelocity) > 0 . ? isOnLine(st, uPrevMouse, uMouse, modifiedRadius, uAspect) : . 0 ;
102104
103- gl_FragColor = vec4 (bufferColor.rgb,1.0 );
105+ // ここで、onlineの値に乗算するのが良さそう falloff
106+ // float falloff = smoothstep(.9, 0.0, onLine);
107+
108+ bufferColor.rgb = mix (bufferColor.rgb, finalColor, onLine);
109+
110+ gl_FragColor = vec4 (bufferColor.rgb,1 .);
111+
112+
104113}
0 commit comments