Shader学习笔记(5)- GLSL内建函数应用

STEP

HeavySide Step Function,译为赫维赛德阶跃函数(此处维基

这里写图片描述

step(a,b):当a小于b,返回0;a大于b,返回1。(具体图像可以查看本节最后一张图的蓝色函数)

void mainImage( out vec4 fragColor, in vec2 fragCoord )
{
    vec2 uv = (2.*fragCoord-iResolution.xy)/min(iResolution.x,iResolution.y);
    float x = iResolution.x/iResolution.y;

    float color = 0.;

    //横向将屏幕分成4部分

    //step实现方式
    if(uv.x<-0.6*x){
        if(uv.y>0.5) color = 1.;
        else color = 0.;
    }

    //step
    if(uv.x<-0.2*x) color = step(-0.5,uv.y);

    //镜像
    else if(uv.x<0.2*x) color = 1.-step(.2,uv.y);

    //改变黑白亮度
    else if(uv.x<0.6*x) color = 0.3+0.5*step(.4,uv.y);

    //制造分隔色
    else color = step(-.3,uv.y)*(1.-step(.5,uv.y));

    fragColor = vec4(vec3(color),1.);
}

这里写图片描述

CLAMP

f(x,min,max):当x小于min时,返回min;x大于max时,返回max;在min到max之间,返回x值本身。
(具体图像可以查看本节最后一张图的蓝色函数)此处维基

void mainImage( out vec4 fragColor, in vec2 fragCoord )
{
    //vec2 uv = (2.*fragCoord-iResolution.xy)/min(iResolution.x,iResolution.y);
    vec2 uv = fragCoord/iResolution.xy;

    float color = 1.;

    //clamp实现方式
    float max = 0.8,min = 0.2;
    if(uv.x<0.33){
        if(uv.y>max) color = max;
        else if(uv.y>min&&uv.y<max) color = uv.y;
        else color = min;
    }

    //clamp
    else if(uv.x<0.66) color = clamp(u
  • 2
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值