threepipe
Você não pode selecionar mais de 25 tópicos Os tópicos devem começar com uma letra ou um número, podem incluir traços ('-') e podem ter até 35 caracteres.

AddBlendTexturePass.ts 1.2KB

1234567891011121314151617181920212223242526272829303132
  1. import {Texture, Vector4} from 'three'
  2. import {CopyShader} from 'three/examples/jsm/shaders/CopyShader.js'
  3. import {ExtendedShaderPass} from './ExtendedShaderPass'
  4. import {IPass} from './Pass'
  5. import {glsl} from 'ts-browser-helpers'
  6. export class AddBlendTexturePass extends ExtendedShaderPass implements IPass {
  7. constructor(texture?: Texture) {
  8. super({
  9. vertexShader: CopyShader.vertexShader,
  10. fragmentShader: glsl`
  11. uniform vec4 weight;
  12. uniform vec4 weight2;
  13. varying vec2 vUv;
  14. void main() {
  15. vec4 texel = clamp(weight * tDiffuseTexelToLinear ( texture2D( tDiffuse, vUv ) ) + weight2 * tDiffuse2TexelToLinear ( texture2D( tDiffuse2, vUv ) ), vec4(0), vec4(8));
  16. gl_FragColor = texel;
  17. #include <encodings_fragment>
  18. }
  19. `,
  20. uniforms: {
  21. 'tDiffuse': {value: null},
  22. 'tDiffuse2': {value: texture},
  23. 'weight': {value: new Vector4(1, 1, 1, 1)},
  24. 'weight2': {value: new Vector4(1, 1, 1, 1)},
  25. },
  26. }, 'tDiffuse', 'tDiffuse2')
  27. this.clear = false
  28. this.needsSwap = true
  29. }
  30. }