Hi,
i’m trying to understand why this happens,
this is my effects component
import * as THREE from 'three'
import React, { useRef, useMemo, useEffect, useState } from 'react'
import { extend, useThree, useFrame } from '@react-three/fiber'
import { EffectComposer } from 'three-stdlib'
import { ShaderPass } from 'three/examples/jsm/postprocessing/ShaderPass'
import { RenderPass } from 'three/examples/jsm/postprocessing/RenderPass'
import { UnrealBloomPass } from 'three/examples/jsm/postprocessing/UnrealBloomPass'
import { FilmPass } from 'three/examples/jsm/postprocessing/FilmPass'
extend({ EffectComposer, ShaderPass, RenderPass, UnrealBloomPass, FilmPass })
export function Effects() {
const composer = useRef(EffectComposer);
const [enabled, setEnabled] = useState(true);
const { scene, gl, size, camera } = useThree()
const current = useThree((state) => state.performance.current)
const aspect = useMemo(() => new THREE.Vector2(512, 512), [])
useEffect(() => {
if(current < 1) setEnabled(false)
else setEnabled(true)
}, [current]);
useEffect(() => void composer.current.setSize(size.width, size.height), [size])
useFrame(() => composer.current.render(), 1)
return (
<effectComposer ref={composer} args={[gl]}>
<renderPass attach="passes" scene={scene} camera={camera} />
<unrealBloomPass attach="passes" args={[aspect, 2, 1, 0]} />
</effectComposer>
)
}
I see blank screen, the line is obv the composer.current.render(), any suggestions?
Thank you