Add glMatrix
This commit is contained in:
parent
582979d3ed
commit
e88b4589d2
26 changed files with 211 additions and 358 deletions
|
|
@ -8,12 +8,18 @@ precision mediump float;
|
|||
|
||||
|
||||
uniform vec2[LINE_COUNT * 2] lines;
|
||||
uniform float[LINE_COUNT] radii;
|
||||
uniform float[LINE_COUNT * 2] radii;
|
||||
|
||||
float lineDistance(in vec2 target, in vec2 start, in vec2 end, in float radius) {
|
||||
float lineDistance(
|
||||
in vec2 target,
|
||||
in vec2 start,
|
||||
in vec2 end,
|
||||
in float radiusFrom,
|
||||
in float radiusTo
|
||||
) {
|
||||
vec2 pa = target - start, ba = end - start;
|
||||
float h = clamp(dot(pa, ba) / dot(ba, ba), 0.0, 1.0);
|
||||
return distance(pa, ba * h) - radius;
|
||||
return distance(pa, ba * h) - mix(radiusFrom, radiusTo, smoothstep(0.0, 1.0, h));
|
||||
}
|
||||
|
||||
float getDistance(in vec2 target) {
|
||||
|
|
@ -22,8 +28,9 @@ float getDistance(in vec2 target) {
|
|||
for (int i = 0; i < LINE_COUNT; i++) {
|
||||
vec2 start = lines[2 * i];
|
||||
vec2 end = lines[2 * i + 1];
|
||||
float r = radii[i];
|
||||
minDistance = min(minDistance, lineDistance(target, start, end, r));
|
||||
float rFrom = radii[2 * i];
|
||||
float rTo = radii[2 * i + 1];
|
||||
minDistance = min(minDistance, lineDistance(target, start, end, rFrom, rTo));
|
||||
}
|
||||
|
||||
return -minDistance;
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue