1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35
| #version 330 in vec4 vs_fs_color; layout (location = 0) out vec4 color; flat in vec2 outRectSize; noperspective in vec2 uvInterp;
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) ; } float sdBox_f( in vec2 p, in vec2 b,float r) { vec2 d = abs(p)-b; vec2 tempb = b - r; vec2 tempd = abs(p) - tempb; if(tempd.x > 0 && tempd.y > 0) return length(tempd)-r; return length(max(d,0.0)) + min(max(d.x,d.y),0.0) ; } void main(void) { color = vec4(1,1.0,1.0,1.0); float sdf = sdBox_f(uvInterp,outRectSize,0.5); if(sdf < 0) { color = vec4(1.0,0.0,0.0,1.0); } }
|