lights_phong_pars_fragment.glsl 1.4 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253
  1. varying vec3 vViewPosition;
  2. #ifndef FLAT_SHADED
  3. varying vec3 vNormal;
  4. #endif
  5. struct BlinnPhongMaterial {
  6. vec3 diffuseColor;
  7. vec3 specularColor;
  8. float specularShininess;
  9. float specularStrength;
  10. };
  11. void RE_Direct_BlinnPhong( const in IncidentLight directLight, const in GeometricContext geometry, const in BlinnPhongMaterial material, inout ReflectedLight reflectedLight ) {
  12. #ifdef TOON
  13. vec3 irradiance = getGradientIrradiance( geometry.normal, directLight.direction ) * directLight.color;
  14. #else
  15. float dotNL = saturate( dot( geometry.normal, directLight.direction ) );
  16. vec3 irradiance = dotNL * directLight.color;
  17. #endif
  18. #ifndef PHYSICALLY_CORRECT_LIGHTS
  19. irradiance *= PI; // punctual light
  20. #endif
  21. reflectedLight.directDiffuse += irradiance * BRDF_Diffuse_Lambert( material.diffuseColor );
  22. reflectedLight.directSpecular += irradiance * BRDF_Specular_BlinnPhong( directLight, geometry, material.specularColor, material.specularShininess ) * material.specularStrength;
  23. }
  24. void RE_IndirectDiffuse_BlinnPhong( const in vec3 irradiance, const in GeometricContext geometry, const in BlinnPhongMaterial material, inout ReflectedLight reflectedLight ) {
  25. reflectedLight.indirectDiffuse += irradiance * BRDF_Diffuse_Lambert( material.diffuseColor );
  26. }
  27. #define RE_Direct RE_Direct_BlinnPhong
  28. #define RE_IndirectDiffuse RE_IndirectDiffuse_BlinnPhong
  29. #define Material_LightProbeLOD( material ) (0)