fix(web): искажение цветов в предпросмотре правок
Таблицы тональных кривых в WASM-модуле лежали в статическом массиве, который линковщик помещал в сегмент .data — такой сегмент в wasm доступен только для чтения, поэтому запись в него не срабатывала, и модуль считал по мусорным данным (отсюда «каша» вместо плавного градиента). Теперь таблицы считает и передаёт JS: модуль не хранит состояния и только применяет правки к пикселям. Дополнительно клиент сверяет модуль с эталонной JS-реализацией на маленьком образце и, если они расходятся, доверяет JS. Service worker больше не кэширует .wasm: старый модуль в кэше ломал предпросмотр даже после обновления сборки.
This commit is contained in:
@@ -231,9 +231,11 @@
|
||||
const dh = Math.round(visibleH);
|
||||
|
||||
ctx.drawImage(img, sx, sy, sw, sh, dx, dy, dw, dh);
|
||||
const data = ctx.getImageData(dx, dy, dw, dh);
|
||||
applyLight(data.data, liveParams.light);
|
||||
ctx.putImageData(data, dx, dy);
|
||||
|
||||
// Фильтруем весь холст: так прошлый кадр не смешивается с новым.
|
||||
const frame = ctx.getImageData(0, 0, width, height);
|
||||
applyLight(frame.data, liveParams.light);
|
||||
ctx.putImageData(frame, 0, 0);
|
||||
}
|
||||
|
||||
function scheduleViewport() {
|
||||
|
||||
Reference in New Issue
Block a user