1-mipmap.png
3.1 MB
Это не совсем про антиалиасинг, но про работу с артефактами интерполяции.Если вы возьмете текстуру и просто отрисуете ее лажащей в XZ плоскости в перспективной проекции, то по мере удаления ваша текстура превратится в кашу даже с линейной интерполяцией (билинейной на самом деле).
Соль в том, что линейная интерполяция это не про среднее всех пикселей между двумя выбранными (это называется area), а именно что только этих двух пикселей. То есть, очевидно, у вас потеряется очень много информации на больших масштабах.
Решается это через мипмапы (пирамида, где каждый следующий слой это х2 меньшая картинка). Там при сэмплинге соовтествующих пикселей не теряется информация, потому как при генерации у нас усредняются попарно все соседние пиксели. Тут есть два варианта:
1. При загрузке текстуры через
2. При создании тексутры указывать что нужны мипмапы и пото генерировать блит операцией (`blit.generateMipmaps(for: texture)`).
Далее мы можем включить трилинейную интерполяцию: значение будет браться средним по ближайшим слоям мипмапа, а потом еще и между ними. В итоге получается гладенько красиво. Все, что надо, указать
Это может быть полезно для нормальной отрисовки геометрии, если вы, скажем отрисовали линию на текстуре, а потом натягиваете эту плоскость на что-то еще. Вот чтобы эту линию не попердолило, лучше генерировать мипамап пердварительно. Делается это довольно быстро на фоне всего остального, но жрет х1.5 памяти.
Соль в том, что линейная интерполяция это не про среднее всех пикселей между двумя выбранными (это называется area), а именно что только этих двух пикселей. То есть, очевидно, у вас потеряется очень много информации на больших масштабах.
Решается это через мипмапы (пирамида, где каждый следующий слой это х2 меньшая картинка). Там при сэмплинге соовтествующих пикселей не теряется информация, потому как при генерации у нас усредняются попарно все соседние пиксели. Тут есть два варианта:
1. При загрузке текстуры через
MTKTextureLoader указывать MTKTextureLoader.Option.generateMipmaps: true.2. При создании тексутры указывать что нужны мипмапы и пото генерировать блит операцией (`blit.generateMipmaps(for: texture)`).
Далее мы можем включить трилинейную интерполяцию: значение будет браться средним по ближайшим слоям мипмапа, а потом еще и между ними. В итоге получается гладенько красиво. Все, что надо, указать
.mipFilter=.linear или mip_filter::linear (смотря где вы его создаете) при создании сэмплера.Это может быть полезно для нормальной отрисовки геометрии, если вы, скажем отрисовали линию на текстуре, а потом натягиваете эту плоскость на что-то еще. Вот чтобы эту линию не попердолило, лучше генерировать мипамап пердварительно. Делается это довольно быстро на фоне всего остального, но жрет х1.5 памяти.
👍2
AntialiaingDemo.zip
99.5 KB
Демка для потыкать. Половина негенерена кодексом так что не ругайтесь
👍3
Прогаем с кенгурой
Физарум в живой природе
Можно заказать чашек петри и высадить его на них
This media is not supported in your browser
VIEW IN TELEGRAM
Помните эксперименты с тайлами на генуарий? Нашел им применение. Делаю раскраску по заявке ребёнка. Кстати и линза пригодилась
🔥6
This media is not supported in your browser
VIEW IN TELEGRAM
Зацените эффект с автоматическим завершением цвета
Пысы: только сейчас на видео заметил, что у меня z не в ту сторону смотрит
Пысы: только сейчас на видео заметил, что у меня z не в ту сторону смотрит
🔥3
This media is not supported in your browser
VIEW IN TELEGRAM
Вот еще разное, но исправленное. Все еще нужны бетатестеры-добровольцы)))
🔥6
This media is not supported in your browser
VIEW IN TELEGRAM
Не прошло и недели, как яблоки апрувнули
https://apps.apple.com/us/app/pixel-paws-color-by-number/id6758962631
https://apps.apple.com/us/app/pixel-paws-color-by-number/id6758962631
🔥8🎉1
This media is not supported in your browser
VIEW IN TELEGRAM
Решил возвращаться к написанию скетчиков. А то совсем забуду, как это делать.
🔥7
Нашел интересное старое видео на тему деградации аналоговых данных при множественном копировании
https://youtu.be/nqy_hYDI0As?si=mT0RPSan5jizYOlL
https://youtu.be/nqy_hYDI0As?si=mT0RPSan5jizYOlL
YouTube
VHS copied to VHS copied to VHS copied to VHS copied to VHS... (VHS Generation Loss Demonstration)
What you're witnessing is a video being copied to a VHS tape, that tape being digitized, and then that digitized video being copied onto the tape again. The process is repeated a total of sixteen times.
I termed the original digital video source "generation…
I termed the original digital video source "generation…
🔥4❤1🤯1
This media is not supported in your browser
VIEW IN TELEGRAM
Продолжаем писать напрямую в память тик80. На этот раз байтбит. Правда байт 4-битный
🔥8
This media is not supported in your browser
VIEW IN TELEGRAM
Разобрался с нулевым уровнем (он на 8), чтобы не было кхкхкх, когда 0 шлешь. Не идеально, но работает. И адаптировал 42, чтоб в 4 битах работало.
🔥1
Яблоки после пинка таки пропустили прилу
https://apps.apple.com/au/app/pixator-photo-pixelator/id6445889842
Вообще на этой неделе почти все песочницы обновил - перевел их на общее ядро. Надеюсь, ничего не сломал
https://apps.apple.com/au/app/pixator-photo-pixelator/id6445889842
Вообще на этой неделе почти все песочницы обновил - перевел их на общее ядро. Надеюсь, ничего не сломал
App Store
Pixator: Photo Pixelator App - App Store
Download Pixator: Photo Pixelator by GEORGY OSTROBROD on the App Store. See screenshots, ratings and reviews, user tips and more apps like Pixator: Photo…
👍4