Minor improvements

This commit is contained in:
schmelczerandras 2020-09-16 22:02:50 +02:00
parent dfaaa08433
commit 7bbb5f2d96
11 changed files with 93 additions and 76 deletions

View file

@ -13,15 +13,15 @@ export class Circle extends Drawable {
}[CIRCLE_COUNT] circles;
void circleMinDistance(inout float minDistance, inout float color) {
float circleMinDistance = minDistance;
float myMinDistance = maxMinDistance;
for (int i = 0; i < CIRCLE_COUNT; i++) {
float dist = distance(circles[i].center, position) - circles[i].radius;
circleMinDistance = min(circleMinDistance, dist);
myMinDistance = min(myMinDistance, dist);
}
minDistance = min(minDistance, circleMinDistance);
minDistance = min(minDistance, myMinDistance);
color = mix(2.0, color, step(
distanceNdcPixelSize + SURFACE_OFFSET,
circleMinDistance
myMinDistance
));
}
`,

View file

@ -5,8 +5,6 @@ import { Drawable } from '../drawable';
import { DrawableDescriptor } from '../drawable-descriptor';
export class Tunnel extends Drawable {
public readonly isInverted = false;
public static get descriptor(): DrawableDescriptor {
return {
sdf: {
@ -16,11 +14,10 @@ export class Tunnel extends Drawable {
vec2 toFromDelta;
float fromRadius;
float toRadius;
float inverted;
}[TUNNEL_COUNT] tunnels;
void tunnelMinDistance(inout float minDistance, inout float color) {
float myMinDistance = minDistance;
float myMinDistance = maxMinDistance;
for (int i = 0; i < TUNNEL_COUNT; i++) {
Tunnel tunnel = tunnels[i];
vec2 targetFromDelta = position - tunnel.from;
@ -31,20 +28,20 @@ export class Tunnel extends Drawable {
0.0, 1.0
);
float lineDistance = -mix(
float currentDistance = -mix(
tunnel.fromRadius, tunnel.toRadius, h
) + distance(
targetFromDelta, tunnel.toFromDelta * h
targetFromDelta, tunnel.toFromDelta * h
);
myMinDistance = min(myMinDistance, lineDistance);
myMinDistance = min(myMinDistance, currentDistance);
}
color = mix(2.0, color, step(
distanceNdcPixelSize + SURFACE_OFFSET,
-myMinDistance
myMinDistance
));
minDistance = -myMinDistance;
minDistance = min(minDistance, myMinDistance);
}
`,
distanceFunctionName: 'tunnelMinDistance',
@ -52,7 +49,12 @@ export class Tunnel extends Drawable {
uniformName: 'tunnels',
uniformCountMacroName: 'TUNNEL_COUNT',
shaderCombinationSteps: [0, 1, 4, 16, 32],
empty: new Tunnel(vec2.fromValues(0, 0), vec2.fromValues(0, 0), 0, 0),
empty: new Tunnel(
vec2.fromValues(-100000, -100000),
vec2.fromValues(-100000, -100000),
0,
0
),
};
}
@ -87,7 +89,6 @@ export class Tunnel extends Drawable {
toFromDelta: vec2.scale(vec2.create(), toFromDelta, transform1d),
fromRadius: this.fromRadius * transform1d,
toRadius: this.toRadius * transform1d,
inverted: this.isInverted ? -1 : 1,
};
}
}