【Defold】Shader:Edgeを検出する

2020/04/04Defold, DEVELOP

スプライトのエッジを検出したい。

varying mediump vec2 var_texcoord0;
 
uniform lowp sampler2D texture_sampler;
uniform lowp vec4 tint;
 
void main()
{
	lowp vec4 tint_pm = vec4(tint.xyz * tint.w, tint.w);
	vec4 color = texture2D(texture_sampler, var_texcoord0.xy) * tint_pm;
 
    -- res: ShaderToyだとiResolutionにあたるもの。
	vec2 res = vec2(1.0, 1.0); 
	vec2 uv = var_texcoord0.xy / res.xy;
 
	lowp vec4 tint_pm = vec4(tint.xyz * tint.w, tint.w);
	vec4 color = texture2D(texture_sampler, uv) * tint_pm;
 
	float gray = length(color.rgb);
	gl_FragColor = vec4(vec3(step(0.06, length(vec2(dFdx(gray), dFdy(gray))))), 0.0);
}

そこそこ短いコードで検出できるので嬉しい。

スポンサーリンク

Posted by kazupon