61 lines
1.7 KiB
JavaScript
61 lines
1.7 KiB
JavaScript
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); |