Руйнівні зміни
| Сфера | Зміна |
|---|---|
| WebGLRenderer |
Руйнівна
renderer.outputEncoding вилучено. Натомість
використовуйте
renderer.outputColorSpace (THREE.SRGBColorSpace
або THREE.LinearSRGBColorSpace)
|
| Textures |
Руйнівна
texture.encoding вилучено. Використовуйте
texture.colorSpace (THREE.SRGBColorSpace
для sRGB-зображень, THREE.NoColorSpace для карт
нормалей/даних)
|
| CubeCamera |
Руйнівна Порядок
параметрів конструктора змінився. Другий аргумент тепер
renderTarget замість роздільності. Явно
використовуйте
new THREE.WebGLCubeRenderTarget(size)
|
| Points / Lines |
Руйнівна
Усталене значення PointsMaterial.sizeAttenuation
змінилося — перевірте, що наявні хмари точок рендеряться
коректно
|
| PMREMGenerator |
Руйнівна
fromEquirectangular() тепер повертає рендер-ціль
напряму, а не обʼєкт. Оновіть:
const envMap =
pmrem.fromEquirectangular(hdrTexture).texture
→
const envMap =
pmrem.fromEquirectangular(hdrTexture)
|
Нові можливості
| Можливість | Опис |
|---|---|
| Система NodeMaterial |
Нове Компонована
вузлова система матеріалів для бекендів WebGPU та WebGL.
MeshStandardNodeMaterial,
MeshPhysicalNodeMaterial тощо.
|
| BatchedMesh | Нове Як InstancedMesh, але дозволяє різні геометрії в одному виклику відмалювання. Кероване GPU з підтримкою фрустумного відсікання |
| WebGPURenderer |
Нове Прев'ю-рендер
WebGPU у
three/examples/jsm/renderers/webgpu/. Заміна
«з коробки» з тим самим API, що й WebGLRenderer
|
| TSL (Three Shading Language) | Нове Вбудована в JavaScript мова шейдингу для написання переносних шейдерів, що компілюються в GLSL або WGSL |
| ColorManagement |
Нове
THREE.ColorManagement.enabled = true (усталено).
Замінює ручне гамма-кодування. Усі вхідні кольори вважаються
sRGB
|
Застарілі API
| Застаріле | Використовуйте натомість |
|---|---|
| THREE.sRGBEncoding | THREE.SRGBColorSpace |
| THREE.LinearEncoding | THREE.LinearSRGBColorSpace |
| THREE.RGBEEncoding | THREE.NoColorSpace (текстура даних) |
| renderer.outputEncoding | renderer.outputColorSpace |
| texture.encoding | texture.colorSpace |
| Color.convertSRGBToLinear() |
ColorManagement.toWorkingColorSpace(color,
SRGBColorSpace)
|
| Geometry (стара, V1) |
Повністю вилучено — залишився лише BufferGeometry
|
Прев'ю бекенду WebGPU
r160 постачає майже завершений рендер WebGPU у
three/addons/. Він використовує той самий граф сцени,
але WGSL-шейдери, скомпільовані через TSL.
// Using the WebGPU renderer (drop-in API)
import WebGPURenderer from 'three/addons/renderers/common/Renderer.js';
const renderer = new WebGPURenderer({ antialias: true });
await renderer.init();
document.body.appendChild(renderer.domElement);
Рендер WebGPU вимагає Chrome 113+ або Firefox Nightly з увімкненим
WebGPU. На момент r160 підтримка Safari часткова. Для продакшну
продовжуйте використовувати
WebGLRenderer.
Міграція з r158/r159
Найпоширеніші завдання міграції в r160 — це перейменування API простору кольорів:
// BEFORE (r158) renderer.outputEncoding = THREE.sRGBEncoding; texture.encoding = THREE.sRGBEncoding; normalMap.encoding = THREE.LinearEncoding; // AFTER (r160) renderer.outputColorSpace = THREE.SRGBColorSpace; texture.colorSpace = THREE.SRGBColorSpace; normalMap.colorSpace = THREE.NoColorSpace; // data textures = no color space
-
Знайдіть у своєму коді
Encoding— перейменуйте всі входження на еквівалентні значенняColorSpace -
Перевірте використання
PMREMGenerator— повертане значення змінилося -
ColorManagement.enabledусталеноtrueпочинаючи з r152+. Якщо бачите некоректне освітлення, перевірте, чи не кодуєте кольори двічі -
Запустіть офіційний скрипт міграції:
npx three-migrate(опрацьовує більшість перейменувань автоматично)