第一个ShaderToy——画圆、方、三角

本文介绍了如何使用glsl语言在ShaderToy上创建基础图形,包括画圆、矩形和三角形。通过示例代码展示了drawCircle、drawRect和drawTriangle函数的实现,并最终将这些图形融合到一个综合的Shader中。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

vec4 drawTriangle(in vec2 p, in vec2 A, in vec2 B, in vec2 C)
{
    vec2 AB = B-A;
    vec2 BC = C-B;
    vec2 CA = A-C;
    
    vec2 AP = p - A;
    vec2 BP = p - B;
    vec2 CP = p - C;
    
  	vec3 cPAB = cross(vec3(AP,.0),vec3(AB,.0));
    vec3 cCAB = cross(vec3(-CA,.0),vec3(AB,.0));
    bool bPA = dot(cPAB, cCAB) >= .0;
    

    vec3 cPAC = cross(vec3(CP,.0), vec3(CA,.0));
    vec3 cBAC = cross(vec3(-BC,.0), vec3(CA,.0));
    bool bPC = dot(cPAC, cBAC) >= .0;
    
    vec3 cPBC = cross(vec3(BP,.0), vec3(BC,.0));
    vec3 cABC = cross(vec3(-AB,.0), vec3(BC,.0));
    bool bPB = dot(cPBC, cABC) >= .0;
    
    if (bPC && bPB && bPA)
    {
        return vec4(0.9, 0.1, 0.1, 1.0);
    }
    else
    {
        return vec4(0.0, 0.0, 0.0, 0.0);
    }
}

vec4 drawCircle(in vec2 p, in vec2 o, in float radius)
{
 	float f = smoothstep(radius - 0.003, radius + 0.003, length(p-o));
    return vec4(0.4,0.2,0.6,1.0-f);
}

vec4 drawRect
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值