|
1 | | -import { useWebGLCanvas, bloom, linearToSRGB } from "usegl"; |
| 1 | +import { useWebGLCanvas, bloom, hableToneMapping } from "usegl"; |
2 | 2 | import { Pane } from "tweakpane"; |
3 | 3 | import fragment from "./dots.frag?raw"; |
4 | 4 | import "./styles.css"; |
5 | 5 |
|
6 | 6 | const bloomEffect = bloom(); |
| 7 | +const toneMapping = hableToneMapping({ exposure: 3 }); |
7 | 8 |
|
8 | 9 | useWebGLCanvas({ |
9 | 10 | canvas: "#glCanvas", |
10 | 11 | fragment, |
11 | | - postEffects: [bloomEffect, linearToSRGB()], |
| 12 | + postEffects: [bloomEffect, toneMapping], |
12 | 13 | }); |
13 | 14 |
|
14 | 15 | // You can dynamically update the uniforms of an effect pass, like any other pass |
15 | 16 | const pane = new Pane({ title: "Uniforms" }); |
16 | | -pane.addBinding(bloomEffect.uniforms, "uRadius", { min: 0, max: 1 }); |
17 | | -pane.addBinding(bloomEffect.uniforms, "uMix", { min: 0, max: 1 }); |
| 17 | + |
| 18 | +const bloomUniforms = pane.addFolder({ title: "Bloom" }); |
| 19 | +bloomUniforms.addBinding(bloomEffect.uniforms, "uRadius", { min: 0, max: 1 }); |
| 20 | +bloomUniforms.addBinding(bloomEffect.uniforms, "uMix", { min: 0, max: 1 }); |
| 21 | + |
| 22 | +const toneMappingUniforms = pane.addFolder({ title: "Tone Mapping" }); |
| 23 | +toneMappingUniforms.addBinding(toneMapping.uniforms, "uExposure", { min: 0, max: 5 }); |
0 commit comments