//------------------------------------------------------------
//

//------------------------------------------------------------
uniform sampler2D mmv_tex0;

//------------------------------------------------------------
varying vec3 VERTEX_NORMAL;	// 法線ベクトル
varying vec3 VERTEX_LIGHT;	// ライトベクトル
varying vec3 VERTEX_EYE;	// 視線ベクトル

// ------------------------------------------------------------
// フラグメントシェーダプログラム
// ------------------------------------------------------------
void main( void )
{
	vec3	N	= normalize(VERTEX_NORMAL);	// 法線ベクトル
	vec3	L	= normalize(VERTEX_LIGHT);	// ライトベクトル
	vec3	E	= normalize(VERTEX_EYE);	// 視線ベクトル
	vec3	R	= reflect( L, N );			// 反射ベクトル
	
	//色
	vec3	color	= texture2D( mmv_tex0, gl_TexCoord[ 0 ].st ).rgb;	//マテリアル色
	float	a		= texture2D( mmv_tex0, gl_TexCoord[ 0 ].st ).a;		//不透明度

	//a
//	a	= a * ( 1.0 - pow( min( dot( N, -E ), 0.99 ), 5.0 ) / 2.0 );
	
	//スペキュラ
	float	powr	= gl_FrontMaterial.shininess;	//反射の強さ
	float	s_dif	= gl_FrontMaterial.specular.r;	//反射光(rgb同じ)
	
    float	spec	= pow( max( dot( R, E ), 0.0 ), powr ) * s_dif;
	
	
	
	
	gl_FragColor	= vec4( color + vec3( spec ), a );	//出力
	
	//アウトライン
	if( dot( E, N ) > -0.15 ){
		gl_FragColor	= vec4( gl_FragColor.rgb * 0.3, a );
	}
}
