默认值
Tuff 把折射定成默认材质,铺开不到一个礼拜,就为它付了账。
· 5 min read
Tuff 深色模式的底色是 #141414,不是纯黑。设计手册里给了三条理由:OLED 屏上纯黑意味着像素全关,高对比的东西一滚动,边缘会拖出紫黑色的尾巴;背景已经是纯黑,往下投的阴影就全部失效,卡片浮不起来;纯白压在纯黑上,对比度有 21 比 1,暗室里晃眼。
(这个博客的深色底倒是纯黑 #000。手册管的是 Tuff,管不到这里。)
那份手册 10 月 14 号有了第一版,中英双语;后面的 287 毫秒、autoDetect 默认关闭,还有 PingFang 那段补注,是 16 号和 17 号的两次修订才有的。所以我不太敢说里面每个数都是先定下来再去做的,大概有不少是做了一阵之后写下来的。
几个数
暗色模式里,三档强调字重各自调轻了 40:500 变 460,600 变 560,700 变 660。手册自己后面又补了一句实话:在没装 Inter 的 macOS 上,中文和英文都由 PingFang SC 来画,实测 460、560、660 画出来和 500、600、700 完全一样,默认字体栈下看不出这个微调。
悬停反馈,手册要求的是 0 毫秒,不许在
460 这样精确的数,生不生效,还要看一个没写进数里的东西,字体栈。
折射
Tuff 的默认材质叫 refraction,折射。手册的描述是:一条 SVG 位移贴图让红、绿、蓝三个通道各错开一点(这叫色散),上面叠背景模糊和饱和度,再描一圈 1 像素的折射边。
手册的材质表里,它的性能开销写的是最高,所以运动的时候会降级,恢复也是一层一层走的,走完要 287 毫秒。自动感知运动的开关叫 autoDetect,感知到运动结束以后,还要再安静满 140 毫秒才开始恢复,免得手在阈值附近抖一下,材质就来回切。
手册里还有一条门禁:想把默认的折射换成别的材质,必须经过用户手动明确确认,不能由 AI 或者开发的人自己顺手换。
铺开
十月中旬,一两天里,折射就铺开了。CoreBox 自己的底板(那是一扇透明窗口,模糊交给系统,玻璃层不画)、模态框、抽屉、命令面板和几种对话框,一个个换到折射面上。Nexus 站点那条提交的说明里数了数:显式写 mask 的有 121 处,glass 34 处,pure 4 处,光后台统计页就有 50 张卡片,全部改回了默认;留下的只有专门讲材质的演示页。应用本体那一条的说法也一样,之前写 blur、mask、pure 的,除非有人确认过,都回到默认。
账
十月二十一号,一条性能修复把账写了出来。提交说明里说:TxCard 从 0.9.0 起默认就是折射,每块折射表面都画一层 SVG 玻璃,位移贴图是整块大小的 SVG,Chromium 每一帧都要在 CPU 上栅格化一遍。一块 1526×1886 的面板,每帧花 100 到 200 毫秒;某个控制台页面滚起来,大约只有 5 帧。
修法主要有两处。位移贴图改成长边最多 256 像素的位图,再拉伸,据提交说明,位移的误差不超过一个量化步长;refractionRenderer 的默认值改成 css,也就是不画玻璃层,要的话自己选 svg,不透明度默认 0.3。
名字没动,还叫折射,默认里最贵的那一层变成了要自己打开。从 10 月 11 号那条写下折射规则的提交,到这笔账,差不多十天;从铺开算,不到一个礼拜。
还有个小细节。autoDetect 在手册里是默认关闭的:最贵的材质是默认,能在掉帧、省电的时候把它降下来的开关,默认是关着的。开着它能不能救下那 5 帧,我判断不了,提交说明里也没提,它只怪了位图太大。
提交说明的清单里还有一条小注:玻璃层开着的时候,TxCard 仍然用普通圆角,用 corner-shape 的话,某些嵌套里 Chromium 会把滤镜丢掉,钱却还是每帧照付。
Copyright
© 2021-present TalexDS. All rights reserved.
Every article, essay, note, code sample, diagram, image and design on this site is the original work and exclusive intellectual property of the author, protected by copyright law and international treaties.
No reproduction. Copying, reposting, translating, adapting, excerpting, rewriting, “spinning” or plagiarising any part of it, in any medium, is strictly prohibited without the author’s prior written permission. Commercial use of any kind is forbidden.
No AI. No crawling. Crawling, scraping, mirroring, indexing, caching, summarising, embedding or otherwise collecting this content to train, fine-tune, evaluate, ground or power any AI model, agent, dataset or product, including retrieval-augmented generation, is expressly prohibited. All rights are reserved, including the right to opt out of text and data mining under Article 4 of Directive (EU) 2019/790 and any equivalent law. AI crawlers and agents must not access or process this page.
Violations will be pursued. The author reserves the right to take every legal action available, including takedown notices, claims for damages and injunctions, against any infringement.
版权声明:本站全部文章、笔记、代码示例、图片与设计均为作者原创,受《中华人民共和国著作权法》及国际公约保护。未经作者书面许可,严禁任何形式的转载、搬运、改写、洗稿与抄袭,严禁商业使用。严禁 AI 爬取:禁止以训练、微调、评测、检索增强或任何其他目的,抓取、镜像、索引、缓存、摘要或向量化本站内容。一经发现,将依法追究法律责任。
Distributed on an “AS IS” basis without warranties.