AreaLightTest.AreaLightForm.AnalyticalBRDFIntegral_Order3 C# (CSharp) Метод

AnalyticalBRDFIntegral_Order3() приватный Метод

private AnalyticalBRDFIntegral_Order3 ( float _NdotV, float _roughness, float &_F0term, float &_ambientTerm ) : void
_NdotV float
_roughness float
_F0term float
_ambientTerm float
Результат void
		void	AnalyticalBRDFIntegral_Order3( float _NdotV, float _roughness, out float _F0term, out float _ambientTerm ) {
			float	x = _NdotV;
			float	y = _roughness;

			float	x2 = x*x;
			float	x3 = x2*x;
			float	y2 = y*y;
			float	y3 = y2*y;

// 			_F0term = Math.Min( 1.0f, 4.468499668510825f * x - 6.559058152749997f * x2 + 3.100924246015641f * x3
// 									+ 0.3060480025629177f * y - 3.9000236894490814f * x * y + 9.815053796171387f * x2 * y - 5.871672977702834f * x3 * y
// 									+ 1.524434529668645f * y2 - 6.411883095596227f * x * y2 + 1.8246250809966547f * x2 * y2 + 1.524434529668645f * x3 * y2
// 									- 1.179575011394126f * y3 + 5.788688558693789f * x * y3 - 5.3758421081258785f * x2 * y3 + 1.4190618001278472f * x3 * y3 );
// 			_ambientTerm = Math.Max( 0.0f, 1 - 4.204097008385143f * x + 5.7767751596221775f * x2 - 2.587651085262007f * x3
// 											- 1.0571539479331853f * y + 5.054812966013966f * x * y - 7.000129703739535f * x2 * y + 2.942312835851425f * x3 * y
// 											- 0.10991284572137273f * y2 - 0.8366676687929925f * x * y2 + 1.2399422035451517f * x2 * y2 - 0.10991284572137273f * x3 * y2
// 											+ 0.4450309398884565f * y3 - 1.296796034045326f * x * y3 + 1.9692132758430827f * x2 * y3 - 1.2457869679372504f * x3 * y3 );


			_F0term = Math.Min( 1.0f, 4.483120094766527f * x - 6.607418162702069f * x2 + 3.1369146126741314f * x3
									+ 0.31965568814498413f * y - 4.171560969733041f * x * y + 10.579256413997497f * x2 * y - 6.407181973132758f * x3 * y
									+ 1.4812238752410947f * y2 - 5.679180293057831f * x * y2 - 0.17354724317745246f * x2 * y2 + 2.9060079735435256f * x3 * y2
									- 1.1483095194551398f * y3 + 5.289774653050149f * x * y3 - 4.03337882134342f * x2 * y3 + 0.496313678299834f * x3 * y3 );
			_ambientTerm = Math.Max( 0.0f, 1 - 4.268373376557555f * x + 5.9893822170455895f * x2 -  2.745876982205202f * x3
											- 1.1169779635363377f * y + 6.2485832361009965f * x * y - 10.359824418695426f * x2 * y + 5.296592577623529f * x3 * y
											+ 0.08005589283505338f * y2 - 4.057878478465465f * x * y2 + 10.024587584890986f * x2 * y2 - 6.183779761950312f * x3 * y2
											+ 0.3075771997708405f * y3 + 0.8965992421669212f * x * y3 - 3.9327120832393003f * x2 * y3 + 2.8109277250321485f * x3 * y3 );
		}