|
|
|
Канал Игры Мечты: «Давайте делиться наработками» |
|
|
Sh.Tac. 151 EGP
Рейтинг канала: 5(108) Репутация: 14 Сообщения: 1426
Зарегистрирован: 27.07.2005 |
|
SpaceJack : |
получается что игрок с большим разрешением экрана оказывается в более выгодном положении
|
а пусть его, зря что-ли хороший монитор покупал?
вы ещё искусственный пинг начните добавлять для сети
_________________ This is what you get ...
(c) Radiohead |
|
|
Romale 88 EGP
Репутация: 17 Сообщения: 276
Зарегистрирован: 22.02.2007 |
|
Shirson : |
хотя-бы, описываются способы и методы, подводные камни, способы их решения и пр.
|
Всё тут: ссылка
|
|
|
Shirson 1605 EGP
Рейтинг канала: 7(626) Репутация: 219 Сообщения: 16511 Откуда: 79°W 44°N Зарегистрирован: 29.01.2002 |
|
Это ваши завалявшиеся начинания и наработки?
_________________ У меня бисера не доxеpа.
Последний раз редактировалось: Shirson (01:43 05-05-2013), всего редактировалось 1 раз |
|
|
Guest 2075 EGP
Рейтинг канала: 5(167) Репутация: 376 Сообщения: 27975 Откуда: Моск. Зарегистрирован: 12.10.2004 |
|
SpaceJack : |
Я собственно так и делал, вопрос был не о технической реализации, а сточки зрения геймдизайна.
Просто получается что игрок с большим разрешением экрана оказывается в более выгодном положении.
Вот например в StarCraft, HUD всегда одинаково заслоняет игровую область, во freelancer, вроде как так же было сделано, а в иксах или звездных волках наоборот.
|
Проблема вывода и места:
- если выводим пиксель-в-пиксель - нам достаточно одного набора элементов интерфейса и одного набора растеризованных шрифтов (разного размера, но штук 6 всего). И если мы их вяжем к углам и сторонам экрана - они, соответственно, расползаются с увеличением разрешения. Но мы занимаем всего единицы альбомов текстур, то есть несколько крупных текстур в памяти, плюс можем батчить вывод всего вплоть до тех же единиц drawcalls (равного количеству текстур).
- если выводим с масштабированием - нам нужно либо несколько наборов одних и тех же элементов с разным размером, плюс масштабирование между ними (например - мы используем два набора текстур интерфейса для iPad2 и iPad3, патамушто ретина, а выводим мы 1:1. На Андроиде будет мрак), либо тупое масштабирование, что даст замыленные текстуры на больших экранах. Плюс те 6 размеров шрифтов ещё столько же раз повторить, чтобы выводить увеличенные тексты. В любом случае мы вынуждены будем включать в игру целую пачку текстур, которые никто никогда не увидит.
добавлено спустя 1 минуту:
Игрок с большим разрешением экрана окажется в менее выгодном положении. Он будет видеть меньше элементов интерфейса одновременно, они будут мельче размером. При этом фрустум камеры остаётся прежним и разрешение текстур сцены - тоже.
добавлено спустя 52 секунды:
Если у вас HUD предназначен для того, чтобы ЗАКРЫВАТЬ ОТ ИГРОКА СЦЕНУ - у вас что-то не так в отделе дизайна интерфейсов...
_________________ Трещит земля как пустой орех
Как щепка трещит броня
Последний раз редактировалось: Guest (04:31 05-05-2013), всего редактировалось 2 раз(а) |
|
|
Jurec 348 EGP
Рейтинг канала: 4(76) Репутация: 102 Сообщения: 1441 Заблокирован Откуда: Seattle Зарегистрирован: 25.02.2006 |
|
Еще как вариант - рендер текста методом Signed Distance Field Text Rendering.
Его можно масштабировать как душе угодно
_________________ MOV topka, C++ |
|
|
SpaceJack 54 EGP
Рейтинг канала: 1(7) Репутация: 3 Сообщения: 26
Зарегистрирован: 20.03.2013 |
|
Guest : |
Игрок с большим разрешением экрана окажется в менее выгодном положении. Он будет видеть меньше элементов интерфейса одновременно, они будут мельче размером.
|
Это только если интерфейс интерактивный, по которому надо щёлкать мышкой или пальцем на тачскрине.
Нет ну возможен конечно еще вариант когда изображение выводится на 3 монитора и чтобы увидеть что-то в правом нижнем углу надо крутить головой.
Но это крайний случай и затачивать интерфейс под 3.5 игроков в ущерб всем остальным неразумно.
Guest : |
Если у вас HUD предназначен для того, чтобы ЗАКРЫВАТЬ ОТ ИГРОКА СЦЕНУ - у вас что-то не так в отделе дизайна интерфейсов...
|
Проблем в отделе нет, по причине отсутствия самого отдела.
К чему ирония? Интерфейс всегда закрывает часть сцены.
|
|
|
DIMOSUS.X 995 EGP
Рейтинг канала: 4(67) Репутация: 188 Сообщения: 3252 Откуда: Vilnius/Minsk Зарегистрирован: 06.08.2008 |
|
Делится, так делится.
Реализовал у себя новый подход к тесту видимости точки пространства на экране. Тест нужен для рисования линзовых эффектов.
Раньше выводил в тестируемой точке невидимый кубик и считал сколько его пикселей на экране отрисуется. Но видеокарта делает это весьма не спешно и может вернуть результат только через несколько, а то и десяток кадров. Да и доставать данные из GPU удовольствие дорогое.
По этому пошел по другому пути. Выполняю рендер в таргет высотой один пиксель. Шейдеру, который рисует в этот таргет, передаются позиции в пространстве и карта глубины. Шейдер пересчитывает позиции в экранное пространство и делает несколько выборок из карты глубины (что бы было не так ступенчато). Полученную текстуру с результатами и индексом результата в текстуре передаю спрайтам линзовых эффектов.
Сейчас использую несколько текстур 32х1 пиксель. Если количество запросов видимости превышает доступное количество места в текстурах, то удваиваю количество текстур. В планах перейти к одной текстуре массиву — тогда можно будет батчить сразу все линзовые эффекты.
В шейдере теста делаю 37 выборок для каждой позиции. Может показаться что это много, но учитывая что рендерится текстура размером 32х1 пиксель, получается мизерная нагрузка на GPU.
В общем как-то так
_________________ Даже ежики ежиков могут с трудом,
Иначе бы ежики были кругом.
Последний раз редактировалось: DIMOSUS.X (10:37 07-05-2013), всего редактировалось 1 раз |
|
|
Guest 2075 EGP
Рейтинг канала: 5(167) Репутация: 376 Сообщения: 27975 Откуда: Моск. Зарегистрирован: 12.10.2004 |
|
SpaceJack : |
К чему ирония? Интерфейс всегда закрывает часть сцены.
|
Это не ирония. Если HUD мешает настолько, что у игроков, у которых он всего лишь расползается по краям экрана, появляется преимущество - это неправильный HUD. HUD должен помогать, показывая кртически важную информацию, а не заслонять обзор.
HUD можно делать полупрозрачным.
Также, в случае полупрозрачных текстур, а также текстур со сглаженными альфой краями, очень полезной оказывается premultiplied alpha.
_________________ Трещит земля как пустой орех
Как щепка трещит броня |
|
|
Guest 2075 EGP
Рейтинг канала: 5(167) Репутация: 376 Сообщения: 27975 Откуда: Моск. Зарегистрирован: 12.10.2004 |
|
DIMOSUS.X : |
Реализовал у себя новый подход к тесту видимости точки пространства на экране. Тест нужен для рисования линзовых эффектов.
Раньше выводил в тестируемой точке невидимый кубик и считал сколько его пикселей на экране отрисуется. Но видеокарта делает это весьма не спешно и может вернуть результат только через несколько, а то и десяток кадров. Да и доставать данные из GPU удовольствие дорогое.
По этому пошел по другому пути. Выполняю рендер в таргет высотой один пиксель. Шейдеру, который рисует в этот таргет, передаются позиции в пространстве и карта глубины. Шейдер пересчитывает позиции в экранное пространство и делает несколько выборок из карты глубины (что бы было не так ступенчато). Полученную текстуру с результатами и индексом результата в текстуре передаю спрайтам линзовых эффектов.
|
Я правильно понимаю, что ты тестируешь не точку, а некоторый объем? Ибо для тестирования точки ИМХО проще луч в/из камеры пустить...
_________________ Трещит земля как пустой орех
Как щепка трещит броня |
|
|
DIMOSUS.X 995 EGP
Рейтинг канала: 4(67) Репутация: 188 Сообщения: 3252 Откуда: Vilnius/Minsk Зарегистрирован: 06.08.2008 |
|
Guest : |
Я правильно понимаю, что ты тестируешь не точку, а некоторый объем?
|
Я тестирую область на экране, почти 7х7 пикселей.
Guest : |
Ибо для тестирования точки ИМХО проще луч в/из камеры пустить...
|
Хм, ну вот у меня при 10 000 проверках за один кадр, фпс проседает с 470, до 450 — думаю проверка лучом нервно курит в сторонке
добавлено спустя 34 минуты:
Хотя я вот думаю — может поступить еще проще? Рендерить спрайты линзовых эффектов как набор точек. В вертексном шейдере для этой единственной точки проверять видимость по карте глубины, а затем в геометрическом шейдере генерировать из этой точки полноценный спрайт.
В теории должно работать еще быстрее...
_________________ Даже ежики ежиков могут с трудом,
Иначе бы ежики были кругом.
Последний раз редактировалось: DIMOSUS.X (20:22 07-05-2013), всего редактировалось 2 раз(а) |
|
|
Guest 2075 EGP
Рейтинг канала: 5(167) Репутация: 376 Сообщения: 27975 Откуда: Моск. Зарегистрирован: 12.10.2004 |
|
DIMOSUS.X : |
Хотя я вот думаю — может поступить еще проще? Рендерить спрайты линзовых эффектов как набор точек. В вертексном шейдере для этой единственной точки проверять видимость по карте глубины, а затем в геометрическом шейдере генерировать из этой точки полноценный спрайт.
В теории должно работать еще быстрее...
|
Вообще, если линзовые эффекты рисовать от лампочек, т.е. тел не единичного размера - лучше бы делать плавное загораживание/затухание эффектов в зависимости от степени перекрытия тела. Ну, как естественным образом получается при классическом блуме.
DIMOSUS.X : |
Хм, ну вот у меня при 10 000 проверках за один кадр, фпс проседает с 470, до 450 — думаю проверка лучом нервно курит в сторонке
|
Ну, тащемта да Столько лучей кастовать на ЦПУ за кадр - ЦПУ повесится, ему еще есть чем заняться...
Вообще адъ, конечно - видеокарты давно обогнали по вычислительной мощности даже кластерные системы...
За наработку спасибо, интересная штука не только для линзовых эффектов.
добавлено спустя 59 секунд:
И, кстати, что у тебя происходит, если источник света перегораживает полупрозрачный объект?
_________________ Трещит земля как пустой орех
Как щепка трещит броня
Последний раз редактировалось: Guest (16:21 08-05-2013), всего редактировалось 1 раз |
|
|
DIMOSUS.X 995 EGP
Рейтинг канала: 4(67) Репутация: 188 Сообщения: 3252 Откуда: Vilnius/Minsk Зарегистрирован: 06.08.2008 |
|
Думаю сделать два спрайта. Один классический, который просто отсекается буфером глубины — для симуляции непосредственно самого яркого объекта. Его будет размазывать HDR блумом. И второй — спрайт линзового эффекта, с проверкой перекрытия. Думаю так будет оптимально.
Guest : |
И, кстати, что у тебя происходит, если источник света перегораживает полупрозрачный объект?
|
А не будет их. Меньше полупрозрачных объектов — меньше проблем
DIMOSUS.X : |
Хотя я вот думаю — может поступить еще проще? Рендерить спрайты линзовых эффектов как набор точек. В вертексном шейдере для этой единственной точки проверять видимость по карте глубины, а затем в геометрическом шейдере генерировать из этой точки полноценный спрайт.
В теории должно работать еще быстрее...
|
Кстати вчера запилил. И это да же работает
Правда я пока не батчу линзовые эффекты, по этому фпс ниже плинтуса — для каждого такого линзового эффекта каждый кадр обновляется свой отдельный буффер из одной вершины...
Но в принципе прикрутить сюда батчинг — дело одного вечера
добавлено спустя 2 минуты:
А вообще геометрические шейдеры это очень удобная штука
_________________ Даже ежики ежиков могут с трудом,
Иначе бы ежики были кругом.
Последний раз редактировалось: DIMOSUS.X (16:34 08-05-2013), всего редактировалось 1 раз |
|
|
DIMOSUS.X 995 EGP
Рейтинг канала: 4(67) Репутация: 188 Сообщения: 3252 Откуда: Vilnius/Minsk Зарегистрирован: 06.08.2008 |
|
Запилил батчинг — 100 000 линзовых эффектов на экране, для каждого индивидуально просчитывается видимость. FPS ~ 50
добавлено спустя 5 минут:
То есть можно смело прикручивать линзовые эффекты ко всем подряд снарядам, ракетам и да же крупным звездам
_________________ Даже ежики ежиков могут с трудом,
Иначе бы ежики были кругом.
Последний раз редактировалось: DIMOSUS.X (13:03 09-05-2013), всего редактировалось 2 раз(а) |
|
|
Jurec 348 EGP
Рейтинг канала: 4(76) Репутация: 102 Сообщения: 1441 Заблокирован Откуда: Seattle Зарегистрирован: 25.02.2006 |
|
DIMOSUS.X : |
100 000 линзовых эффектов на экране, для каждого индивидуально просчитывается видимость. FPS ~ 50
|
А если не выводить их на экран - то сколько FPS? Чтобы убрать из нагрузки fillrate.
_________________ MOV topka, C++ |
|
|
DIMOSUS.X 995 EGP
Рейтинг канала: 4(67) Репутация: 188 Сообщения: 3252 Откуда: Vilnius/Minsk Зарегистрирован: 06.08.2008 |
|
Столькоже. GPU при таком раскладе загружен всего на 1/5
Все упирается в процессор. Отсортировать по текстурам и записать в буффер 100к вертексов - задача не быстрая...
добавлено спустя 1 минуту:
P.S.
i7-3770K@4.5gh, GTX680
_________________ Даже ежики ежиков могут с трудом,
Иначе бы ежики были кругом.
Последний раз редактировалось: DIMOSUS.X (15:59 09-05-2013), всего редактировалось 1 раз |
|
|
DIMOSUS.X 995 EGP
Рейтинг канала: 4(67) Репутация: 188 Сообщения: 3252 Откуда: Vilnius/Minsk Зарегистрирован: 06.08.2008 |
|
Сделал Tone Mapping и своеобразный HDR Motion Blur.
Если кому интересны технические подробности, то могу рассказать
_________________ Даже ежики ежиков могут с трудом,
Иначе бы ежики были кругом. |
|
|
Jurec 348 EGP
Рейтинг канала: 4(76) Репутация: 102 Сообщения: 1441 Заблокирован Откуда: Seattle Зарегистрирован: 25.02.2006 |
|
Рассказывай) Какой именно Tone Mapping делал и чего это за HDR Motion Blur?
_________________ MOV topka, C++ |
|
|
DIMOSUS.X 995 EGP
Рейтинг канала: 4(67) Репутация: 188 Сообщения: 3252 Откуда: Vilnius/Minsk Зарегистрирован: 06.08.2008 |
|
Уехал на КРИ. Поделюсь тонкостями наработок когда вернусь
_________________ Даже ежики ежиков могут с трудом,
Иначе бы ежики были кругом. |
|
|
Magistr_AVSH 605 EGP
Рейтинг канала: 2(16) Репутация: 119 Сообщения: 2705 Откуда: Росс 154 - планета Мерлин. Зарегистрирован: 26.12.2009 |
|
Фотоотчет обязателен
_________________ Добрый и сытый кот. |
|
|
DIMOSUS.X 995 EGP
Рейтинг канала: 4(67) Репутация: 188 Сообщения: 3252 Откуда: Vilnius/Minsk Зарегистрирован: 06.08.2008 |
|
Пойдет?
Cкрытый текст (кликните здесь для просмотра)
|
_________________ Даже ежики ежиков могут с трудом,
Иначе бы ежики были кругом.
Последний раз редактировалось: DIMOSUS.X (21:19 18-05-2013), всего редактировалось 1 раз |
|
|
|
|
|
Канал Игры Мечты: «Давайте делиться наработками» |
|