Size: a a a

RU Rust GameDev — русскоговорящее сообщество

2020 December 04

R

Roman in RU Rust GameDev — русскоговорящее сообщество
Достаточно знать что в фреймбуффер все пойдет как если бы выполнялось в порядке вызова drawcall-ов, в внутри drawcall-а в порядке полигонов и буфере
источник

KK

Kirill (Cykooz) Kuzm... in RU Rust GameDev — русскоговорящее сообщество
Roman
А че тут знать то? Сортируй по слоям и рендери. Никакого буфера глубины не надо
Зачем сортировать на CPU, если это видюха сама умеет?
источник

MS

Mikola Summer Duck in RU Rust GameDev — русскоговорящее сообщество
Kirill (Cykooz) Kuzminykh
Зачем сортировать на CPU, если это видюха сама умеет?
Видюха не умеет сортировать прозрачность.
источник

MS

Mikola Summer Duck in RU Rust GameDev — русскоговорящее сообщество
Смотри пдфки про Order Independent Transparency от нвдида, и то там не общий случай.
источник

R

Roman in RU Rust GameDev — русскоговорящее сообщество
Если есть полупрозрачность, то надо на CPU
источник

MS

Mikola Summer Duck in RU Rust GameDev — русскоговорящее сообщество
Буффер глубины надо кстати, это уменьшает филлрейт.
источник

R

Roman in RU Rust GameDev — русскоговорящее сообщество
Тогда рисовать в обратном порядке
источник

R

Roman in RU Rust GameDev — русскоговорящее сообщество
Или depth-prepass делать
источник

MS

Mikola Summer Duck in RU Rust GameDev — русскоговорящее сообщество
Ну да
источник

MS

Mikola Summer Duck in RU Rust GameDev — русскоговорящее сообщество
Я ж говорю надо
источник

R

Roman in RU Rust GameDev — русскоговорящее сообщество
Но опять же, только без полупрозрачности
источник

MS

Mikola Summer Duck in RU Rust GameDev — русскоговорящее сообщество
Да
источник

R

Roman in RU Rust GameDev — русскоговорящее сообщество
А если у тебя кругом полупрозрачность, то не парься и рисуй снизу вверх
источник

KK

Kirill (Cykooz) Kuzm... in RU Rust GameDev — русскоговорящее сообщество
Roman
И интами тогда уж оперировать, не флотами
Это кстати тоже отдельная попа-боль по началу. Вроде ты собрался делать пиксельную 2d игру, но игровой движок почему-то оперирует float-ами и у него ещё есть какой-то антиалисинг. "Нахрена оно мне" - думаешь ты. Но ни куда не деться - там везде эти float-ы торчат.
При этом приходится иногда оперировать половинными координатами, что бы пиксели текусты попали ровно в пиксели экрана.
источник

p

polunin.ai in RU Rust GameDev — русскоговорящее сообщество
Kirill (Cykooz) Kuzminykh
Это кстати тоже отдельная попа-боль по началу. Вроде ты собрался делать пиксельную 2d игру, но игровой движок почему-то оперирует float-ами и у него ещё есть какой-то антиалисинг. "Нахрена оно мне" - думаешь ты. Но ни куда не деться - там везде эти float-ы торчат.
При этом приходится иногда оперировать половинными координатами, что бы пиксели текусты попали ровно в пиксели экрана.
ну оперируй физическими пикселями вместо логических
источник

MS

Mikola Summer Duck in RU Rust GameDev — русскоговорящее сообщество
Roman
А если у тебя кругом полупрозрачность, то не парься и рисуй снизу вверх
Я делал в два пасса, сначала рисуем всё непрозрачное снизу вверх и пишем в глубину, затем перестаём писать и рисуем всё прозрачное с тестом глубины.
источник

KK

Kirill (Cykooz) Kuzm... in RU Rust GameDev — русскоговорящее сообщество
polunin.ai
ну оперируй физическими пикселями вместо логических
И как это делать, если там внутри всё на 3d полигонах, текстурах и шейдерах?
источник

MS

Mikola Summer Duck in RU Rust GameDev — русскоговорящее сообщество
Kirill (Cykooz) Kuzminykh
И как это делать, если там внутри всё на 3d полигонах, текстурах и шейдерах?
Там всё не на 3д-полигонах.
источник

KK

Kirill (Cykooz) Kuzm... in RU Rust GameDev — русскоговорящее сообщество
Хотя тут наверное дело в сырых реализациях разных штук для игровых движков. Начиная от того что origin-point у тех же спрайтов находится в середине спрайта, а не в его углу. И продолжая тем что рисование произвольного прямоугольника делается как шейдер "обводка" для полигона. И центры "пикселей" этой обводки делаются ровно по границе прямоугольника и при выводе на экран попадают в промежуток между фигическими пикселями. Приходится исходный полигон уменьшать в размерах на 0.5 пикселя с каждой стороны.
источник

KK

Kirill (Cykooz) Kuzm... in RU Rust GameDev — русскоговорящее сообщество
Что бы всего этого не было, надо видимо нормальный 2d фреймворк, который всё это учитывает.
источник