Render Targets
Render to texture technique showing a spinning cube rendered to texture and applied to multiple objects.
What this code does
- WebGLRenderTarget: creates an off-screen framebuffer for rendering to texture instead of canvas.
- Two-Stage Rendering: first render spinning cube to texture, then render main scene using that texture.
- Texture Reuse: same render target texture applied to sphere, plane, and torus for demonstration.
- Real-time Updates: render target updates every frame showing live content on textured objects.
- Performance Technique: render targets enable mirror effects, security cameras, TV screens, and complex materials.
- Interactive Controls: adjust cube color, wireframe mode, auto-rotation, and render target resolution.
JavaScript (plain)
// Create render target for texture rendering
const renderTarget = new THREE.WebGLRenderTarget(512, 512)
// Scene for render target (spinning cube)
const rtScene = new THREE.Scene()
const rtCamera = new THREE.PerspectiveCamera(50, 1, 0.1, 1000)
rtCamera.position.z = 3
const cubeGeometry = new THREE.BoxGeometry(1, 1, 1)
const cubeMaterial = new THREE.MeshBasicMaterial({ color: 0x00ff88 })
const rtCube = new THREE.Mesh(cubeGeometry, cubeMaterial)
rtScene.add(rtCube)
// Main scene objects using render target as texture
const sphereGeometry = new THREE.SphereGeometry(1, 32, 32)
const sphereMaterial = new THREE.MeshBasicMaterial({ map: renderTarget.texture })
const sphere = new THREE.Mesh(sphereGeometry, sphereMaterial)
scene.add(sphere)
function animate() {
// Render to texture first
rtCube.rotation.x += 0.01
rtCube.rotation.y += 0.01
renderer.setRenderTarget(renderTarget)
renderer.render(rtScene, rtCamera)
// Render main scene to canvas
renderer.setRenderTarget(null)
renderer.render(scene, camera)
requestAnimationFrame(animate)
}
animate()