@@ -395,21 +395,31 @@ const threeRef = ref<{
395395 touch? : ReturnType <typeof createTouchTexture >;
396396 liquidEffect? : Effect ;
397397} | null >(null );
398- const prevConfigRef = ref <any >(null );
398+
399+ interface PixelBlastConfig {
400+ antialias: boolean ;
401+ liquid: boolean ;
402+ noiseAmount: number ;
403+ }
404+ const prevConfigRef = ref <PixelBlastConfig | null >(null );
399405
400406let cleanup: (() => void ) | null = null ;
401407
402408const setup = () => {
403409 const container = containerRef .value ;
404410 if (! container ) return ;
405411 speedRef .value = props .speed ;
406- const needsReinitKeys = [' antialias' , ' liquid' , ' noiseAmount' ];
407- const cfg = { antialias: props .antialias , liquid: props .liquid , noiseAmount: props .noiseAmount };
412+ const needsReinitKeys: (keyof PixelBlastConfig )[] = [' antialias' , ' liquid' , ' noiseAmount' ];
413+ const cfg: PixelBlastConfig = {
414+ antialias: props .antialias ,
415+ liquid: props .liquid ,
416+ noiseAmount: props .noiseAmount
417+ };
408418 let mustReinit = false ;
409419 if (! threeRef .value ) mustReinit = true ;
410420 else if (prevConfigRef .value ) {
411421 for (const k of needsReinitKeys )
412- if (prevConfigRef .value [k ] !== ( cfg as any ) [k ]) {
422+ if (prevConfigRef .value [k ] !== cfg [k ]) {
413423 mustReinit = true ;
414424 break ;
415425 }
@@ -486,7 +496,7 @@ const setup = () => {
486496 const ro = new ResizeObserver (setSize );
487497 ro .observe (container );
488498 const randomFloat = () => {
489- if (typeof window !== ' undefined' && ( window as any ) .crypto ?.getRandomValues ) {
499+ if (typeof window !== ' undefined' && window .crypto ?.getRandomValues ) {
490500 const u32 = new Uint32Array (1 );
491501 window .crypto .getRandomValues (u32 );
492502 return u32 [0 ] / 0xffffffff ;
@@ -528,7 +538,11 @@ const setup = () => {
528538 );
529539 const noisePass = new EffectPass (camera , noiseEffect );
530540 noisePass .renderToScreen = true ;
531- if (composer && composer .passes .length > 0 ) composer .passes .forEach (p => ((p as any ).renderToScreen = false ));
541+ if (composer && composer .passes .length > 0 )
542+ composer .passes .forEach (p => {
543+ // EffectPass has renderToScreen; ensure we turn it off before adding a new final pass
544+ if (' renderToScreen' in p ) (p as { renderToScreen? : boolean }).renderToScreen = false ;
545+ });
532546 composer .addPass (noisePass );
533547 }
534548 if (composer ) composer .setSize (renderer .domElement .width , renderer .domElement .height );
@@ -570,16 +584,17 @@ const setup = () => {
570584 return ;
571585 }
572586 uniforms .uTime .value = timeOffset + clock .getElapsedTime () * speedRef .value ;
573- if (liquidEffect ) ( liquidEffect as any ) .uniforms .get (' uTime' ).value = uniforms .uTime .value ;
587+ if (liquidEffect ) liquidEffect .uniforms .get (' uTime' )! .value = uniforms .uTime .value ;
574588 if (composer ) {
575589 if (touch ) touch .update ();
576590 composer .passes .forEach (p => {
577- const effs = (p as any ). effects ;
578- if ( effs )
579- effs .forEach (( eff : any ) => {
580- const u = eff .uniforms ? .get (' uTime' );
591+ if (p instanceof EffectPass ) {
592+ const effs = ( p as unknown as { effects ? : Effect [] }). effects ;
593+ effs ? .forEach (eff => {
594+ const u = eff .uniforms .get (' uTime' );
581595 if (u ) u .value = uniforms .uTime .value ;
582596 });
597+ }
583598 });
584599 composer .render ();
585600 } else renderer .render (scene , camera );
@@ -618,9 +633,9 @@ const setup = () => {
618633 if (props .transparent ) t .renderer .setClearAlpha (0 );
619634 else t .renderer .setClearColor (0x000000 , 1 );
620635 if (t .liquidEffect ) {
621- const uStrength = ( t .liquidEffect as any ) .uniforms .get (' uStrength' );
636+ const uStrength = t .liquidEffect ? .uniforms .get (' uStrength' );
622637 if (uStrength ) uStrength .value = props .liquidStrength ;
623- const uFreq = ( t .liquidEffect as any ) .uniforms .get (' uFreq' );
638+ const uFreq = t .liquidEffect ? .uniforms .get (' uFreq' );
624639 if (uFreq ) uFreq .value = props .liquidWobbleSpeed ;
625640 }
626641 if (t .touch ) t .touch .radiusScale = props .liquidRadius ;
0 commit comments