在shaderToy中画矩形的原理

2022-01-05  本文已影响0人  汇源可乐

以IQ写的函数为例:

float sdBox( in vec2 p, in vec2 b ){
    vec2 d = abs(p)-b;
    return length(max(d,0.0)) + min(max(d.x,d.y),0.0);
}

shaderToy矩形源码示例

float sdBox( in vec2 p, in vec2 b ){
    vec2 d = abs(p)-b;
    return length(max(d,0.0)) + min(max(d.x,d.y),0.0);
}


void mainImage( out vec4 fragColor, in vec2 fragCoord )
{
    // Normalized pixel coordinates (from 0 to 1)
    vec2 uv = fragCoord/iResolution.xy;
    vec2 p = (2.0*fragCoord-iResolution.xy)/iResolution.y;
    // Time varying pixel color
    vec3 col = 0.5 + 0.5*cos(iTime+uv.xyx+vec3(0,2,4));
    col = mix(col,vec3(0.0),step(0.0,sdBox(p,vec2(0.4,0.3))));
    // Output to screen
    fragColor = vec4(col,1.0);
}
上一篇下一篇

猜你喜欢

热点阅读