Стекло против z-буфера: alpha, порядок и блендинг
https://dev-math.ru/articles/alpha/
Мы постепенно подбираемся к финальным темам серии статей про рендер. Сегодня самая противная вещь во всей реалтайм графике — прозрачность.
Без неё все сильно проще, но как же мы будем жить без стекол?
В общем в статье разобраны:
- что такое альфа на самом деле;
- оператор over;
- что происходит с z-буффером;
- что делает premultiplied alpha;
И так далее.
Читайте, делитесь с друзьями и ставьте 🔥 — это мотивирует таки добить мой бесплатный учебник по рендеру до конца :)
#devmath #renderpipeline #alpha
https://dev-math.ru/articles/alpha/
Мы постепенно подбираемся к финальным темам серии статей про рендер. Сегодня самая противная вещь во всей реалтайм графике — прозрачность.
Без неё все сильно проще, но как же мы будем жить без стекол?
В общем в статье разобраны:
- что такое альфа на самом деле;
- оператор over;
- что происходит с z-буффером;
- что делает premultiplied alpha;
И так далее.
Читайте, делитесь с друзьями и ставьте 🔥 — это мотивирует таки добить мой бесплатный учебник по рендеру до конца :)
#devmath #renderpipeline #alpha
🔥6
Шина видеокарты и fps
https://youtube.com/shorts/39vq_Y3LPEs?si=kHte0rGuj7kpavSu
Продолжаю экспериментировать с форматом коротких видео.
Видеокарта считает тысячами потоков разом — а байты к этим ядрам ещё надо провезти по шине через кэши.
Разбор целиком — в статье про путь одного draw call.
#компьютернаяграфика #оптимизация #gpu #геймдев #devmath
https://youtube.com/shorts/39vq_Y3LPEs?si=kHte0rGuj7kpavSu
Продолжаю экспериментировать с форматом коротких видео.
Видеокарта считает тысячами потоков разом — а байты к этим ядрам ещё надо провезти по шине через кэши.
Разбор целиком — в статье про путь одного draw call.
#компьютернаяграфика #оптимизация #gpu #геймдев #devmath
YouTube
Шина видеокарты и fps
Видеокарта считает тысячами потоков разом — а байты к этим ядрам ещ...
🔥3❤1👎1
Постобработка не знает, что у вас в сцене
Осталось две темы цикла про рендеру в 12 недель. Тема этой недели — постобработка. И следующей GI. Можно ещё конечно трассировку пути добавить, как финал. Но пока думаю, так как после можно будет перейти уже к циклу по математике в геймдизайне. Итак, начнем с базы пост обработки.
Выкиньте с уровня всё: пустая комната, одна стена в кадре. Боке, размытие в движении и тонмаппинг будут стоить столько же, сколько стоили в лесу.
Дело в том, что после последнего нарисованного объекта кадр становится обычной текстурой: движок рисует прямоугольник во весь экран, и шейдер отрабатывает попиксельно. Что под ним было — стена, куст, небо — шейдер не знает.
Хорхе Хименес показывал на SIGGRAPH 2014 замеры Advanced Warfare на Xbox One: боке — 1.27 мс. При 60 fps на кадр отпущено 16.7 мс — под восемь процентов бюджета за один эффект, хоть в стену упритесь, хоть на панораму смотрите.
#геймдев #графика #математика #рендер #постобработка #gamedev
Осталось две темы цикла про рендеру в 12 недель. Тема этой недели — постобработка. И следующей GI. Можно ещё конечно трассировку пути добавить, как финал. Но пока думаю, так как после можно будет перейти уже к циклу по математике в геймдизайне. Итак, начнем с базы пост обработки.
Выкиньте с уровня всё: пустая комната, одна стена в кадре. Боке, размытие в движении и тонмаппинг будут стоить столько же, сколько стоили в лесу.
Дело в том, что после последнего нарисованного объекта кадр становится обычной текстурой: движок рисует прямоугольник во весь экран, и шейдер отрабатывает попиксельно. Что под ним было — стена, куст, небо — шейдер не знает.
Хорхе Хименес показывал на SIGGRAPH 2014 замеры Advanced Warfare на Xbox One: боке — 1.27 мс. При 60 fps на кадр отпущено 16.7 мс — под восемь процентов бюджета за один эффект, хоть в стену упритесь, хоть на панораму смотрите.
#геймдев #графика #математика #рендер #постобработка #gamedev
🔥4
Media is too big
VIEW IN TELEGRAM
Решил изменить стиль роликов и голос диктора
Попробовал свой голос — не то. А в таком формате будет думаю сильно лучше и познавательнее. Собственно в первых роликах на этой неделе начну рассказывать про математику в геймдизайне.
#новости
Попробовал свой голос — не то. А в таком формате будет думаю сильно лучше и познавательнее. Собственно в первых роликах на этой неделе начну рассказывать про математику в геймдизайне.
#новости
🔥6
Разные сорта алиасинга
Вы наверняка слышали про алиасинг (а скорее даже про анти-алиасинг), но он бывает разный и правится по-разному.
Алиасинг на контуре объекта
Первый тип. Это классическая лесенка на диагональных линиях. Возникает он на внешних границах объекта где он перекрывает фон. Контур объекта — это резкий перепад цвета или яркости между объектом и фоном. При дискретизации на пиксельной сетке этот резкий переход часто попадает внутрь пикселя, и алгоритм вынужден выбирать что-то одно: цвет объекта или цвет фона. В результате линия границы получается негладкой, а "рваной".
Для сглаживания границ используются методы, вроде MSAA, чтобы вычислить правильный промежуточный цвет на границе.
Алиасинг на линиях поверхности
Второй тип. Здесь речь идет не о границе объекта, а о линиях, которые лежат на его поверхности. Алиасинг проявляется не на краю объекта, а на самой линии, которая нарисована поверх текстуры или цвета поверхности. Эти линии могут "дергаться", мерцать или иметь рваные края, даже если сама поверхность выглядит гладкой.
Тут для сглаживания техники посложнее. Сузить динамический диапазон перед усреднением (в Advanced Warfare отдельным пунктом гасили «светлячков»); не пускать roughness к нулю — Frostbite подпирает её снизу именно ради этого (Filament).
Алиасинг на альфа тесте
Третий тип. Который часто путают с первым. Кромка листвы накладывается на фон проступая через альфа тест.
Полутонов там нет по построению, MSAA их не придумает, пока не включён alpha-to-coverage. Про это было в предыдущей статье.
Что и как чинится подробнее разберем в пятницу.
#msaa #aliasing #devmath
Вы наверняка слышали про алиасинг (а скорее даже про анти-алиасинг), но он бывает разный и правится по-разному.
Алиасинг на контуре объекта
Первый тип. Это классическая лесенка на диагональных линиях. Возникает он на внешних границах объекта где он перекрывает фон. Контур объекта — это резкий перепад цвета или яркости между объектом и фоном. При дискретизации на пиксельной сетке этот резкий переход часто попадает внутрь пикселя, и алгоритм вынужден выбирать что-то одно: цвет объекта или цвет фона. В результате линия границы получается негладкой, а "рваной".
Для сглаживания границ используются методы, вроде MSAA, чтобы вычислить правильный промежуточный цвет на границе.
Алиасинг на линиях поверхности
Второй тип. Здесь речь идет не о границе объекта, а о линиях, которые лежат на его поверхности. Алиасинг проявляется не на краю объекта, а на самой линии, которая нарисована поверх текстуры или цвета поверхности. Эти линии могут "дергаться", мерцать или иметь рваные края, даже если сама поверхность выглядит гладкой.
Тут для сглаживания техники посложнее. Сузить динамический диапазон перед усреднением (в Advanced Warfare отдельным пунктом гасили «светлячков»); не пускать roughness к нулю — Frostbite подпирает её снизу именно ради этого (Filament).
Алиасинг на альфа тесте
Третий тип. Который часто путают с первым. Кромка листвы накладывается на фон проступая через альфа тест.
Полутонов там нет по построению, MSAA их не придумает, пока не включён alpha-to-coverage. Про это было в предыдущей статье.
Что и как чинится подробнее разберем в пятницу.
#msaa #aliasing #devmath
🔥2
Экспонента в шкале опыта
https://youtube.com/shorts/tp4TONz0wok?si=1B9zEIZ7qFnK7y8S
Почему шкала опыта в играх экспоненциальная? Всё в новом ролике. В новом формате. Думаю так и воспринимается лучше и выглядит интереснее.
#devmath #геймдев #геймдизайн #математика #прогрессия
https://youtube.com/shorts/tp4TONz0wok?si=1B9zEIZ7qFnK7y8S
Почему шкала опыта в играх экспоненциальная? Всё в новом ролике. В новом формате. Думаю так и воспринимается лучше и выглядит интереснее.
#devmath #геймдев #геймдизайн #математика #прогрессия
YouTube
Экспонента в шкале опыта #devmath #геймдев #геймдизайн #математика #прогрессия
Почему шкала опыта в играх экспоненциальная? Потому что линейная ло...
🔥4👍1👏1
Целых две статьи по геймдизайну
Для начинающих. Это не отменяет доработку цикла рендера, но с тем как интересен всем геймдизайн захотелось ускорится и начать добавлять на сайт и геймдизайн. А начинать лучше всегда с самых основ.
Что такое геймдизайн? — вводная для тех, кто только начинает делать игры: что проектирует геймдизайнер и из чего состоит ремесло — core loop, механики, экономика и числа, обучение игрока, левелдизайн.
Что почитать начинающему геймдизайнеру? — разбор книг по геймдизайну для тех, кто начинает: с каких двух начинать, что брать под конкретную задачу — ощущение управления, левелдизайн, баланс.
Я что-то начал со сложного в начале, в геймдизайне тоже много интересной математики, которую можно разобрать. Так что на этой неделе постараюсь добить статьи по рендеру и к новой теме :)
Ну и не выкладывал чтобы не спамить, ну и новый шортс про Броню и убывающую отдачу.
#devmath #геймдизайн
Для начинающих. Это не отменяет доработку цикла рендера, но с тем как интересен всем геймдизайн захотелось ускорится и начать добавлять на сайт и геймдизайн. А начинать лучше всегда с самых основ.
Что такое геймдизайн? — вводная для тех, кто только начинает делать игры: что проектирует геймдизайнер и из чего состоит ремесло — core loop, механики, экономика и числа, обучение игрока, левелдизайн.
Что почитать начинающему геймдизайнеру? — разбор книг по геймдизайну для тех, кто начинает: с каких двух начинать, что брать под конкретную задачу — ощущение управления, левелдизайн, баланс.
Я что-то начал со сложного в начале, в геймдизайне тоже много интересной математики, которую можно разобрать. Так что на этой неделе постараюсь добить статьи по рендеру и к новой теме :)
Ну и не выкладывал чтобы не спамить, ну и новый шортс про Броню и убывающую отдачу.
#devmath #геймдизайн
🔥4👍1
Почему в Overwatch броня вычитает фиксированное значение урона?
https://youtube.com/shorts/QQiAwGy6wF0?si=T41m9A-OubXqXo7u
Геймдизайн — это мастерство создания интересных правил. Процентное снижение урона ощущается абстрактно: цель «стала не такой пробиваемой», но убивать её вы будете той же ротацией скиллов — как в большинстве RPG.
Flat Damage Reduction работает иначе: она вынуждает менять оружие. Против брони эффективно только то, что наносит максимум урона за один выстрел — так появляется тактический слой, и Overwatch поощряет смену героев по ходу матча, а не игру одним персонажем.
Это же убивает bunker composition — связку вроде Orisa + Bastion + Baptiste, где щит Orisa на низком кулдауне прикрывал высокий урон Bastion, а команда «окапывалась» на точке, выкашивая всех в зоне поражения. После изменения брони и лимита «один танк на команду» тактика перестала работать.
Заодно фиксированная броня обесценивает спам-тактики: быстрое оружие с низким уроном за выстрел становится против неё бесполезным — стрелять очередью в щит Райнхардта бессмысленно. Чтобы убить танка, нужно целиться в голову медленными, точными, скилл-ориентированными выстрелами.
#overwatch #devmath #геймдизайн #gamedesign #игры
https://youtube.com/shorts/QQiAwGy6wF0?si=T41m9A-OubXqXo7u
Геймдизайн — это мастерство создания интересных правил. Процентное снижение урона ощущается абстрактно: цель «стала не такой пробиваемой», но убивать её вы будете той же ротацией скиллов — как в большинстве RPG.
Flat Damage Reduction работает иначе: она вынуждает менять оружие. Против брони эффективно только то, что наносит максимум урона за один выстрел — так появляется тактический слой, и Overwatch поощряет смену героев по ходу матча, а не игру одним персонажем.
Это же убивает bunker composition — связку вроде Orisa + Bastion + Baptiste, где щит Orisa на низком кулдауне прикрывал высокий урон Bastion, а команда «окапывалась» на точке, выкашивая всех в зоне поражения. После изменения брони и лимита «один танк на команду» тактика перестала работать.
Заодно фиксированная броня обесценивает спам-тактики: быстрое оружие с низким уроном за выстрел становится против неё бесполезным — стрелять очередью в щит Райнхардта бессмысленно. Чтобы убить танка, нужно целиться в голову медленными, точными, скилл-ориентированными выстрелами.
#overwatch #devmath #геймдизайн #gamedesign #игры
🔥3
Путь кадра — Финал
Я решил больше писать про геймдизайн со следующей недели. Но нужно же добить серию статей про рендер, чтобы не бросать на пол пути. Поэтому сегодня целых 3 статьи.
https://dev-math.ru/articles/postfx/ — Постобработка
https://dev-math.ru/articles/gi/ — Глобальное Освещение
https://dev-math.ru/articles/raytracing/ — Трассировка Лучей
И это уже выглядит как завершенная история, где я охватил все ключевые темы. Материал получился сложным, на одну статью нужно минут сорок, а всего их 13. И ещё там много прикольных дополнительных ссылок. Но для меня цель материал закрыл. Это последовательная история о том, как работает современный реалтайм рендер. Со ссылками на все нужные дополнительные материалы. И, пусть и с усилиями, они позволяют погрузится в тему рендеринга и +- понять, как оно вообще работает.
Материалы по геймдизайну попробую структурировать по проще, кусками поменьше, чтобы информация лучше и проще воспринималась. Там у меня много идей, в общем на следующей неделе будет много новинок.
#devmath #render
Я решил больше писать про геймдизайн со следующей недели. Но нужно же добить серию статей про рендер, чтобы не бросать на пол пути. Поэтому сегодня целых 3 статьи.
https://dev-math.ru/articles/postfx/ — Постобработка
https://dev-math.ru/articles/gi/ — Глобальное Освещение
https://dev-math.ru/articles/raytracing/ — Трассировка Лучей
И это уже выглядит как завершенная история, где я охватил все ключевые темы. Материал получился сложным, на одну статью нужно минут сорок, а всего их 13. И ещё там много прикольных дополнительных ссылок. Но для меня цель материал закрыл. Это последовательная история о том, как работает современный реалтайм рендер. Со ссылками на все нужные дополнительные материалы. И, пусть и с усилиями, они позволяют погрузится в тему рендеринга и +- понять, как оно вообще работает.
Материалы по геймдизайну попробую структурировать по проще, кусками поменьше, чтобы информация лучше и проще воспринималась. Там у меня много идей, в общем на следующей неделе будет много новинок.
#devmath #render
🔥9❤2
Подарите игроку первые уровни
https://youtube.com/shorts/hpCVembRSS4?si=0sSkQc-7dWArahXz
Новый ролик уже на канале. Про Эффект Подаренного Прогресса и почему в начале игры лучше дарить игроку уровни.
#devmath #gamedesign #progression
https://youtube.com/shorts/hpCVembRSS4?si=0sSkQc-7dWArahXz
Новый ролик уже на канале. Про Эффект Подаренного Прогресса и почему в начале игры лучше дарить игроку уровни.
#devmath #gamedesign #progression
YouTube
Уровни для игроков в подарок #devmath #gamedesign #прогрессия
Уровни со 2 по 5 ничего не значат в балансе — их лучше подарить игр...
🔥3
А начнём мы с Roguelike
Не хочется назначать временные рамки этой теме. Типа "разберем рогалики за неделю". Там есть о чём поболтать и много. Поэтому — как пойдет.
Лично я обожаю рогалики. Monster Train, Balatro и многие другие. А сколько всего я прошел в дороге куда-то. По сути у меня два любимых жанра стелс экшены и рогалики. И хочется начать именно со второго, так как я хочу разбирать вещи, которые сможет сделать человек в одиночку. "Как сделать интересный ААА?" — это отличный вопрос, но толку его разбирать, если в среднем ни у кого нет бюджетов делать ААА. А даже автор одиночка с современными инструментами может сделать действительно крутой рогалик (или более простые жанры до которых мы ещё доберемся).
Театр начинается с вешалки, а разговор о любом жанре будто бы хочется начать с истории.
Что любопытно до Rogue уже существовал данжен-краулер с похожими идеями — Beneath Apple Manor, которую Дон Уорт написал для Apple II и выпустил в 1978 году, на два года раньше Rogue. Но она была не такой известной, поэтому начало своё официально жанр берет с легендарной Rogue. Отсюда и название.
Игру создали Майкл Той и Гленн Уичман в Калифорнийском университете в Санта-Крузе, напрямую вдохновляясь Dungeons & Dragons и текстовым квестом Adventure. К проекту подключился Кен Арнольд, который незадолго до этого в Беркли написал библиотеку curses — набор инструментов для управления курсором на экране терминала, что и позволило рисовать подобие графики символами. Четвёртым в титрах значится Джон Лейн.
Rogue сразу задал формулу: процедурно генерируемые подземелья, необратимая смерть, пошаговый бой и всё это — псевдографикой ASCII, а целью было спуститься в подземелье за Амулетом Йендора, двигаясь по клетчатой сетке. Игру бесплатно раздавали вместе с университетским Unix-дистрибутивом BSD, и она мгновенно расползлась по компьютерным классам — по подсчётам самих авторов, суммарно на неё потратили около полутора миллиардов долларов машинного времени. С 1984 года те же Той, Уичман и Лейн через собственную компанию A.I. Design и при поддержке издателя Epyx выпустили и коммерческие версии — для Amiga, Atari ST, Macintosh, DOS и других систем.
В общем Roguelike (рогалик) — жанр игр с процедурно генерируемым миром и необратимой смертью персонажа: погиб — начинаешь новый забег с нуля в заново собранном мире, без возможности загрузить сохранение. А как эта формула становится интересной мы разберем дальше.
#devmath #история #gamedesign
Не хочется назначать временные рамки этой теме. Типа "разберем рогалики за неделю". Там есть о чём поболтать и много. Поэтому — как пойдет.
Лично я обожаю рогалики. Monster Train, Balatro и многие другие. А сколько всего я прошел в дороге куда-то. По сути у меня два любимых жанра стелс экшены и рогалики. И хочется начать именно со второго, так как я хочу разбирать вещи, которые сможет сделать человек в одиночку. "Как сделать интересный ААА?" — это отличный вопрос, но толку его разбирать, если в среднем ни у кого нет бюджетов делать ААА. А даже автор одиночка с современными инструментами может сделать действительно крутой рогалик (или более простые жанры до которых мы ещё доберемся).
Театр начинается с вешалки, а разговор о любом жанре будто бы хочется начать с истории.
Что любопытно до Rogue уже существовал данжен-краулер с похожими идеями — Beneath Apple Manor, которую Дон Уорт написал для Apple II и выпустил в 1978 году, на два года раньше Rogue. Но она была не такой известной, поэтому начало своё официально жанр берет с легендарной Rogue. Отсюда и название.
Игру создали Майкл Той и Гленн Уичман в Калифорнийском университете в Санта-Крузе, напрямую вдохновляясь Dungeons & Dragons и текстовым квестом Adventure. К проекту подключился Кен Арнольд, который незадолго до этого в Беркли написал библиотеку curses — набор инструментов для управления курсором на экране терминала, что и позволило рисовать подобие графики символами. Четвёртым в титрах значится Джон Лейн.
Rogue сразу задал формулу: процедурно генерируемые подземелья, необратимая смерть, пошаговый бой и всё это — псевдографикой ASCII, а целью было спуститься в подземелье за Амулетом Йендора, двигаясь по клетчатой сетке. Игру бесплатно раздавали вместе с университетским Unix-дистрибутивом BSD, и она мгновенно расползлась по компьютерным классам — по подсчётам самих авторов, суммарно на неё потратили около полутора миллиардов долларов машинного времени. С 1984 года те же Той, Уичман и Лейн через собственную компанию A.I. Design и при поддержке издателя Epyx выпустили и коммерческие версии — для Amiga, Atari ST, Macintosh, DOS и других систем.
В общем Roguelike (рогалик) — жанр игр с процедурно генерируемым миром и необратимой смертью персонажа: погиб — начинаешь новый забег с нуля в заново собранном мире, без возможности загрузить сохранение. А как эта формула становится интересной мы разберем дальше.
#devmath #история #gamedesign
🔥6❤1