	#version 300 es
 
    in vec3 position;
    in vec2 uv;
	
    uniform mat4 viewProjection;
	uniform vec2 res;
	
    out vec2 textureCoord;
	out vec4 vOffset[ 3 ];
	
	void SMAAEdgeDetectionVS( vec2 texcoord ) {
		vOffset[ 0 ] = texcoord.xyxy + res.xyxy * vec4( -1.0, 0.0, 0.0,  1.0 ); // WebGL port note: Changed sign in W component
		vOffset[ 1 ] = texcoord.xyxy + res.xyxy * vec4(  1.0, 0.0, 0.0, -1.0 ); // WebGL port note: Changed sign in W component
		vOffset[ 2 ] = texcoord.xyxy + res.xyxy * vec4( -2.0, 0.0, 0.0,  2.0 ); // WebGL port note: Changed sign in W component
	}



    void main(void) {
        textureCoord = uv;
		SMAAEdgeDetectionVS( textureCoord );
		
		gl_Position = viewProjection * vec4(position, 1.0);
    }
	
	// #keplerEngine - Split
	
	#version 300 es
	
	precision highp float;
	
	#define SMAA_THRESHOLD 0.2
	
	
	uniform vec2 res;
	

	uniform sampler2D material_sampler;
	uniform sampler2D sceneSampler;
	
	in vec2 textureCoord;
	in vec4 vOffset[ 3 ];
	
	
	out vec4 fragmentColor;


	vec4 SMAAColorEdgeDetectionPS( vec2 texcoord, vec4 offset[3], sampler2D colorTex ) {
		vec2 threshold = vec2( SMAA_THRESHOLD, SMAA_THRESHOLD );

			// Calculate color deltas:
		vec4 delta;
		vec3 C = texture( colorTex, texcoord ).rgb;

		vec3 Cleft = texture( colorTex, offset[0].xy ).rgb;
		vec3 t = abs( C - Cleft );
		delta.x = max( max( t.r, t.g ), t.b );

		vec3 Ctop = texture( colorTex, offset[0].zw ).rgb;
		t = abs( C - Ctop );
		delta.y = max( max( t.r, t.g ), t.b );

			// We do the usual threshold:
		vec2 edges = step( threshold, delta.xy );

			// Then discard if there is no edge:
		if ( dot( edges, vec2( 1.0, 1.0 ) ) == 0.0 )
			discard;

			// Calculate right and bottom deltas:
		vec3 Cright = texture( colorTex, offset[1].xy ).rgb;
		t = abs( C - Cright );
		delta.z = max( max( t.r, t.g ), t.b );

		vec3 Cbottom  = texture( colorTex, offset[1].zw ).rgb;
		t = abs( C - Cbottom );
		delta.w = max( max( t.r, t.g ), t.b );

			// Calculate the maximum delta in the direct neighborhood:
		float maxDelta = max( max( max( delta.x, delta.y ), delta.z ), delta.w );

			// Calculate left-left and top-top deltas:
		vec3 Cleftleft  = texture( colorTex, offset[2].xy ).rgb;
		t = abs( C - Cleftleft );
		delta.z = max( max( t.r, t.g ), t.b );

		vec3 Ctoptop = texture( colorTex, offset[2].zw ).rgb;
		t = abs( C - Ctoptop );
		delta.w = max( max( t.r, t.g ), t.b );

			// Calculate the final maximum delta:
		maxDelta = max( max( maxDelta, delta.z ), delta.w );

			// Local contrast adaptation in action:
		edges.xy *= step( 0.5 * maxDelta, delta.xy );

		return vec4( edges, 0.0, 0.0 );
	}

	void main() {

		//vec4 sceneColor = vec4( texture( sceneSampler, textureCoord).xyz, 1.0 );
	
		vec4 abc = SMAAColorEdgeDetectionPS( textureCoord, vOffset, material_sampler );
		
		
		
		if(length(abc) > .6) {
			fragmentColor = vec4(221.0/256.0, 161.0/256.0, 87.0/256.0, 1.0);
		} else {
			fragmentColor = vec4( 0.0 );
		}

		
	}

	