Войти
ПрограммированиеФорумГрафика

Тестирование софт рендера Quake.

Страницы: 1 2 320 21 Следующая »
#0
21:32, 28 авг. 2016

Набросал тут софтовый рендеринг для Quake 1. Сейчас интересует работоспособность на разных системах.
Для тестирования данной версии обязателен процессор с поддержкой SSE3.

Достаточно из архива положить opengl32.dll в папку с игрой (рядом с файлом glquake.exe).
Запустить игру с параметрами: glquake -window -width 640 -height 480

Запускается только в окне. Запускается с разрешением не выше 640x480 (даже без моей кривой dll игра валится на старте при более высоких разрешениях).

Что интересно для статистики: CPU, Тип(скорость) памяти, NEW GAME->console->timerefresh->значение.
Глюки/Артефакты, стабильность работы, частота и места падений. На данный момент присутствует проблема в наложении текстур при освещении.
Запустить поддержку мультитекстурирования почему то не получилось, хотя она есть.

glquake оригинальная версия glQuake .98 с поддержкой мультитекстурирования, (версия .95 не поддерживает мультитекстурирование)
q1MiniGL opengl32.dll
opengl32.dll.mt2 Многопоточный вариант, SSE3 (крайняя версия растеризатора)

Запуск:
Quake1: glquake.exe -window -width 640 -height 480
Quake2: скачанный opengl32.dll переименовать в pvrgl.dll (заменив оригинальный файл) и переключиться в игре на PowerVR OpenGL.

+ старые_версии

#1
5:37, 29 авг. 2016

Truthfinder
> Набросал тут софтовый рендеринг для Quake 1.
> Достаточно из архива положить opengl32.dll в папку с игрой (рядом с файлом
> glquake.exe).

Привет.
Ну и хардкорен же ты. Зачем писать софтрендер как свою реализацию OpenGL?
OpenGL рендер Quake как раз рассчитан на использование видеокарты. На CPU оно будет тормозить из-за большого Overdraw.
У OpenGL рендера Quake есть проблемы, приводящие к плохому качеству результирующей картинки:  приведение текстур к степеням двойки, использование палитровых текстур, отсутствие fullbright цветов, отсутствие пересвета, отсутствие warp еффекта и т. д.
В результате у твоего софтрендера качество будет хуже, чем у оригинального.

Наиболее правильный путь сделать софтрендер для Quake - модифицировать существующий.
Как сделал я, например: http://www.gamedev.ru/flame/forum/?id=183586&page=23#m337

И ещё: скинь скриншотов, посмотреть я на твой софтрендер хочу, а SSE4.1 у меня нету.

#2
7:33, 29 авг. 2016

Panzerschrek[CN]
> Привет.
> Ну и хардкорен же ты. Зачем писать софтрендер как свою реализацию OpenGL?

Just for fun. Прикольно. Было интересно что из этого получится.

> OpenGL рендер Quake как раз рассчитан на использование видеокарты. На CPU оно
> будет тормозить из-за большого Overdraw.
> У OpenGL рендера Quake есть проблемы, приводящие к плохому качеству
> результирующей картинки:  приведение текстур к степеням двойки, использование
> палитровых текстур, отсутствие fullbright цветов, отсутствие пересвета,
> отсутствие warp еффекта и т. д.
> В результате у твоего софтрендера качество будет хуже, чем у оригинального.

Я потерплю ;)
>
> Наиболее правильный путь сделать софтрендер для Quake - модифицировать
> существующий.
> Как сделал я, например:
> http://www.gamedev.ru/flame/forum/?id=183586&page=23#m337

Да, но мою opengl32.dll я могу допилить и подсунуть уже в Unreal например.
>
> И ещё: скинь скриншотов, посмотреть я на твой софтрендер хочу, а SSE4.1 у меня
> нету.

Скрины и даже youtube наверное запилю. SSSE3 max в планах. Производительность также будет расти. Сейчас важнее разрулить проблемы с запуском.
Уже сейчас видно, что даже на годной конфигурации далеко не каждый может запустить. И для меня сейчас стабильность куда важнее производительности.
У человека SSE4.1, AVX есть. По моим прикидкам проблем не должно было возникнуть, а они есть.

