useFBO ^3.5.0
An FBO (or Frame Buffer Object) is generally used to render to a texture. This is useful for post-processing effects like blurring, or for rendering to a texture that will be used as a texture in a later draw call.
Cientos provides a useFBO
composable to make it easy to use FBOs in your application.
WARNING
The useFBO
composable must be used inside of a child component since it needs the context of TresCanvas.
Usage
FboCube.vue
vue
<script setup lang="ts">
import { useFBO } from '@tresjs/cientos'
const fboTarget = useFBO({
depth: true,
width: 512,
height: 512,
settings: {
samples: 1,
},
})
</script>
<template>
<TresMesh>
<TresBoxGeometry :args="[1, 1, 1]" />
<TresMeshBasicMaterial
:color="0xFFFFFF"
:map="fboTarget?.texture ?? null"
/>
</TresMesh>
</template>
Experience.vue
vue
<script setup lang="ts">
import { OrbitControls } from '@tresjs/cientos'
import { TresCanvas, useRenderLoop } from '@tresjs/core'
import { ACESFilmicToneMapping, SRGBColorSpace } from 'three'
import { nextTick, onMounted, shallowRef } from 'vue'
const gl = {
clearColor: '#82DBC5',
shadows: true,
alpha: false,
outputColorSpace: SRGBColorSpace,
toneMapping: ACESFilmicToneMapping,
}
const torusRef = shallowRef(null)
const capsuleRef = shallowRef(null)
const { onLoop } = useRenderLoop()
onMounted(async () => {
await nextTick()
onLoop(({ elapsed }) => {
torusRef.value.rotation.x = elapsed * 0.745
torusRef.value.rotation.y = elapsed * 0.361
capsuleRef.value.rotation.x = elapsed * 0.471
capsuleRef.value.rotation.z = elapsed * 0.632
})
})
</script>
<template>
<TresCanvas v-bind="gl">
<TresPerspectiveCamera :position="[0, 0.5, 5]" />
<OrbitControls />
<TresGridHelper :args="[10, 10]" />
<FboCube />
<TresMesh
ref="torusRef"
:position="[3, 0, 0]"
>
<TresTorusGeometry :args="[1, 0.5, 16, 100]" />
<TresMeshNormalMaterial />
</TresMesh>
<TresMesh
ref="capsuleRef"
:position="[-2, 0, 0]"
>
<TresCapsuleGeometry :args="[0.4, 1, 4, 8]" />
<TresMeshNormalMaterial />
</TresMesh>
</TresCanvas>
</template>
Props
Prop | Description | Default |
---|---|---|
width | number - The width of the FBO. | Width of the canvas |
height | number - the height of the FBO | Height of the canvas |
depth | boolean - Whether or not the FBO should render the depth to a depthTexture . | false |
settings | WebGLRenderTargetOptions - Every other configuration property for the WebGLRenderTarget class | {} |