0
点赞
收藏
分享

微信扫一扫

基于three.js的shader入门教程 四


threejs交流群511163089

片源着色器 uniform

这种uniform变量啊 传入之后 可以在顶点着色器用 也可以在片源着色器用
uniform float a;这样 就是声明变量之前加一个uniform

这样在顶点或者片源着色器里面声明一下 外面再传入一个值 就可以使用了 

这东西有啥用?

较为简单的 这个栗子 我传入了uniform vec3 a是一个1 0 0 运行是一个红色的球

你试试setTimeout几秒后 修改uniform.a.value=new THREE.Vector3(1,0,1)看看

var uniform={
a:{value:new THREE.Vector3(1,0,0)}
}
var geometry = new THREE.SphereBufferGeometry(10);
var material=new THREE.ShaderMaterial({
uniforms:uniform,
vertexShader:`
void main()
{
gl_Position = projectionMatrix * modelViewMatrix * vec4(position, 1.0);
}`,
fragmentShader:`
uniform vec3 a;
void main()
{
gl_FragColor=vec4(a.r,a.g,a.b,1.0);
}
`,
})
var mesh=new THREE.Mesh(geometry,material);

 

举报

相关推荐

0 条评论