UNPKG

threepipe

Version:

A 3D viewer framework built on top of three.js in TypeScript with a focus on quality rendering, modularity and extensibility.

38 lines (35 loc) 1.43 kB
import {IUniform} from 'three/src/renderers/shaders/UniformsLib' import {Texture} from 'three' import {CopyShader} from 'three/examples/jsm/shaders/CopyShader.js' import {ExtendedShaderPass} from './ExtendedShaderPass' import {IPass} from './Pass' export class GenericBlendTexturePass extends ExtendedShaderPass implements IPass { constructor(uniforms: {[uniform: string]: IUniform}, blendFunc = 'c = a + b;', extraFrag = '', texture?: Texture, maxIntensity = 120) { super({ vertexShader: CopyShader.vertexShader, fragmentShader: ` varying vec2 vUv; ${extraFrag} void main() { vec4 a = tDiffuseTexelToLinear ( texture2D( tDiffuse, vUv ) ); vec4 b = tDiffuse2TexelToLinear ( texture2D( tDiffuse2, vUv ) ); vec4 c = vec4(0); ${blendFunc} c = clamp(c, vec4(0), vec4(MAX_INTENSITY)); gl_FragColor = c; #include <encodings_fragment> } `, uniforms: { 'tDiffuse': {value: null}, 'tDiffuse2': {value: texture}, ...uniforms, }, defines: { ['MAX_INTENSITY']: maxIntensity, }, }, 'tDiffuse', 'tDiffuse2') this.clear = false this.needsSwap = true } }