Advertisement
Guest User

Outline Shader (UPBGE)

a guest
Oct 7th, 2019
667
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. //icon=MATERIAL
  2. uniform sampler2D bgl_RenderedTexture;
  3. uniform vec2 bgl_TextureCoordinateOffset[9];
  4.  
  5. void main(void)
  6. {
  7.     vec4 samples[9];
  8.  
  9.     for (int i = 0; i < 9; i++)
  10.     {
  11.         samples[i] = texture2D(bgl_RenderedTexture,
  12.                               gl_TexCoord[0].st + bgl_TextureCoordinateOffset[i]);
  13.     }
  14.  
  15.     vec4 horizEdge = samples[2] + (2.0*samples[5]) + samples[8] -
  16.             (samples[0] + (2.0*samples[3]) + samples[6]);
  17.  
  18.     vec4 vertEdge = samples[0] + (2.0*samples[1]) + samples[2] -
  19.             (samples[6] + (2.0*samples[7]) + samples[8]);
  20.  
  21.     vec3 sobel = sqrt((horizEdge.rgb * horizEdge.rgb) +
  22.                             (vertEdge.rgb * vertEdge.rgb));
  23.    
  24.     vec3 outliner = vec3(1);
  25.     if (length(sobel) > 0.8){
  26.         outliner = vec3(0);
  27.     }
  28.    
  29.     gl_FragColor.xyz = texture2D(bgl_RenderedTexture, gl_TexCoord[0].st).xyz;
  30.    
  31.     gl_FragColor.xyz *= outliner;
  32.    
  33.     gl_FragColor.a = 1.0;
  34. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement