ФлеймФорумИгры

Quake (3 стр)

Страницы: 1 2 3 4 5149 Следующая »
#30
4:49, 9 дек 2013

TarasB
> TarasB
Дык, а ты на чем играешь на Celeron 600Mhz? =)

Запускал на днях Quake2 на Flybook с сенсорным экраном 1024x600, надо наверное установить на нормальную машинку и в новогодние праздники поразвлечься! ^_^

#31
10:24, 9 дек 2013

SkAT
> Дык, а ты на чем играешь на Celeron 600Mhz? =)
Да, а что, не должно идти?

#32
12:27, 9 дек 2013

Давайте поговорим про светокарты в кваке.
Вот есть стенка.
На ней есть текстура материи и текстура света.
Правильно ли я понимаю, что смешивать их на ходу, выполняя при этом размытие текстуры света - это слишком дорого?

То есть наверняка там заранее вычисляется внешний вид текстур, попавших в кадр, и эти текстуры где-то кэшируются.
А ещё эти текстуры не меняют внешний вид, когда предметы движутся, и иногда это заметно, что стена сдвинулась, но осталась теестественно тёмной или неестественно светлой. Таковы ограничения движка.

Ещё остаётся вопрос про монстров. Для них уже кешировать не получится, потому что они движутся. То есть для них уже цвет затеняется на ходу? И вычислять тень по карте уже не получается, то есть весь монстр затеняется одинаково. А как считается, насколько именно надо затенить этого монстра?

#33
12:33, 9 дек 2013

TarasB
Текстуры на стены накладываются без фильтрации, но лайтмапы фильтруюца, иначе картинка была бы УГ. Смешивать там ничего не надо, лайтма задаёт, насколько нужно сдвинуть индекс цвета в этой палитре в сторону тёмных оттенков:
Qpalette | Quake
Кеширование - не слышал про такое, да и маловероятно это. Не кадры же кешировать?
Освещение монстра берётся из лайтмапы ближайшей поверхности ( наиболее часто, на той, на которой он стоит ).

#34
12:38, 9 дек 2013

TarasB
> там заранее вычисляется внешний вид текстур, попавших в кадр
Да, в мультиплеере это происходит за время до первого спавна.

#35
12:40, 9 дек 2013

Panzerschrek[CN]
> но лайтмапы фильтруюца

Ну я и спрашиваю - неужели это делается каждый кадр? Это же пипец производительности.

Panzerschrek[CN]
> лайтма задаёт, насколько нужно сдвинуть индекс цвета в этой палитре в сторону
> тёмных оттенков:

А вправо сдвигать или влево? Видно же, что так тупо не проканает.

Кстати надо бы попробовать посмотреть, как удет выглядеть Бульба в кваковской палитре.

Не, там явно по таблице берётся. Часто видно, как белая стена становится тёмно-красной вдалеке от лампы, например.

Panzerschrek[CN]
> Кеширование - не слышал про такое, да и маловероятно это. Не кадры же
> кешировать?

Кешировать текстуру стены с наложенной светокартой. Чтобы не накладывать и не фильтровать каждый кадр.

Panzerschrek[CN]
> Освещение монстра берётся из лайтмапы ближайшей поверхности ( наиболее часто,
> на той, на которой он стоит ).

Похоже на то.

#36
12:44, 9 дек 2013

TarasB
Стен в кадре может быть много. Ещё, чтобы выглядело нормально, нужно кэшировать в высоком разрешении. Так что это слишком сложно и тяжело, уж проще проинтерполировать значения лайтмапы.
А вообще, поищи обзоры движка\почитай исходники, сразу стане понятно.

#37
12:53, 9 дек 2013

TarasB
> Давайте поговорим про светокарты в кваке.
http://www.bluesnews.com/abrash/

#38
12:53, 9 дек 2013

Panzerschrek[CN]
> Ещё, чтобы выглядело нормально, нужно кэшировать в высоком разрешении.

Кэшировать надо ровно в разрешении родной текстуры стены.

Panzerschrek[CN]
> Стен в кадре может быть много.

Дело не в числе стен, а в суммарном числе текселей на стенах, попавших в кадр.
Очевидно, что оно меньше, чем число текселей на карте, а ведь для каждых 16 текселей (4х4) в файле карты хранится значение от 0 до 63.
Можно оценить размер требуемой памяти, зная размер карты.

Panzerschrek[CN]
> уж проще проинтерполировать значения лайтмапы.

А можешь показать, как код примерно должен выглядеть? Что-то ничего, работающего с адекватной скоростью, в голову не приходит.

Тётя Зюзя
> между тем, у движка сорцы открыты.
ты их читал? там главный цикл заливки в ассемблере

#39
12:55, 9 дек 2013

Лайтмапы накладывались как мультитекстурирование. Без кеширований, да и как кешировать попиксельно, губа завернется. Все кроме стен кстати рисовалось другим алгоритмом, с плохой но быстрой перспективной коррекцией.

#40
12:55, 9 дек 2013

Spartan
там английский, у меня мозг сразу закипает
но слово "текстуре кешинг" я успел разглядеть раньше, чем мозг вскипел
хехе, как и предполагалось

=A=L=X=
> Все кроме стен кстати рисовалось другим алгоритмом, с плохой но быстрой
> перспективной коррекцией.
Стены тоже рисуются афинными отрезками. Только длина отрезка для стен 8 пикселей, а для монстра - вся линия.

#41
14:56, 9 дек 2013

Именно с этой игры я заинтересовался тем, как это сделано))

#42
15:28, 9 дек 2013

TarasB
> но слово "текстуре кешинг" я успел разглядеть раньше, чем мозг вскипел
> хехе, как и предполагалось

Жесть, жесть, вот такого я не предполагал даже, а оно вот оно как.
Если вкратце.
Суть в том что рендер двухпроходный.
1. В первом проходе для каждого видимого полигона строится его активная текстура. Эта текстура характерна тем что в неё запекаются и освещение в том числе и если там идет тайлинг - то происходит "детайлизация" - столько раз сколько оригинальная текстура повторяется она действительно записывается с повторениями в то что там называется "surface".
2. На втором проходе полигоны растеризуются как просто текстурированные полигоны причём текстурами уже служат эти "surface", а не оригинальные текстуры.
Первая оптимизация: если активная текстура (sufrace) у полигона в очереди на отрисовку уже построена то её перестраивать не надо и можно сразу переходить к второму проходу быстро-поносному.
Вторая оптимизация: мипмапы - она собственно и делает это всё возможным, т.к. суммарный размер активных текстур не должен быть сильно больше чем размер фреймбуфера экрана собственно, иначе смысл затеи исчезающе мал.
Неявная, но важная оптимизация: т.к. построитель активных текстур и растеризатор разделились и стали очень простыми, они очень хорошо пролезли в регистровые оптимизации.
Подводная оптимизация: декали стало проще реализовывать как этап откинутый в построитель активных текстур и по сути декали вообще не несут пенальти растеризатору если полигон не выходит из кадра.

#43
15:44, 9 дек 2013

=A=L=X=
Вот!
И это намного лучше, чем в реальном времени заниматься интерполяциями.
На интерполяциях такой ФПС получить невозможно вообще в принципе.
Про то, что строится только текущий мип - это я не додумался, да.

Интересно, а какой у него аллокатор для сюрфейсов?

#44
15:50, 9 дек 2013

TarasB
> Ещё остаётся вопрос про монстров.
Абраш пишет про http://ru.wikipedia.org/wiki/Метод_тонирования_Гуро

Страницы: 1 2 3 4 5149 Следующая »
ФлеймФорумИгры