Initial public source release
Split reusable rendering and format support into vectorail-core and vectorail-gc.
This commit is contained in:
@@ -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);
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user