import { useEffect, useState } from 'react'
import WebGPU from "three/examples/jsm/capabilities/WebGPU.js";
import './App.css'
import { Demo } from './Demo';
import ThreeCanvas from './components/threeCanvas';
function App() {
const [isDemoReady, setIsDemoReady] = useState(false);
const [isDarkTheme, setIsDarkTheme] = useState(false);
const [isGPUAvailable, setIsGPUAvailable] = useState(WebGPU.isAvailable());
useEffect(() => {
document.body.classList.add('loading');
const interval = setInterval(() => {
if (Demo.instance != null && Demo.firstRenderDone) {
setIsDemoReady(true);
clearInterval(interval);
document.body.classList.remove('loading');
}
}, 100);
}, []);
const toggleTheme = () => {
setIsDarkTheme(prevTheme => !prevTheme);
document.documentElement.setAttribute('data-theme', isDarkTheme ? 'light' : 'dark');
Demo.setTheme(isDarkTheme ? 'light' : 'dark');
};
return (
<>
BatchedMesh & Post Processing by Christophe Choffel
Article
All demos
GitHub
WebGPU is not available on your device or browser. Please use a device or browser that supports WebGPU.