Sandbox de Three.js y GLSL para ajustar efectos visuales de habilidades tipo skillshot, con controles deslizantes en vivo que siguen funcionando al pausar la simulación.
Humpalumps/Ultra-Water
Renderizador oceánico en tiempo real para three.js (WebGL2), con olas FFT, rompientes, espuma, cáusticas, vista submarina y objetos flotantes.
- Estrellas
- 634
- Forks
- 94
- Issues abiertos
- 0
- Último commit
- hace 4 días
¿Qué es?
Ultra Water es un renderizador oceánico en tiempo real basado en three.js y WebGL2, que incluye una escena de demostración con una isla. Las olas se generan mediante una simulación FFT al estilo de Tessendorf con cuatro cascadas y una banda capilar para las pequeñas ondulaciones. La superficie se sombrea píxel a píxel con reflejos especulares del sol mediante GGX, reflejos planos de la isla, refracción y absorción de Beer-Lambert.
Además de las aguas abiertas, incluye rompientes costeras impulsadas por un campo de tiempo de viaje eikonal, espuma en crestas y encaje, oleaje en la playa y anillos de impacto cuando los objetos golpean el agua. Las cáusticas se calculan proyectando luz refractada sobre planos a varias profundidades. El modo submarino renderiza la ventana de Snell, rayos solares y nieve marina cuando la cámara está en la superficie o por debajo de ella.
Cajas, barriles, boyas y barcos flotantes usan alturas del agua muestreadas en la GPU para calcular la flotabilidad y el arrastre, con un mapa de sombras independiente. El proyecto incluye un HUD de rendimiento integrado en la página y una prueba de rendimiento, y adapta su perfil de calidad para teléfonos y tabletas.
Funciones clave
- 01Olas oceánicas basadas en FFT en cuatro cascadas, con ondulaciones capilares.
- 02Rompeolas con inclinación de las olas al romper, crestas que se desplazan y formación de bajos.
- 03Aguas blancas en las crestas y espuma en encaje, con una cobertura que se erosiona con el tiempo.
- 04Cáusticas, ventana de Snell submarina y rayos solares.
- 05Simulación de flotabilidad para cajas, barriles, boyas y barcos flotantes.
- 06Perfil móvil con ajuste automático de la resolución.
Casos de uso
- Añadir un fondo realista de océano o lago a una escena web de three.js.
- Estudiar técnicas de sombreado oceánico con FFT, cáusticas y espuma en WebGL2.
- Crear prototipos de barcos u objetos flotantes que reaccionen a las olas.
- Evaluar el rendimiento del renderizado con GPU en el navegador.
Inicio rápido
- 1
Instala las dependencias
npm install - 2
Inicia el servidor de desarrollo y abre la URL de localhost que aparece
npm run dev
Antes de usarlo
- Para mantener una frecuencia de fotogramas fluida, se necesita un navegador compatible con WebGL2 y una GPU con suficiente potencia.
- El rendimiento en teléfonos y tabletas varía según la temperatura y el dispositivo; además, la configuración de escritorio puede provocar caídas de fotogramas en los teléfonos.
Temas
Preguntas frecuentes
- ¿Qué es Ultra-Water?
- Renderizador oceánico en tiempo real para three.js (WebGL2), con olas FFT, rompientes, espuma, cáusticas, vista submarina y objetos flotantes. Ultra Water es un renderizador oceánico en tiempo real basado en three.js y WebGL2, que incluye una escena de demostración con una isla. Las olas se generan mediante una simulación FFT al estilo de Tessendorf con cuatro cascadas y una banda capilar para las pequeñas ondulaciones. La superficie se sombrea píxel a píxel con reflejos especulares del sol mediante GGX, reflejos planos de la isla, refracción y absorción de Beer-Lambert.
- ¿Ultra-Water es gratuito? ¿Qué licencia tiene?
- Ultra-Water es open source bajo la licencia MIT. Revisa los términos de la licencia antes de usarlo en productos comerciales.
- ¿Ultra-Water sigue mantenido?
- Mantenimiento activo. El último commit de Ultra-Water fue el 2 nov 2026.
- ¿Para qué puedo usar Ultra-Water?
- Añadir un fondo realista de océano o lago a una escena web de three.js. Estudiar técnicas de sombreado oceánico con FFT, cáusticas y espuma en WebGL2. Crear prototipos de barcos u objetos flotantes que reaccionen a las olas. Evaluar el rendimiento del renderizado con GPU en el navegador.
- ¿Cómo se instala Ultra-Water?
- Instala las dependencias: npm install Inicia el servidor de desarrollo y abre la URL de localhost que aparece: npm run dev
- ¿Dónde consigo Ultra-Water?
- El código fuente y las instrucciones de instalación están en GitHub: https://github.com/Humpalumps/Ultra-Water
Resumen generado por IA a partir del README del proyecto. Las estadísticas de GitHub se actualizan a diario.
Proyectos relacionados
Un wrapper funcional de WebGL que elimina el estado compartido de la GPU y permite describir las llamadas de dibujo como comandos y compilarlas en JavaScript optimizado.
Biblioteca de postprocesamiento para three.js que encadena efectos de imagen a pantalla completa, como bloom, SSAO y gradación de color, en escenas WebGL.
Colección abierta de más de 100 transiciones GLSL creadas por la comunidad para animar el paso entre dos imágenes, compatibles con la web, móviles, Apple, Android, Rust y herramientas de video.
Un recorrido en barco 3D por un valle fluvial japonés, en el navegador y renderizado en tiempo real con three.js, durante las cuatro estaciones y a cualquier hora del día.
Un renderizador de path tracing para three.js que usa WebGPU y three-mesh-bvh para producir imágenes con base física en el navegador.