基于正弦波扩散效果的ShaderMaterial

const vertexShader = `  
	varying vec2 vertexUV;
	
	void main() { 
		vertexUV = uv;
		gl_Position = projectionMatrix * modelViewMatrix * vec4( position, 1.0 );
  	}`;

const fragmentShader = `
	uniform vec3 uColor;
	uniform float uTime;
	varying vec2 vertexUV;
	
	void main() {
		//len的范围在(0,0.5)之间,表示了当前位置距离中心点的长度,跟mesh的大小无关
		float len = distance(vec2(0.5, 0.5), vec2(vertexUV.x, vertexUV.y));

		gl_FragColor = vec4(uColor , 
			(1.0 - len * 2.0) *		//由深到浅的主色调
			(sin(len * 2.0 * 3.14159 * 8.0 - uTime) + 1.0) / 2.0	//正弦波的变化色调 
		);
	}`;

		const config = {
			width: 5.0,
			color: 0x99ccff,
		};

		let uniforms = {
		    uColor: { value: new THREE.Color(config.color) },
		    uWidth: { value: config.width},
		    uTime: { value: 0.0}
		};
		this.uniforms = uniforms;

		let g = new THREE.CircleGeometry(config.width,64,64);
		let m = new THREE.ShaderMaterial({
			uniforms: uniforms,
			vertexShader: vertexShader,
			fragmentShader: fragmentShader,
			side: THREE.DoubleSide,
			transparent:true		//很重要
		});

基于正弦波的扩散效果

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值