博客 · 第 5 页
关于工程、设计与一些随手记录。
不建模也能有体积:手工三角化一座浮岛
岛上的岩石不是从建模软件导出的,是五层不规则环带在运行时拼出来的。顶点色加平面着色,就足够让一块几何体看起来像被凿开的石头。
一千二百个实例:把花园压进几次绘制
草叶六百、花一百二、苔石八十五、灌木四十二 —— 花园的密度不靠减数量,靠 InstancedMesh 把同一种东西合并成一次绘制。
一个场景的光:三种灯与只算一次的阴影
半球光给环境色,主光给方向与阴影,轮廓光把岛从背景里拉出来;其余六个灯笼只是点光。阴影贴图只算一次,因为它照的东西一动不动。
两个着色器做水:水洼、溪流与瀑布
岛上没有水面模拟,也没有反射。两个 ShaderMaterial 分别负责平躺的水与竖直落下的水,共用一组 time 与 night 变量。
3D 的加载预算:分包、可见才加载、以及什么时候该停下
一个 3D 页面有三笔成本 —— 下载、首帧编译、每帧绘制。三笔都要单独设预算,任何一笔失控都会让「好看」变成「卡」。
sibling-index() 和 sibling-count():CSS 终于知道自己是第几个
Firefox 154 让这两个函数进入 Baseline。它们返回当前元素在兄弟中的序号和兄弟总数,于是错落动画、按序配色、均分尺寸都能在 CSS 里算完,不必再给每个元素挂一个内联样式或 CSS 变量。
