Здравствуйте, гость ( Вход | Регистрация )

> Map Render
StaticZ
сообщение 14.1.2015, 21:30
Сообщение #1


*********

Разработчик проекта "Квинтэссенция"
Сообщений: 2.155
Регистрация: 15.6.2009
Группа: Пользователи
Наличность: 0
Из: РФ, Москва
Пользователь №: 11.948



Сегодня накатал простенький рендер карт основанный на UDK. Он действительно крайне простой (чуть более 500 строк кода), при этом не использовались никакие сторонние библиотеки, в том числе и DirectX, OpenGL и готовые движки. Все делается ручками простой отрисовкой 2D графики на ISurface (в качестве оного может выступать к примеру простой Bitmap). Забавно, не смотря на отсутствие оптимизации при больших разрешениях скрол работает куда шустрее и плавнее чем в том же CentrEd использующий для вывода средства OpenGL. (Для теста при скролле каждый раз создается ISurface в которой выполняется полная отрисовка сцены, после чего ISurface как ImageSource присваивается обычному Image контролу в WPF окне):

Код
surf = UOManager.CreateSurface((ushort)2560, (ushort)1600, PixelFormat.Bpp16X1R5G5B5);

if (flt)
    UOManager.FacetRender.DrawFlatMap(map, alt, ref surf, range, tcx, tcy);
else
    UOManager.FacetRender.DrawObliqueMap(map, alt, ref surf, range, tcx, tcy);

imgFacet.Source = surf.GetSurface().Image;


В целом выдаваемая картинка близка к оригиналу. С текстурами правда вышла двоякая ситуация, для простоты и экономии ресурсов я не использовал алгоритмы интерполяции вообще из-за чего поверхности выглядят не такими объемные, в тоже время сглаживание текстур вышло куда лучше чем в аналогах, границ переходов из текстуры в тайл фактически не видно:

(IMG:http://www.kachalka.com/images/kwqq04b8s83775q2tjq.png)


--------------------
RP сервер UO: Quintessence, а также ПО: EssenceUCS, EssenceUDK, CentrEd+, Fiddler+ и др.
Game isn't a dream, it is the reality, reality which is coming while we dream...
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
 
Ответить в эту темуОткрыть новую тему
Ответов
StaticZ
сообщение 19.1.2015, 3:56
Сообщение #2


*********

Разработчик проекта "Квинтэссенция"
Сообщений: 2.155
Регистрация: 15.6.2009
Группа: Пользователи
Наличность: 0
Из: РФ, Москва
Пользователь №: 11.948



Оптимизировал рендер, теперь работает намного быстрее (около 20-30 ms полная перерисовка с радиусом 30 (в оригинальном клиенте 18)). Так же добавил Flat mode рендинга (в масштабе 50%):

(IMG:http://www.kachalka.com/images/9ye9jdlvdqxs3jhwam0z.png)
(IMG:http://www.kachalka.com/images/c8iab30j01gbvq76raie.png)

работает слегка медленнее конечно, но учитывая размеры отрисовываемой области вполне прилично (PS на скринах Debug версия, Release работает раза в 1.5-2 шустрее)...


--------------------
RP сервер UO: Quintessence, а также ПО: EssenceUCS, EssenceUDK, CentrEd+, Fiddler+ и др.
Game isn't a dream, it is the reality, reality which is coming while we dream...
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
StaticZ
сообщение 19.1.2015, 16:37
Сообщение #3


*********

Разработчик проекта "Квинтэссенция"
Сообщений: 2.155
Регистрация: 15.6.2009
Группа: Пользователи
Наличность: 0
Из: РФ, Москва
Пользователь №: 11.948



Подправил отрисовку воды:

(IMG:http://www.kachalka.com/images/q4o9ud77rxvzezpcuk.png)

в остальном работает идеально - кроме мелкого косячка - толстые стены слегка вылезают на верхние тайлы из-за чего просвечивают... Следствие проблем округления при ресайзе...


--------------------
RP сервер UO: Quintessence, а также ПО: EssenceUCS, EssenceUDK, CentrEd+, Fiddler+ и др.
Game isn't a dream, it is the reality, reality which is coming while we dream...
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения



Ответить в эту темуОткрыть новую тему
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 

- Текстовая версия | Версия для КПК Сейчас: 22.6.2024, 18:44
Designed by Nickostyle