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:
コメント