性能建议
不绕弯。卡、掉帧、风扇狂转?从这里排,都是立刻见效的小招。
节点别老造,做一次够用
别在每次渲染/每帧都新建节点。用 useMemo 等做一次,然后一直用。
上面代码用到 color、 sin、 time、 positionLocal 这些 TSL 节点。
不变的放模块顶层,大家共用
永远不变的常量放到模块顶层,这样多个组件共用一份实例。
有变化再渲染,再顺手限个 DPR
R3F 用 frameloop="demand";再设 dpr={[1,2]},高分屏也不至于白耗性能。
原生 Three:renderer.setAnimationLoop(null) 暂停,需要时再开。
用 uniform 改值,别重建节点图
要变的参数(time、UI 滑块)用 uniform 改;每帧重建材质/节点图太浪费。
用完就收:及时清理
组件卸载或替换资源就 dispose;不需要渲染就把循环停掉,别让 GPU 内存一直涨。
怎么快速找瓶颈
优先怀疑:渲染太多、创建节点太频、DPR 太高。用 DevTools + console.time 看帧耗时。