Lobsters | 原文链接 | 2026-09-17 收录

浮点的小数部分如何修好了一个着色器

来源: crocidb.com — 2026-09-13

概述

作者写了一个 Voronoi 噪声背景着色器,在一台电脑上出现了莫名的动画卡顿。逐层剥离 UV 扭曲、调色板循环等效果之后,问题被锁定在生成 Voronoi 中心的那段代码。最终把 fract(x) 换成数学等价的 x - floor(x) 就解决了:原因指向 NVIDIA 595.79 驱动(RTX 4070)在特定上下文中对 GLSL fract() 的误编译——在量级约 100 到 1000 的运算数上,返回的小数部分在时间上不连续,会平滑移动然后突然跳变。

核心要点

金句

根因:NVIDIA 驱动 595.79 在这个着色器的上下文中误编译了 GLSL 的 fract()。
返回 Lobsters 首页