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
第一个ShaderToy——画圆、方、三角
最新推荐文章于 2023-07-15 12:35:07 发布