normal_fragment_begin.glsl.js 878 B

12345678910111213141516171819202122232425262728293031323334353637383940
  1. export default /* glsl */`
  2. #ifdef FLAT_SHADED
  3. // Workaround for Adreno/Nexus5 not able able to do dFdx( vViewPosition ) ...
  4. vec3 fdx = vec3( dFdx( vViewPosition.x ), dFdx( vViewPosition.y ), dFdx( vViewPosition.z ) );
  5. vec3 fdy = vec3( dFdy( vViewPosition.x ), dFdy( vViewPosition.y ), dFdy( vViewPosition.z ) );
  6. vec3 normal = normalize( cross( fdx, fdy ) );
  7. #else
  8. vec3 normal = normalize( vNormal );
  9. #ifdef DOUBLE_SIDED
  10. normal = normal * ( float( gl_FrontFacing ) * 2.0 - 1.0 );
  11. #endif
  12. #ifdef USE_TANGENT
  13. vec3 tangent = normalize( vTangent );
  14. vec3 bitangent = normalize( vBitangent );
  15. #ifdef DOUBLE_SIDED
  16. tangent = tangent * ( float( gl_FrontFacing ) * 2.0 - 1.0 );
  17. bitangent = bitangent * ( float( gl_FrontFacing ) * 2.0 - 1.0 );
  18. #endif
  19. #endif
  20. #endif
  21. // non perturbed normal for clearcoat among others
  22. vec3 geometryNormal = normal;
  23. `;