看见反常 · 动一处 · 抓证据
用户选了高档,设备为什么实际跑了中档?
只读 · 与实验共用计算模型
这页解决什么
代码同时保留请求值和生效值,再记录哪条设备规则触发了降级。
保留用户想要的,也记录设备真正给的
两组数据都在,才能解释为何触发降级。
// Quality Tier & Fallback Lab — executable teaching model
const requested = { maps, ssr, reflections, fog, particles, resolution };
const effective = fallback(requested, { tier, memoryGb, bandwidthMb });
fallbackReasons.push("SSR disabled for low tier");
画质同时花 GPU、内存和带宽
三者可能给出不同结论,所以要一起测。
const screenPixels = renderScale * renderScale; // unitless screen-pixel workload multiplier
const textureTexels = (textureResolution / 1024) ** 2; // texture-capacity multiplier
const gpuMs = screenPixels * (materialCost + screenSpaceCost) * samples; // 教学估算 ms/帧
const memoryMb = textureTexels * textureMb + screenPixels * (frameMb + shadowMb + screenSpaceMb);
const bandwidthMb = screenPixels * (textureAndFrame + screenSpace) * sampleFactor; // 教学估算 MB/帧Fallback 本身也是产品行为
报告记录输入和风险,让画质决定可以复测。
const bandwidthMb = screenPixels * (textureAndFrame + screenSpace) * sampleFactor; // 教学估算 MB/帧
risk = gpuMs > targetMs || memoryMb > deviceMemoryGb * 1024 ? "high" : "low";
reportId = stableHash({ effective, gpuMs, memoryMb, bandwidthMb });