threejs 节点材质系统 绑定attribute

新的 节点材质系统 绑定属性及使用 非常方便 不必重复声明

以instances为例

js 复制代码
import {instancedBufferAttribute,instancedDynamicBufferAttribute,} from "three/tsl";

声明一个 InstancedBufferAttribute 使用 instancedBufferAttribute包装后就可以在shader中直接使用

js 复制代码
const instanceCount = 10
// 透明度
const floatOpacity = new Float32Array(instanceCount);

const buffer = new THREE.InstancedBufferAttribute(floatOpacity, 1);
// instancedDynamicBufferAttribute 每次写入buffer
// instancedBufferAttribute 手动更新 buffer.needUpdate = true
instanceMesh.instanceOpacity = instancedBufferAttribute(buffer);

使用

顶点着色器 声明 varying

js 复制代码
varyingProperty( 'float', 'vInstanceOpacity' ).assign( instanceMesh.instanceOpacity );

片元着色器 使用 varying

js 复制代码
const vInstanceOpacity = varyingProperty( 'float', 'vInstanceOpacity' ); 
diffuseColor.a.assign( diffuseColor.a.mul( opacityNode ).mul(vInstanceOpacity) );
相关推荐
小白菜学前端10 小时前
Threejs 材质贴图、光照和投影详解
前端·3d·three.js
破浪前行·吴2 天前
使用@react-three/fiber,@mkkellogg/gaussian-splats-3d加载.splat,.ply,.ksplat文件
前端·react.js·three.js
格瑞@_@9 天前
11.Three.js使用indexeddb前端缓存模型优化前端加载效率
前端·javascript·缓存·three.js·indexeddb缓存
谢小飞9 天前
我做了三把椅子原来纹理这样加载切换
前端·three.js
小白菜学前端9 天前
ThreeJS创建一个3D物体的基本流程
3d·three.js
茶老翁10 天前
1-初识Three.js
前端·three.js
莫石12 天前
搓绳子(直)
前端·数学·three.js
小白菜学前端12 天前
3d 添加辅助坐标器和轨道控制器
3d·three.js
孙_华鹏14 天前
threejs——实战中材质的应用
前端·three.js·数据可视化
天涯学馆17 天前
Three.js灯光阴影与动画交互
前端·unity3d·three.js