mylingo3d
Version:
Lingo3D is a React/Vue 3d game development framework that ships with a complete visual editor
44 lines • 1.69 kB
JavaScript
import { createEffect } from "@lincode/reactivity";
import { ShaderMaterial } from "three";
import { ShaderPass } from "three/examples/jsm/postprocessing/ShaderPass";
import { getSelectiveBloomComposer } from "../../../../states/useSelectiveBloomComposer";
import bloomPass from "../bloomPass";
import renderPass from "../renderPass";
createEffect(() => {
const selectiveBloomComposer = getSelectiveBloomComposer();
if (!selectiveBloomComposer)
return;
selectiveBloomComposer.addPass(renderPass);
selectiveBloomComposer.addPass(bloomPass);
return () => {
selectiveBloomComposer.removePass(renderPass);
selectiveBloomComposer.removePass(bloomPass);
};
}, [getSelectiveBloomComposer]);
const selectiveBloomPass = new ShaderPass(new ShaderMaterial({
uniforms: {
baseTexture: { value: null },
bloomTexture: { value: null }
},
vertexShader: `
varying vec2 vUv;
void main() {
vUv = uv;
gl_Position = projectionMatrix * modelViewMatrix * vec4(position, 1.0);
}
`,
fragmentShader: `
uniform sampler2D baseTexture;
uniform sampler2D bloomTexture;
varying vec2 vUv;
void main() {
gl_FragColor = texture2D(baseTexture, vUv) + texture2D(bloomTexture, vUv);
}
`,
defines: {}
}), "baseTexture");
const { uniforms } = selectiveBloomPass;
getSelectiveBloomComposer((composer) => composer &&
(uniforms["bloomTexture"].value = composer.renderTarget2.texture));
export default selectiveBloomPass;
//# sourceMappingURL=index.js.map