StackGenVis: Alignment of Data, Algorithms, and Models for Stacking Ensemble Learning Using Performance Metrics
https://doi.org/10.1109/TVCG.2020.3030352
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
42 lines
923 B
42 lines
923 B
4 years ago
|
precision highp float;
|
||
|
|
||
|
attribute vec3 position, nextPosition;
|
||
|
attribute float arcLength, lineWidth;
|
||
|
attribute vec4 color;
|
||
|
|
||
|
uniform vec2 screenShape;
|
||
|
uniform float pixelRatio;
|
||
|
uniform mat4 model, view, projection;
|
||
|
|
||
|
varying vec4 fragColor;
|
||
|
varying vec3 worldPosition;
|
||
|
varying float pixelArcLength;
|
||
|
|
||
|
vec4 project(vec3 p) {
|
||
|
return projection * view * model * vec4(p, 1.0);
|
||
|
}
|
||
|
|
||
|
void main() {
|
||
|
vec4 startPoint = project(position);
|
||
|
vec4 endPoint = project(nextPosition);
|
||
|
|
||
|
vec2 A = startPoint.xy / startPoint.w;
|
||
|
vec2 B = endPoint.xy / endPoint.w;
|
||
|
|
||
|
float clipAngle = atan(
|
||
|
(B.y - A.y) * screenShape.y,
|
||
|
(B.x - A.x) * screenShape.x
|
||
|
);
|
||
|
|
||
|
vec2 offset = 0.5 * pixelRatio * lineWidth * vec2(
|
||
|
sin(clipAngle),
|
||
|
-cos(clipAngle)
|
||
|
) / screenShape;
|
||
|
|
||
|
gl_Position = vec4(startPoint.xy + startPoint.w * offset, startPoint.zw);
|
||
|
|
||
|
worldPosition = position;
|
||
|
pixelArcLength = arcLength;
|
||
|
fragColor = color;
|
||
|
}
|