threepipe
Version:
A 3D viewer framework built on top of three.js in TypeScript with a focus on quality rendering, modularity and extensibility.
30 lines • 1.33 kB
JavaScript
import { UniformsUtils } from 'three';
import { CopyShader } from 'three/examples/jsm/shaders/CopyShader.js';
import { getOrCall, glsl } from 'ts-browser-helpers';
import { ExtendedShaderPass } from './ExtendedShaderPass';
export class ExtendedCopyPass extends ExtendedShaderPass {
constructor(snippet, respectColorSpace = true) {
super({
uniforms: UniformsUtils.clone(CopyShader.uniforms),
vertexShader: CopyShader.vertexShader,
fragmentShader: glsl `
uniform float opacity;
#include <alphatest_pars_fragment>
varying vec2 vUv;
void main() {
${respectColorSpace ?
'vec4 diffuseColor = tDiffuseTexelToLinear(texture2D(tDiffuse, vUv)) * opacity;' :
'vec4 diffuseColor = texture2D(tDiffuse, vUv) * opacity;'}
#include <alphatest_fragment>
${snippet ? getOrCall(snippet, 'diffuseColor') : ''}
#ifdef OPAQUE
diffuseColor.a = 1.0;
#endif
gl_FragColor = diffuseColor;
${respectColorSpace ? '#include <encodings_fragment>' : ''}
}
`,
}, 'tDiffuse');
}
}
//# sourceMappingURL=ExtendedCopyPass.js.map