zhuguoqing c21cd97580 udpate
2022-05-26 14:48:21 +08:00

59 lines
1.6 KiB
JavaScript

const renderEngine = cc.renderer.renderEngine;
const renderer = renderEngine.renderer;
let ShaderMaterial = require('ShaderMaterial');
const shader = {
name: 'niuqu',
params: [
{ name: 'u_displacement', type: renderer.PARAM_TEXTURE_2D },
{ name: 'u_magnitude', type: renderer.PARAM_FLOAT },//0-0.1
{ name: 'u_strength', type: renderer.PARAM_FLOAT2 },//0-1
{ name: 'time', type: renderer.PARAM_FLOAT },//0-1
],
start(material, params) {
material.cusparmas = {}
material.cusparmas._start = 0;
material.setParamValue('u_magnitude', params.u_magnitude);
material.setParamValue('u_strength', params.u_strength);
material.setParamValue('u_displacement', params.u_displacement._texture);
material.setParamValue('time', 0);
},
update(material, dt) {
material.cusparmas._start+=dt
material.setParamValue('time', material.cusparmas._start);
},
defines: [],
frag: `
uniform sampler2D texture;
uniform vec4 color;
varying vec2 uv0;
varying vec2 uv1;
varying vec2 uv2;
varying vec2 uv3;
uniform float time;
uniform sampler2D u_displacement;
uniform float u_magnitude;
uniform vec2 u_strength;
void main() {
vec2 disp = texture2D(u_displacement, uv0 + u_strength * time).xy;
disp = ((disp * 2.0) - 1.0) * u_magnitude;
gl_FragColor = texture2D(texture, uv0 + disp)*vec4(0.9,0.9,1.0,0.5);
}`,
};
ShaderMaterial.addShader(shader);