デモシーン16

デモシーン

GLSL シェーダーコーディングのデモシーン制作記録 16作目です。

↑使用したテクスチャ

#ifdef GL_ES
precision mediump float;
#endif

#define PI 3.14159265359

#iChannel0 "frog.png"

float circle(vec2 st, float radius){
  vec2 pos = vec2(0.5)-st;
  radius *= 0.75;
  return 1.-smoothstep(radius-(radius*0.01),radius+(radius*0.01),dot(pos,pos)*3.14);
}


vec3 pallete(float t) {
    vec3 a = vec3(0.5);
    vec3 b = vec3(0.5);
    vec3 c = vec3(1.0);
    vec3 d = vec3(0.263, 0.416, 0.557);
    return a + b * cos(6.28318 * (c * t + d));
}


void mainImage(out vec4 fragColor, in vec2 fragCoord) {
    vec2 uv = fragCoord.xy / iResolution.xy;    // 0-1

    float frogScale = 0.25;
    vec2 frogPos = uv/ frogScale;
    float time = iTime ;
    frogPos -= vec2(0.5 + cos(time * 1.5), 1.5 + sin(time * 100.) * .01);

    vec2 frogHandPos = frogPos - vec2(0.45, 0.19);

    frogPos = clamp(frogPos, vec2(0.0), vec2(1.0));

    
    vec3 textureSky = texture(iChannel0, frogPos).xyz;

    float beamFreq = 50. - 50. * sin(iTime * .5);


    uv = frogHandPos;

    float l = length(uv - vec2(0.5));
    float a = atan(uv.y - 0.5, uv.x - 0.5);
    vec2 uvPos = vec2((sin(l * beamFreq - iTime * 100.)*.5 + .5) + a * 1.5);

    vec3 color = vec3(1.0);
    vec3 bgCol = pallete(time);
    color *= circle(uvPos, .01);
    color *= pallete(time - l);

    // if(color == vec3(0.0)){
    //     color += bgCol;
    // }

    color += textureSky;

    fragColor = vec4(color,1.0);
}

#デジタルアート #デモシーン #3DCG #シェーダーコーディング #レイマーチング #SF #demoscene

Please follow and like us:

Follow me!

コメント

Social Share Buttons and Icons powered by Ultimatelysocial
YouTube
YouTube
Instagram
Copy link
URL has been copied successfully!
PAGE TOP