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

好久不见. 提交于 2019-12-10 07:50:47

片源着色器 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);
标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!