lights_phong_pars_fragment.glsl.js 1.3 KB

1234567891011121314151617181920212223242526272829303132
  1. export default /* glsl */`
  2. varying vec3 vViewPosition;
  3. struct BlinnPhongMaterial {
  4. vec3 diffuseColor;
  5. vec3 specularColor;
  6. float specularShininess;
  7. float specularStrength;
  8. };
  9. void RE_Direct_BlinnPhong( const in IncidentLight directLight, const in vec3 geometryPosition, const in vec3 geometryNormal, const in vec3 geometryViewDir, const in vec3 geometryClearcoatNormal, const in BlinnPhongMaterial material, inout ReflectedLight reflectedLight ) {
  10. float dotNL = saturate( dot( geometryNormal, directLight.direction ) );
  11. vec3 irradiance = dotNL * directLight.color;
  12. reflectedLight.directDiffuse += irradiance * BRDF_Lambert( material.diffuseColor );
  13. reflectedLight.directSpecular += irradiance * BRDF_BlinnPhong( directLight.direction, geometryViewDir, geometryNormal, material.specularColor, material.specularShininess ) * material.specularStrength;
  14. }
  15. void RE_IndirectDiffuse_BlinnPhong( const in vec3 irradiance, const in vec3 geometryPosition, const in vec3 geometryNormal, const in vec3 geometryViewDir, const in vec3 geometryClearcoatNormal, const in BlinnPhongMaterial material, inout ReflectedLight reflectedLight ) {
  16. reflectedLight.indirectDiffuse += irradiance * BRDF_Lambert( material.diffuseColor );
  17. }
  18. #define RE_Direct RE_Direct_BlinnPhong
  19. #define RE_IndirectDiffuse RE_IndirectDiffuse_BlinnPhong
  20. `;