Shader效果算法剖析笔记(一)

第一个
方形线框加高光效果
Shader效果算法剖析笔记(一)_第1张图片

值得一提的是,代码中只用sup,supo 两个变量就绘制了线框的几何形状

float a(vec2 uv)
{
    uv.y = abs(uv.y);
    vec4 ss = vec4(uv.xy, .11, .79) - uv.yxyy + vec4(1.5,-1.2,0,0);
    return min(min(min(ss.x,ss.w),-uv.x),max(ss.y,ss.z));
}

void mainImage( out vec4 fragColor, in vec2 fragCoord )
{
    vec2 uv = (fragCoord - iResolution.xy*0.5) * 3. / iResolution.y,
         sup = vec2(-.5, .866),
         supo = vec2(.866, .5);

    float s = max(a(uv),max(a(vec2(dot(uv,sup), dot(uv,supo))),a(vec2(-dot(uv.yx,supo), dot(uv.yx,sup)))));

    vec4 col = vec4(.13,.17,.22,1.) + smoothstep(-fwidth(uv.x)*1.8,.0,s)*0.7;

    float i = smoothstep(.8,1.,sin(iGlobalTime*4.5+uv.x+uv.y));
    col += i*clamp(vec4(1)*s*.9+.1*i,.0,1.);

    fragColor = clamp(col,.0,1.);
}

原网站 Shadertoy

你可能感兴趣的:(图形学与游戏引擎)