|
1 |
| -import type {TextureStore} from '@spearwolf/twopoint5d'; |
2 |
| -import {DisplayElement, Stage2DElement, TextureStoreElement} from '@spearwolf/twopoint5d-elements'; |
| 1 | +import type {PostProcessingRenderer, TextureStore} from '@spearwolf/twopoint5d'; |
| 2 | +import {DisplayElement, PostProcessingElement, Stage2DElement, TextureStoreElement} from '@spearwolf/twopoint5d-elements'; |
3 | 3 | import {Color, Scene, Sprite, SpriteMaterial} from 'three';
|
| 4 | +import {GlitchPass} from 'three/addons/postprocessing/GlitchPass.js'; |
4 | 5 | import './display.css';
|
5 | 6 | import './style.css';
|
6 | 7 |
|
7 |
| -const initialize = async (action: (scene: Scene, store: TextureStore) => void) => { |
| 8 | +const initialize = async ( |
| 9 | + action: (frame: {scene: Scene}, store: TextureStore, postProcessing: PostProcessingRenderer) => void, |
| 10 | +) => { |
8 | 11 | customElements.define('x-display', DisplayElement);
|
9 | 12 | customElements.define('x-stage2d', Stage2DElement);
|
10 | 13 | customElements.define('x-texture-store', TextureStoreElement);
|
| 14 | + customElements.define('x-post-processing', PostProcessingElement); |
11 | 15 |
|
12 |
| - const [stageEl, storeEl] = await Promise.all([ |
| 16 | + const [stageEl, storeEl, postProcessingEl] = await Promise.all([ |
13 | 17 | Stage2DElement.whenDefined(document.getElementById('stage2d')),
|
14 | 18 | TextureStoreElement.whenDefined(document.getElementById('texstore')),
|
| 19 | + PostProcessingElement.whenDefined(document.getElementById('pp')), |
15 | 20 | ]);
|
16 | 21 |
|
17 |
| - action(await stageEl.sceneReady(), storeEl.store); |
| 22 | + action(await stageEl.firstFrame(), storeEl.store, postProcessingEl.renderer); |
18 | 23 | };
|
19 | 24 |
|
20 |
| -initialize((scene, textureStore) => { |
| 25 | +initialize(({scene}, textureStore, postProcessing) => { |
21 | 26 | scene.background = new Color(0x212121);
|
22 | 27 |
|
| 28 | + const glitchPass = new GlitchPass(); |
| 29 | + postProcessing.addPass(glitchPass); |
| 30 | + |
23 | 31 | const sprite = new Sprite();
|
24 | 32 | sprite.scale.set(197, 205, 1);
|
25 | 33 | scene.add(sprite);
|
|
0 commit comments