pbrBlockAlphaFresnel.js 1.1 KB

1234567891011121314151617181920212223242526272829303132333435363738
  1. // Do not edit.
  2. import { ShaderStore } from "../../Engines/shaderStore.js";
  3. const name = "pbrBlockAlphaFresnel";
  4. const shader = `#ifdef ALPHAFRESNEL
  5. #if defined(ALPHATEST) || defined(ALPHABLEND)
  6. struct alphaFresnelOutParams
  7. {float alpha;};
  8. #define pbr_inline
  9. void alphaFresnelBlock(
  10. in vec3 normalW,
  11. in vec3 viewDirectionW,
  12. in float alpha,
  13. in float microSurface,
  14. out alphaFresnelOutParams outParams
  15. )
  16. {float opacityPerceptual=alpha;
  17. #ifdef LINEARALPHAFRESNEL
  18. float opacity0=opacityPerceptual;
  19. #else
  20. float opacity0=opacityPerceptual*opacityPerceptual;
  21. #endif
  22. float opacity90=fresnelGrazingReflectance(opacity0);vec3 normalForward=faceforward(normalW,-viewDirectionW,normalW);outParams.alpha=getReflectanceFromAnalyticalBRDFLookup_Jones(saturate(dot(viewDirectionW,normalForward)),vec3(opacity0),vec3(opacity90),sqrt(microSurface)).x;
  23. #ifdef ALPHATEST
  24. if (outParams.alpha<ALPHATESTVALUE)
  25. discard;
  26. #ifndef ALPHABLEND
  27. outParams.alpha=1.0;
  28. #endif
  29. #endif
  30. }
  31. #endif
  32. #endif
  33. `;
  34. // Sideeffect
  35. ShaderStore.IncludesShadersStore[name] = shader;
  36. /** @internal */
  37. export const pbrBlockAlphaFresnel = { name, shader };
  38. //# sourceMappingURL=pbrBlockAlphaFresnel.js.map