@   Md            (              !  !          H     LSKS`  struct Varyings_S0 
{
	float3 tex;
	float3 normal;
	float4 position;
}
;
struct Attributes_S0 
{
	float4 position;
	float3 tex;
	float3 normal;
}
;
uniform float sk_FlipMeshY;
uniform float4x4 ucontrolMatrix_S0;
uniform float4 uviewportToScreen_S0;
in float4 position;
in float3 tex;
in float3 normal;
out float3 vtex_S0;
out float3 vnormal_S0;
out float4 vposition_S0;
Varyings_S0 custom_mesh_vs_S0(const Attributes_S0 attributes) 
{
	Varyings_S0 varyings;
	varyings.position = attributes.position * ucontrolMatrix_S0;
	varyings.position.xyz = varyings.position.xyz / varyings.position.w;
	varyings.position.w = 1.0;
	varyings.position.x = varyings.position.x * uviewportToScreen_S0.x + uviewportToScreen_S0.y;
	varyings.position.y = varyings.position.y * uviewportToScreen_S0.z + uviewportToScreen_S0.w;
	varyings.tex = attributes.tex;
	varyings.normal = attributes.normal;
	return varyings;
}
void main() 
{
	// Primitive Processor MeshGP
	Attributes_S0 attributes;
	attributes.position = position;
	attributes.tex = tex;
	attributes.normal = normal;
	Varyings_S0 varyings = custom_mesh_vs_S0(attributes);
	vtex_S0 = varyings.tex;
	vnormal_S0 = varyings.normal;
	vposition_S0 = varyings.position;
	float4 pos = float4(varyings.position.x, varyings.position.y * sk_FlipMeshY, varyings.position.z, varyings.position.w);
	float4 _tmp_1_pos = pos;
	sk_Position = _tmp_1_pos;
}
    
  struct Varyings_S2 
{
	float3 tex;
	float3 normal;
	float4 position;
}
;
uniform float4x4 uviewPortMatrix_S2;
uniform float4 uambientMaterial_S2;
uniform float4 udiffuseMaterial_S2;
uniform float4 uspecularMaterial_S2;
uniform float4 uambientLight_S2;
uniform float4 udiffuseLight_S2;
uniform float4 uspecularLight_S2;
uniform float3 udirectionLight_S2;
sampler2D uTextureSampler_0_S0;
sampler2D uTextureSampler_1_S0;
in float3 vtex_S0;
in float3 vnormal_S0;
in float4 vposition_S0;
half4 TextureEffect_S1(half4 _input, float2 _coords) 
{
	return sample(uTextureSampler_0_S0, _coords);
}
half4 TextureEffect_S2(half4 _input, float2 _coords) 
{
	return sample(uTextureSampler_1_S0, _coords);
}
float2 custom_mesh_fs_S2(const Varyings_S2 varyings, out float4 color) 
{
	float4 cr[2];
	cr[0] = float4(TextureEffect_S1(half4(0), varyings.tex.xy));
	cr[1] = float4(TextureEffect_S2(half4(0), varyings.tex.xy));
	cr[0].w = 1.0;
	cr[1].w = 1.0;
	float4 viewport_pos = float4(varyings.position.xyz / varyings.position.w, 1.0);
	viewport_pos = viewport_pos * uviewPortMatrix_S2;
	float3 eyePos = float3(0.0, 0.0, 0.8);
	float3 normal = normalize(varyings.normal);
	float4 ambient;
	float4 diffuse;
	float4 spec;
	ambient = (diffuse = (spec = float4(0.0)));
	float3 lightVec = -udirectionLight_S2;
	lightVec = normalize(lightVec);
	ambient = uambientMaterial_S2 * uambientLight_S2;
	float diffuseFactor = dot(lightVec, normal);
	float absDiffuseFactor = abs(diffuseFactor);
	if (diffuseFactor > 0.0) 
	{
		diffuseFactor = pow(diffuseFactor, 4.0);
		diffuse = (diffuseFactor * udiffuseMaterial_S2) * udiffuseLight_S2;
		float3 r = reflect(-lightVec, normal);
		float3 toEyeW = normalize(eyePos - viewport_pos.xyz);
		float specFactor = pow(max(dot(r, toEyeW), 0.0), uspecularMaterial_S2.w);
		spec = (specFactor * uspecularMaterial_S2) * uspecularLight_S2;
	}
	else 
	{
		float newAbsDiffuseFactor = pow(absDiffuseFactor, 2.5);
		float temp = min(64.0, 1.0 / (newAbsDiffuseFactor + 0.01));
		absDiffuseFactor = pow(absDiffuseFactor, temp);
		diffuse = (absDiffuseFactor * udiffuseMaterial_S2) * udiffuseLight_S2;
	}
	float4 lightColor1 = cr[0] * ((ambient + diffuse) + spec);
	float4 lightColor2 = cr[1] * ((ambient + diffuse) + spec);
	color = varyings.tex.z == 0.0 ? lightColor1 : lightColor2;
	return float2(0.0);
}
void main() 
{
	// Stage 0, MeshGP
	half4 outputColor_S0;
	const half4 outputCoverage_S0 = half4(1);
	Varyings_S2 varyings;
	varyings.tex = vtex_S0;
	varyings.normal = vnormal_S0;
	varyings.position = vposition_S0;
	float4 color;
	custom_mesh_fs_S2(varyings, color);
	outputColor_S0 = half4(color);
	{
		// Xfer Processor: Porter Duff
		sk_FragColor = outputColor_S0 * outputCoverage_S0;
	}
}
                                   position   tex    normal      