File tree Expand file tree Collapse file tree 2 files changed +40
-4
lines changed Expand file tree Collapse file tree 2 files changed +40
-4
lines changed Original file line number Diff line number Diff line change @@ -220,6 +220,15 @@ class WebGPUTextures {
220220
221221 }
222222
223+ //
224+
225+ const disposeCallback = onRenderTargetDispose . bind ( this ) ;
226+ renderTargetProperties . disposeCallback = disposeCallback ;
227+
228+ renderTarget . addEventListener ( 'dispose' , disposeCallback ) ;
229+
230+ //
231+
223232 renderTargetProperties . initialized = true ;
224233
225234 }
@@ -450,6 +459,34 @@ class WebGPUTextures {
450459
451460}
452461
462+ function onRenderTargetDispose ( event ) {
463+
464+ const renderTarget = event . target ;
465+ const properties = this . properties ;
466+
467+ const renderTargetProperties = properties . get ( renderTarget ) ;
468+
469+ renderTarget . removeEventListener ( 'dispose' , renderTargetProperties . disposeCallback ) ;
470+
471+ renderTargetProperties . colorTextureGPU . destroy ( ) ;
472+ properties . remove ( renderTarget . texture ) ;
473+
474+ if ( renderTarget . depthBuffer === true ) {
475+
476+ renderTargetProperties . depthTextureGPU . destroy ( ) ;
477+
478+ if ( renderTarget . depthTexture !== null ) {
479+
480+ properties . remove ( renderTarget . depthTexture ) ;
481+
482+ }
483+
484+ }
485+
486+ properties . remove ( renderTarget ) ;
487+
488+ }
489+
453490function onTextureDispose ( event ) {
454491
455492 const texture = event . target ;
Original file line number Diff line number Diff line change 2323
2424 let box ;
2525
26+ const dpr = window . devicePixelRatio ;
27+
2628 init ( ) . then ( animate ) . catch ( error ) ;
2729
2830 async function init ( ) {
5456
5557 //
5658
57- const dpr = window . devicePixelRatio ;
58-
5959 renderer = new WebGPURenderer ( ) ;
6060 renderer . setPixelRatio ( dpr ) ;
6161 renderer . setSize ( window . innerWidth , window . innerHeight ) ;
9393 camera . updateProjectionMatrix ( ) ;
9494
9595 renderer . setSize ( window . innerWidth , window . innerHeight ) ;
96-
97- // @TODO Resize render target, implement respective .dispose()
96+ renderTarget . setSize ( window . innerWidth * dpr , window . innerHeight * dpr ) ;
9897
9998 }
10099
You can’t perform that action at this time.
0 commit comments