Обложка: Глобальное обновление Three.js
1 августа вышла новая версия Three.js r179 — свежак прямо из репозитория!
Что такое Three.js
Three.js — это бесплатная JavaScript-библиотека с открытым кодом, позволяющая создавать браузерную 3D‑графику через WebGL и экспериментально WebGPU.
Ближайшие конкуренты Three.js — это Babylon.js (но это скорее мощный движок с фокусом на игры и RTC), Verge3D (больше визуальный конструктор, чем кодовая библиотека) и LUME (обновляется даже чаще Three.js). Но Three.js легче учить, гибче в кастомизации и популярнее для статических и интерактивных проектов.
Что нового в версии r179?
Новая функциональность: EXRLoader — добавлен lossyDctChannelDecode — ускоренная и более компактная загрузка EXR‑текстур; Новый Output‑format API и цветовое пространство linear‑sRGB для правильной цветокоррекции;
FBXLoader — исправлена ошибка с цветами вершин — теперь цвета в FBX импортируются корректно;
GTAOPass — улучшена производительность кэша Ambient Occlusion; Объекты Line2 исключаются из расчёта AO для правильной визуализации линий;
HTMLMesh — добавлена поддержка полей ввода типа email и password — можно делать интерфейсы прямо внутри сцены;
LensflareMesh — перешли с fragmentNode на colorNode — улучшены эффекты бликов;
LightProbeGenerator — поддержка FloatType загрузки кубических текстур с probe — круто для освещения среды;
OutlinePass — удалены объекты Line2 из расчёта контура — линии остаются резкими и чистыми;
RapierPhysics — добавлена поддержка RoundedBoxGeometry — закруглённые формы теперь работают прямо с физикой;
RoomEnvironment — вместо старого ambient/intensity теперь используется emissiveIntensity для настройки освещения окружения сцены;
RoundedBoxGeometry — добавлены типизация, описание параметров и экспорт через toJSON() — упрощают конфигурацию геометрии;
Другие улучшения — улучшения NodeMaterial: fog применяется только однажды, новые NodeUtils, событие компиляции через compileAsync(), viewport и scissor API — всё для более стабильной работы и оптимизации рендеринга;
Также доступен новый setInstanceCount() для BatchedMesh, методы ближайшей дистанции между линиями (Line3), улучшенный лог рендерера, более надёжная обратная глубина (reversed depth buffer), MRT‑поддержка для 2D‑текстур и др.
Обновлены страницы MaterialX, AnimationClip, Texture и другие. Добавлены новые примеры WebGPU: webgpu_postprocessing_dof_basic, webgpu_compute_texture_3d, улучшена поддержка MaterialX и отражений.
Итог
Three.js r179 — не революция, но набор продуманных улучшений для удобства работы: надёжная загрузка форматов, стабильность визуальных эффектов, гибкость NodeMaterial, WebGPU‑примеры и точная физика. Иными словами, идеальный апгрейд для структурированных проектов вкупе с работой в Blender 3D.
Постоянные обновления (графика, анимация и AI) — мой телеграм канал: https://t.me/photoudzen
Источники:
Three.js r179: https://github.com/mrdoob/three.js/releases/tag/r179
LUME: https://github.com/lume/lume/releases/tag/v0.3.0-alpha.44
Babylon.js: https://github.com/BabylonJS/Babylon.js/releases/tag/8.21.1
Источник: habr.com