
// Cg@0@̏ +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++( Jn )
#if LG@0@_USE

	#if LG@0@_DIR

		// Cg̕vZ
		lLightDir = cfLight[ @0@ ].Direction ;

	#else  // LG@0@_DIR

		// CgxNǧvZ
		lLightDir = normalize( PSInput.VPosition.xyz - cfLight[ @0@ ].Position.xyz ) ;

	#endif  // LG@0@_DIR
	

	
	// EX|bgCglvZ =======================================( Jn )
	#if LG@0@_SPOT || LG@0@_POINT

		// vZ ------------------

		// _ƃCgʒuƂ̋̓߂
		lLightTemp = PSInput.VPosition.xyz - cfLight[ @0@ ].Position.xyz ;
		lLightDistancePow2 = dot( lLightTemp, lLightTemp ) ;

		// ̌vZ lLightGen = 1 / ( l0 + l1 *  + l2 * (  *  ) )
		lLightGen = cfZeroHalfOneTwo.z / ( cfLight[ @0@ ].Range_FallOff_AT0_AT1.z + cfLight[ @0@ ].Range_FallOff_AT0_AT1.w * sqrt( lLightDistancePow2 ) + cfLight[ @0@ ].AT2_SpotP0_SpotP1.x * lLightDistancePow2 ) ;

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


		// X|bgCgvZ --------
		#if LG@0@_SPOT

			// CgxNgƃCgʒu璸_ʒuւ̃xNg̓(  Cos a )vZ 
			lLightDirectionCosA = dot( lLightDir, cfLight[ @0@ ].Direction ) ;

			// X|bgCgvZ  pow( falloff, ( ( Cos a - Cos f ) / ( Cos q - Cos f ) ) )
			lLightGen *= saturate( pow( abs( max( lLightDirectionCosA - cfLight[ @0@ ].AT2_SpotP0_SpotP1.y, 0.0f ) * cfLight[ @0@ ].AT2_SpotP0_SpotP1.z ), cfLight[ @0@ ].Range_FallOff_AT0_AT1.y ) ) ;

		#endif // LG@0@_SPOT
		// --------------------------------


		// LO猸őɂ鏈
		lLightGen *= step( lLightDistancePow2, cfLight[ @0@ ].Range_FallOff_AT0_AT1.x ) ;

	#else // LG@0@_SPOT || LG@0@_POINT
	
		lLightGen = 1.0f ;
		
	#endif // LG@0@_SPOT || LG@0@_POINT
	
	// EX|bgCglvZ =======================================( I )

	
	// eɂ錸Zo
	ShadowGen = max( ShadowRate.x, SHADOWMAP1_ENABLE_LGT@0@ ) *
	            max( ShadowRate.y, SHADOWMAP2_ENABLE_LGT@0@ ) *
	            max( ShadowRate.z, SHADOWMAP3_ENABLE_LGT@0@ ) ;


	// fBt[YFvZ

	// fBt[YpxvZ
	DiffuseAngleGen = saturate( dot( Normal, -lLightDir ) ) ;
	
	#if TOON
		#if TOON == 1
			// gD[̏ꍇ͂̎_ł͒_or}eÃfBt[YJ[͎gpȂ
			// fBt[YJ[~ϒl += ( Cg̃fBt[YJ[ * fBt[YJ[px + Cg̃ArGgJ[ƃ}eÃArGgJ[Z  ) * EX|bgCg̊px
			TempF4 = cfLight[ @0@ ].Diffuse * DiffuseAngleGen ;
			TotalLightDiffuse += TempF4 * lLightGen * ShadowGen ;
			TotalDiffuse += ( TempF4 + cfLight[ @0@ ].Ambient ) * lLightGen ;

		#else // TOON == 1
			// gD[Q̏ꍇ̓fBt[YJ[ƃCg̊px͕ʁXɕۑĂ
			// fBt[YJ[~ϒl += Cg̃fBt[YJ[
			// Cg̃ArGgJ[̒~ϒl += Cg̃ArGgJ[
			// Cg̊px̒~ϒl += Cg̊px
			TotalDiffuse += cfLight[ @0@ ].Diffuse ;

			TotalAmbient += cfLight[ @0@ ].Ambient.rgb ;
			TotalAngleGen += DiffuseAngleGen * ShadowGen * lLightGen ;

		#endif // TOON == 1
	#else // TOON
	
		// fBt[YJ[~ϒl += ( Cg̃fBt[YJ[ * fBt[YJ[ * fBt[YJ[px + Cg̃ArGgJ[ƃ}eÃArGgJ[Z  ) * EX|bgCg̊px
		TotalDiffuse += ( cfLight[ @0@ ].Diffuse * PSInput.Diffuse * DiffuseAngleGen * ShadowGen + cfLight[ @0@ ].Ambient ) * lLightGen ;

	#endif // TOON




	// XyLJ[vZ
	#ifdef USE_SPE

		// n[txNǧvZ
		TempF3 = normalize( V_to_Eye - lLightDir ) ;
		
		// Temp = pow( max( 0.0f, N * H ), cfMaterial.Power.x )
		Temp = pow( max( cfZeroHalfOneTwo.x, dot( Normal, TempF3 ) ), cfMaterial.Power.x ) ;

		// XyLJ[~ϒl += Temp * EX|bgCg̊px * Cg̃XyLJ[
		TotalSpecular += Temp * lLightGen * cfLight[ @0@ ].Specular * ShadowGen ;

	#endif // USE_SPE


#endif // LG@0@_USE
// Cg@0@̏ +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++( I )








