完成主要交互、高性能组件、国际化和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

@@ -117,19 +117,31 @@ void main() {
float value01 = clamp((vValue - uMinV) / max(1e-6, (uMaxV - uMinV)), 0.0, 1.0);
vec3 dataCol = dataColorRamp(value01);
bool hasData = (uHasData != 0);
vec3 baseColor = hasData ? dataCol : metalBase;
// bool hasData = (uHasData != 0);
// vec3 baseColor = hasData ? dataCol : metalBase;
vec3 baseColor = metalBase;
// dataViz: flat/unlit, no lighting modulation (keep pure baseColor)
if (uRenderMode == 1) {
FragColor = vec4(clamp(baseColor, 0.0, 1.0), 1.0);
return;
}
// Mostly flat, with a slight bevel near the edge to catch highlights.
float slope = mix(0.06, 0.28, smoothstep(0.55, 1.0, r01));
vec3 N = normalize(vec3(p.x * slope, 1.0, p.y * slope));
// Face the camera: dots live on the panel front face (XY plane), so the base normal points -Z.
// vec3 N = normalize(vec3(p.x * slope, p.y * slope, -1.0));
vec3 N = normalize(vec3(0.0, 0.15, -1.0));
vec3 V = normalize(uCameraPos - vWorldPos);
float metallic = hasData ? 0.0 : 0.90;
float roughness = hasData ? 0.78 : ((uRenderMode == 1) ? 0.70 : 0.55);
// float metallic = hasData ? 0.0 : 0.90;
// float roughness = hasData ? 0.78 : ((uRenderMode == 1) ? 0.70 : 0.55);
float metallic = 0.90;
float roughness = 0.55;
vec3 keyL = normalize(vec3(0.55, 1.00, 0.25));
vec3 fillL = normalize(vec3(-0.30, 0.70, -0.80));
// "Front light": make the light come from the camera direction (like a headlight/flashlight).
vec3 keyL = V;
vec3 fillL = V;
vec3 keyC = vec3(1.00, 0.98, 0.95) * 1.8;
vec3 fillC = vec3(0.85, 0.90, 1.00) * 0.9;