P.S. Я даже твой код рендер на Q2 видел. Ты крут.
Ну и повторюсь, плюс в том, что я кладу эту dll в свои мелкие проекты, и они работают в софт режиме.
Также удобно для отладки. Кладу dll, смотрю, удаляю - и вижу как рендерит видеокарта тоже самое.

#3
7:34, 29 авг. 2016

eXmire
> Access violation вот на этом моменте:

Скинь плиз glquake свой мне. У меня походу другая версия.

#4
7:45, 29 авг. 2016

Panzerschrek[CN]

Собственно я когда рендерил по одному glBegin/glEnd и просматривал кадры, я не увидел там большого overdraw. Оптимизация писалась под софт, и отсечение лишних примитивов в gl версию перетекло из их софтрендера. Поэтому даже при плохой оптимизации игра уже у меня играбельна.

Собственно в конкурсе http://www.gamedev.ru/projects/forum/?id=215709 я как раз оттачивал производительность (и да, упёрся в филрейт). Жаль, что за время конкурса у меня закончилась триал лицензия на VTune. Сейчас бы он мне ой как не помешал.

#5
7:48, 29 авг. 2016

Truthfinder
> Скинь плиз glquake свой мне. У меня походу другая версия.
glquake

#6
8:21, 29 авг. 2016

Truthfinder
> Да, но мою opengl32.dll я могу допилить и подсунуть уже в Unreal например.
А, теперь понял. Ты хочешь сделать softrender сразу для нескольких игр.

> SSSE3 max в планах.
А можно сделать определение типа процессора, и использовать ту версию SSE, что есть?

#7
8:29, 29 авг. 2016

Panzerschrek[CN]
> А можно сделать определение типа процессора, и использовать ту версию SSE, что
> есть?

Можно, просто времени больше потребует. А мне его так не хватает. Наброски уже есть, но функционал в них неполный и медленный. Допиливать ещё много.

Я и обычный то рендеринг буду переделывать. Мультитекстурирование существенно увеличит производительность. Текстуры сейчас в формате float4, переделка на ubyte4 ещё больше ускорит рендеринг. Static zlib ругается на seh, потому до сих пор есть зависимость от runtime. Тоже напрягает. И таких задач уйма.

#8
11:15, 29 авг. 2016

Truthfinder
> Panzerschrek[CN]
> > А можно сделать определение типа процессора, и использовать ту версию SSE,
> > что
> > есть?
> Можно, просто времени больше потребует.

Всё таки нельзя. Будет потеря производительности. Лучше персональная dll для определённого набора инструкций.

#9
19:21, 29 авг. 2016

eXmire

На твоей версии завелось мультитекстурирование. Потому и падает. Допиливаю.

Временное решение glquake -window -width 640 -height 480 -nomtex

#10
20:17, 29 авг. 2016

q1MiniGL MTex

Исправлено падение при мультитекстурировании.
Больше не нужен рантайм.
Мультитекстурирование увеличивает производительность в разы.

Как обычно сломан блендинг (освещение некорректное).

#11
20:22, 29 авг. 2016

Truthfinder
> Временное решение glquake -window -width 640 -height 480 -nomtex
Гуд, теперь работает.
Позже скину подробности.

Насчет новой версии: до этого были проседания FPS, теперь их не видно.

#12
21:17, 29 авг. 2016
+ Скрин_1
+ Скрин_2
+ Скрин_3
+ Скрин_4
+ Скрин_5
#13
21:20, 29 авг. 2016

у меня, похоже, завелась в полноэкранном режиме (windows 10), да и я стим версию запускаю.

где-то коордианты текстур съехали... или я вообще всё не так делаю?
glquake-steam-290816-1 | Тестирование софт рендера Quake.

glquake-steam-290816-2 | Тестирование софт рендера Quake.

Truthfinder
ну да, на твоих скринах тоже самое видно.

Хорошая перспектива гамать на серваках без мощных графических карточек :)

#14
0:57, 30 авг. 2016

Держи. Если вдруг будет полезно.

https://drive.google.com/file/d/0B7ICdp6cfyDhd2J4aUNCTmZSczQ

Страницы: 1 2 320 21 Следующая »
ПрограммированиеФорумГрафика