transmission_fragment.glsl.js 790 B

123456789101112131415161718192021222324252627282930
  1. export default /* glsl */`
  2. #ifdef USE_TRANSMISSION
  3. float transmissionFactor = transmission;
  4. float thicknessFactor = thickness;
  5. #ifdef USE_TRANSMISSIONMAP
  6. transmissionFactor *= texture2D( transmissionMap, vUv ).r;
  7. #endif
  8. #ifdef USE_THICKNESSMAP
  9. thicknessFactor *= texture2D( thicknessMap, vUv ).g;
  10. #endif
  11. vec3 pos = vWorldPosition;
  12. vec3 v = normalize( cameraPosition - pos );
  13. vec3 n = inverseTransformDirection( normal, viewMatrix );
  14. vec3 transmission = getIBLVolumeRefraction(
  15. n, v, roughnessFactor, material.diffuseColor, material.specularColor, material.specularF90,
  16. pos, modelMatrix, viewMatrix, projectionMatrix, ior, thicknessFactor,
  17. attenuationTint, attenuationDistance );
  18. totalDiffuse = mix( totalDiffuse, transmission, transmissionFactor );
  19. #endif
  20. `;