Initial public source release

Split reusable rendering and format support into vectorail-core and vectorail-gc.
This commit is contained in:
2026-08-02 17:05:27 +02:00
commit 831d96e562
109 changed files with 20558 additions and 0 deletions
+39
View File
@@ -0,0 +1,39 @@
#version 450 core
in float vSide;
in float vDist;
in float vTrackTimeMs;
out vec4 FragColor;
uniform vec3 uColor;
uniform vec3 uBehindColor;
uniform bool uIsAvatar;
uniform bool uClipTrack;
uniform float uCurrentTimeMs;
uniform float uDrawBehindMs;
uniform float uDrawAheadMs;
uniform float uAlpha;
void main() {
float dist = abs(vSide);
// Мягкий туман: трасса видна очень далеко
float fog = exp(-vDist * 0.001);
if (uClipTrack &&
(vTrackTimeMs < uCurrentTimeMs - uDrawBehindMs ||
vTrackTimeMs > uCurrentTimeMs + uDrawAheadMs)) {
discard;
}
if (uIsAvatar) {
FragColor = vec4(1.0, 1.0, 1.0, 1.0);
} else {
float intensity = pow(1.0 - dist, 4.0);
float core = pow(1.0 - dist, 20.0);
vec3 railColor = (uClipTrack && vTrackTimeMs < uCurrentTimeMs) ? uBehindColor : uColor;
vec3 finalColor = mix(railColor, vec3(1.0), core);
// Цвет затухает в темноту, а не просто обрезается
FragColor = vec4(finalColor * fog, intensity * fog * uAlpha);
}
}