 		"
 
 		fs_code = "
+			uniform vec4 u_color;
 			SAMPLER2D(u_albedo, 0);
-			uniform vec3 u_color;
-
-			void main()
-			{
-				gl_FragColor = texture2D(u_albedo, v_texcoord0) * vec4(u_color, 1.0);
+
+			void main()
+			{
+				vec4 color = texture2D(u_albedo, v_texcoord0);
+				if (color.a <= 0.0)
+					discard;
+
+				gl_FragColor = color * u_color;
 			}
 		"
 	}

		"
			vec3 v_normal    : NORMAL    = vec3(0.0, 0.0, 0.0);
			vec4 v_view      : TEXCOORD0 = vec4(0.0, 0.0, 0.0, 0.0);
			vec2 v_uv0       : TEXCOORD1 = vec2(0.0, 0.0);

			vec3 a_position  : POSITION;
			vec3 a_normal    : NORMAL;

		vs_input_output =
		"
			$input a_position, a_normal, a_texcoord0
			$output v_normal, v_view, v_texcoord0
		"

		vs_code =
