完成主要交互、高性能组件、国际化和A型传感器数据包接收

This commit is contained in:
2026-01-13 16:34:28 +08:00
parent 47e6dc7244
commit 1960e6a5b9
84 changed files with 7752 additions and 332 deletions

View File

@@ -1,15 +1,19 @@
#version 330 core
out vec4 FragColor;
// 视口大小(像素,建议传入 framebuffer 尺寸HiDPI 下要乘 devicePixelRatio
uniform vec2 uViewport;
// 以像素为单位的网格间距:细网格/粗网格
uniform float uMinorStep;
uniform float uMajorStep;
// 生成抗锯齿网格线(返回 0..11 表示在线上)
float gridLine(float stepPx) {
// 当前坐标像素
vec2 coord = gl_FragCoord.xy;
vec2 q = coord / stepPx;
// 距离最近网格线的归一化距离,再用 fwidth 做抗锯齿
vec2 g = abs(fract(q - 0.5) - 0.5) / fwidth(q);
float line = 1.0 - min(min(g.x, g.y), 1.0);
return line;
@@ -17,21 +21,28 @@ float gridLine(float stepPx) {
void main() {
vec2 viewport = max(uViewport, vec2(1.0));
vec2 uv = gl_FragCoord.xy / viewport;
vec2 uv = gl_FragCoord.xy / viewport; // 0..1
// 背景渐变:上更亮、下稍灰,常见 3D 软件的“科技感”底色
vec3 topCol = vec3(0.99, 0.99, 1.00);
vec3 botCol = vec3(0.94, 0.95, 0.98);
vec3 col = mix(botCol, topCol, uv.y);
// 网格线:细线 + 粗线(每隔一段更深一点)
float minor = gridLine(max(uMinorStep, 1.0));
float major = gridLine(max(uMajorStep, 1.0));
vec3 minorCol = vec3(0.80, 0.82, 0.87);
vec3 majorcol = vec3(0.70, 0.73, 0.80);
vec3 majorCol = vec3(0.70, 0.73, 0.80);
col = mix(col, minorCol, minor * 0.22);
col = mix(col, majorcol, major * 0.35);
col = mix(col, majorCol, major * 0.35);
// 轻微 vignette四角略暗让画面更“聚焦”
vec2 p = uv * 2.0 - 1.0;
float v = clamp(1.0 - dot(p, p) * 0.12, 0.0, 1.0);
col *= mix(1.0, v, 0.35);
FragColor = vec4(col, 1.0);
}