|  | @@ -48,14 +48,14 @@ struct Brdf {
 | 
	
		
			
				|  |  |    Brdf() {}
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |    template <typename T>
 | 
	
		
			
				|  |  | -  bool operator()(const T* const material,
 | 
	
		
			
				|  |  | -                  const T* const c_ptr,
 | 
	
		
			
				|  |  | -                  const T* const n_ptr,
 | 
	
		
			
				|  |  | -                  const T* const v_ptr,
 | 
	
		
			
				|  |  | -                  const T* const l_ptr,
 | 
	
		
			
				|  |  | -                  const T* const x_ptr,
 | 
	
		
			
				|  |  | -                  const T* const y_ptr,
 | 
	
		
			
				|  |  | -                  T* residual) const {
 | 
	
		
			
				|  |  | +  inline bool operator()(const T* const material,
 | 
	
		
			
				|  |  | +                         const T* const c_ptr,
 | 
	
		
			
				|  |  | +                         const T* const n_ptr,
 | 
	
		
			
				|  |  | +                         const T* const v_ptr,
 | 
	
		
			
				|  |  | +                         const T* const l_ptr,
 | 
	
		
			
				|  |  | +                         const T* const x_ptr,
 | 
	
		
			
				|  |  | +                         const T* const y_ptr,
 | 
	
		
			
				|  |  | +                         T* residual) const {
 | 
	
		
			
				|  |  |      using Vec3 = Eigen::Matrix<T, 3, 1>;
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |      T metallic = material[0];
 | 
	
	
		
			
				|  | @@ -154,19 +154,19 @@ struct Brdf {
 | 
	
		
			
				|  |  |    }
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |    template <typename T>
 | 
	
		
			
				|  |  | -  T SchlickFresnel(const T& u) const {
 | 
	
		
			
				|  |  | +  inline T SchlickFresnel(const T& u) const {
 | 
	
		
			
				|  |  |      T m = T(1) - u;
 | 
	
		
			
				|  |  |      const T m2 = m * m;
 | 
	
		
			
				|  |  |      return m2 * m2 * m;  // (1-u)^5
 | 
	
		
			
				|  |  |    }
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |    template <typename T>
 | 
	
		
			
				|  |  | -  T Aspect(const T& anisotropic) const {
 | 
	
		
			
				|  |  | +  inline T Aspect(const T& anisotropic) const {
 | 
	
		
			
				|  |  |      return T(sqrt(T(1) - anisotropic * T(0.9)));
 | 
	
		
			
				|  |  |    }
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |    template <typename T>
 | 
	
		
			
				|  |  | -  T SmithG_GGX(const T& n_dot_v, const T& alpha_g) const {
 | 
	
		
			
				|  |  | +  inline T SmithG_GGX(const T& n_dot_v, const T& alpha_g) const {
 | 
	
		
			
				|  |  |      const T a = alpha_g * alpha_g;
 | 
	
		
			
				|  |  |      const T b = n_dot_v * n_dot_v;
 | 
	
		
			
				|  |  |      return T(1) / (n_dot_v + T(sqrt(a + b - a * b)));
 | 
	
	
		
			
				|  | @@ -175,7 +175,7 @@ struct Brdf {
 | 
	
		
			
				|  |  |    // Generalized-Trowbridge-Reitz (GTR) Microfacet Distribution
 | 
	
		
			
				|  |  |    // See paper, Appendix B
 | 
	
		
			
				|  |  |    template <typename T>
 | 
	
		
			
				|  |  | -  T GTR1(const T& n_dot_h, const T& a) const {
 | 
	
		
			
				|  |  | +  inline T GTR1(const T& n_dot_h, const T& a) const {
 | 
	
		
			
				|  |  |      T result = T(0);
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |      if (a >= T(1)) {
 | 
	
	
		
			
				|  | @@ -189,7 +189,7 @@ struct Brdf {
 | 
	
		
			
				|  |  |    }
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |    template <typename T>
 | 
	
		
			
				|  |  | -  T GTR2Aniso(const T& n_dot_h,
 | 
	
		
			
				|  |  | +  inline T GTR2Aniso(const T& n_dot_h,
 | 
	
		
			
				|  |  |                const T& h_dot_x,
 | 
	
		
			
				|  |  |                const T& h_dot_y,
 | 
	
		
			
				|  |  |                const T& ax,
 | 
	
	
		
			
				|  | @@ -205,9 +205,10 @@ struct Brdf {
 | 
	
		
			
				|  |  |    }
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |    template <typename Derived1, typename Derived2>
 | 
	
		
			
				|  |  | -  typename Derived1::PlainObject Lerp(const Eigen::MatrixBase<Derived1>& a,
 | 
	
		
			
				|  |  | -                                      const Eigen::MatrixBase<Derived2>& b,
 | 
	
		
			
				|  |  | -                                      typename Derived1::Scalar alpha) const {
 | 
	
		
			
				|  |  | +  inline typename Derived1::PlainObject
 | 
	
		
			
				|  |  | +  Lerp(const Eigen::MatrixBase<Derived1>& a,
 | 
	
		
			
				|  |  | +       const Eigen::MatrixBase<Derived2>& b,
 | 
	
		
			
				|  |  | +       typename Derived1::Scalar alpha) const {
 | 
	
		
			
				|  |  |      return (typename Derived1::Scalar(1) - alpha) * a + alpha * b;
 | 
	
		
			
				|  |  |    }
 | 
	
		
			
				|  |  |  
 |