pbrBlockAnisotropic.js 1.7 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243
  1. // Do not edit.
  2. import { ShaderStore } from "../../Engines/shaderStore.js";
  3. const name = "pbrBlockAnisotropic";
  4. const shader = `#ifdef ANISOTROPIC
  5. struct anisotropicOutParams
  6. {float anisotropy;vec3 anisotropicTangent;vec3 anisotropicBitangent;vec3 anisotropicNormal;
  7. #if DEBUGMODE>0 && defined(ANISOTROPIC_TEXTURE)
  8. vec3 anisotropyMapData;
  9. #endif
  10. };
  11. #define pbr_inline
  12. void anisotropicBlock(
  13. in vec3 vAnisotropy,
  14. in float roughness,
  15. #ifdef ANISOTROPIC_TEXTURE
  16. in vec3 anisotropyMapData,
  17. #endif
  18. in mat3 TBN,
  19. in vec3 normalW,
  20. in vec3 viewDirectionW,
  21. out anisotropicOutParams outParams
  22. )
  23. {float anisotropy=vAnisotropy.b;vec3 anisotropyDirection=vec3(vAnisotropy.xy,0.);
  24. #ifdef ANISOTROPIC_TEXTURE
  25. anisotropy*=anisotropyMapData.b;
  26. #if DEBUGMODE>0
  27. outParams.anisotropyMapData=anisotropyMapData;
  28. #endif
  29. anisotropyMapData.rg=anisotropyMapData.rg*2.0-1.0;
  30. #ifdef ANISOTROPIC_LEGACY
  31. anisotropyDirection.rg*=anisotropyMapData.rg;
  32. #else
  33. anisotropyDirection.xy=mat2(anisotropyDirection.x,anisotropyDirection.y,-anisotropyDirection.y,anisotropyDirection.x)*normalize(anisotropyMapData.rg);
  34. #endif
  35. #endif
  36. mat3 anisoTBN=mat3(normalize(TBN[0]),normalize(TBN[1]),normalize(TBN[2]));vec3 anisotropicTangent=normalize(anisoTBN*anisotropyDirection);vec3 anisotropicBitangent=normalize(cross(anisoTBN[2],anisotropicTangent));outParams.anisotropy=anisotropy;outParams.anisotropicTangent=anisotropicTangent;outParams.anisotropicBitangent=anisotropicBitangent;outParams.anisotropicNormal=getAnisotropicBentNormals(anisotropicTangent,anisotropicBitangent,normalW,viewDirectionW,anisotropy,roughness);}
  37. #endif
  38. `;
  39. // Sideeffect
  40. ShaderStore.IncludesShadersStore[name] = shader;
  41. /** @internal */
  42. export const pbrBlockAnisotropic = { name, shader };
  43. //# sourceMappingURL=pbrBlockAnisotropic.js.map