const renderEngine = cc.renderer.renderEngine; const renderer = renderEngine.renderer; let ShaderMaterial = require('ShaderMaterial'); const shader = { name: 'Xray', params: [ { name: 'linecolor', type: renderer.PARAM_FLOAT3 }, { name: 'height', type: renderer.PARAM_FLOAT }, ], start(material,params) { material.cusparmas = {} material.cusparmas._start = 0; material.setParamValue('linecolor', cc.v3(params.r,params.g,params.b)); }, defines:[], vert:ShaderMaterial.spinevert, frag: `uniform sampler2D texture; varying vec2 uv0; uniform vec3 linecolor; uniform float height; void main() { if(gl_FragCoord.y>height){ gl_FragColor = texture2D(texture, uv0); return; } vec2 onePixel = vec2(0.001, 0.001); vec4 color = texture2D(texture, uv0); vec4 colorRight = texture2D(texture, uv0.xy + vec2(0,onePixel.t)); vec4 colorBottom = texture2D(texture, uv0.xy + vec2(onePixel.s,0)); color.r = sqrt( (color.r - colorRight.r) * (color.r - colorRight.r) + (color.r - colorBottom.r) * (color.r - colorBottom.r) ); color.g = sqrt( (color.g - colorRight.g) * (color.g - colorRight.g) + (color.g - colorBottom.g) * (color.g - colorBottom.g) ); color.b = sqrt( (color.b - colorRight.b) * (color.b - colorRight.b) + (color.b - colorBottom.b) * (color.b - colorBottom.b) ); if(color.r +color.g + color.b <0.2){ discard; } gl_FragColor = vec4(0.0,1.0,0.0, 1.0); }`, }; ShaderMaterial.addShader(shader);