BlendShader.js 920 B

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556
  1. /**
  2. * @module BlendShader
  3. * @three_import import { BlendShader } from 'three/addons/shaders/BlendShader.js';
  4. */
  5. /**
  6. * Blends two textures.
  7. *
  8. * @constant
  9. * @type {ShaderMaterial~Shader}
  10. */
  11. const BlendShader = {
  12. name: 'BlendShader',
  13. uniforms: {
  14. 'tDiffuse1': { value: null },
  15. 'tDiffuse2': { value: null },
  16. 'mixRatio': { value: 0.5 },
  17. 'opacity': { value: 1.0 }
  18. },
  19. vertexShader: /* glsl */`
  20. varying vec2 vUv;
  21. void main() {
  22. vUv = uv;
  23. gl_Position = projectionMatrix * modelViewMatrix * vec4( position, 1.0 );
  24. }`,
  25. fragmentShader: /* glsl */`
  26. uniform float opacity;
  27. uniform float mixRatio;
  28. uniform sampler2D tDiffuse1;
  29. uniform sampler2D tDiffuse2;
  30. varying vec2 vUv;
  31. void main() {
  32. vec4 texel1 = texture2D( tDiffuse1, vUv );
  33. vec4 texel2 = texture2D( tDiffuse2, vUv );
  34. gl_FragColor = opacity * mix( texel1, texel2, mixRatio );
  35. }`
  36. };
  37. export { BlendShader };