Берсеркер
2326 постов
Карма: 218
#71 28 февраля 2007 в 09:21
Выложил!<br />Качать!<br /> :)<br />Опять же спасибо Кириллу за помощь в обновлении сайта.
Машина несла меня через неведомые районы Галактики сквозь пространство математической реальности быстрее скорости света. (C) Фред Саберхаген.
Берсеркер
2326 постов
Карма: 218
#72 09 марта 2007 в 04:07
Докладаю о ходе работ над Ку2&nbsp; 8)<br />Щас борюсь с багами геометрии карт Q2, а именно:<br />1. Многие полигоны имеют по три и более колинеарных вершин, т.е. лежащих на одной прямой. Это чревато появлением вырожденных треугольников, что приводит к визуальным искажениям освещения и спекулара.&nbsp; :-\<br />2. Некоторые полигоны имеют вершины, не принадлежащие плоскости полигона, иначе говоря полигоны не идеально плоские :o&nbsp; Проявляется тем, что декали могут пропадать на таких &quot;плоскостях&quot;. Такие полигоны особенно замечены на base1 (стены во дворе у реки) и q2dm1 (скала у озерка).<br />Оба бага успешно изучены и планомерно уничтожаются&nbsp; ;D<br />Если нужно, могу в отдельной ветке написать метод лечения. Ку2-девелеперы, надо?<br />
Машина несла меня через неведомые районы Галактики сквозь пространство математической реальности быстрее скорости света. (C) Фред Саберхаген.
KRIGSSVIN
930 постов
Карма: 53
#73 09 марта 2007 в 07:10
иначе говоря полигоны не идеально плоские
<br />жОПА, жОПАНЬКИ!!&nbsp; :o :o ???
willow
570 постов
Карма: 56
#74 09 марта 2007 в 08:51
Насчёт нункта 2.<br />Может это нормально? Имитация кривой поверхности. Всё равно по треугольникам рисоваться будет - а они всегда плоские.
KRIGSSVIN
930 постов
Карма: 53
#75 09 марта 2007 в 11:15
Нет, это не нормально - полигон по определению должен быть плоским... А если и &quot;имитация&quot; - разве нельзя было сразу по-человечески сделать?&nbsp; ;D<br />Кривизну имитировать должен параллакс&nbsp; &gt;:(............ Вот ;)
@tex
691 постов
Карма: 65
#76 09 марта 2007 в 11:32
willow<br />потому освещение неправильно работает,некрасиво.бить надо багу.жеско и цинично!рэльсой в глаз! &gt;:(<br />KRIGSSVIN<br />хтож против!ждем релиза! ;)
сказочка.
жили-были три свиньи - Нах-Нах, Пох-Пох и Пиф-Паф

что ты сделал для Строггоса!? что ты наделал!!!
Берсеркер
2326 постов
Карма: 218
#77 12 марта 2007 в 05:43
Обновление готово! Выложу сегодня или завтра, если помогут с доступом на сайт.<br /><br />Отчет о проделанной работе:<br /><br />NEW: доработана реакция TAB в консоли: например при вводе Q и нажатии TAB выводится qport и quit.<br />А новое то, что будет автоматически напечатано quit. Удобная фишка, сам убедился&nbsp; ;)<br /><br />FIXED in Render: LightDir умножался на TBN предварительно НЕ-нормированный. Исправил в glProgs и в рендерах.<br />Визуальных артефактов не наблюдалось, но пусть всё таки будет правильно...&nbsp; :)<br /><br />NEW: доп. тесты на видимость, что для PPL критично. Теперь r_speeds кажет реальную инфу и скорость выросла на 10%.&nbsp; ::)<br /><br />Работа с исправлением косяков Ку2-геометрии:<br />В режиме девелопера можно увидеть:<br />Com_DPrintf(&quot;%i surfaces with degenerated triangles\n&quot;, c_degenerated);<br />Com_DPrintf(&quot;%i non-convex surfaces\n&quot;, c_non_convex);<br />Com_DPrintf(&quot;%i non-flat surfaces\n&quot;, c_non_flat);<br />Исправление работает только для рендеров ARB4/6 с Vertex Program (на другие не было времени сделать). В итоге исправлено освещение и спекулар.<br />Попутно теперь нормально декали рисуются&nbsp; :) ибо были места на картах, где они пропадали.<br /><br />FIXED: при загрузке карты не из кэша брались-ненормированные Tangent/Binormals.<br /><br />FIXED BUG: неверно отбрасывались brush-models для конического света.<br /><br />FIXED BUG: поправлен окклюдер (возможно был неверное отсечение конического света).<br /><br />NEW: сделал в меню Game / Select Map (до 256 карт): удобная менюха для запуска карты (наподобие как в Мультиплеере запуск сервера), с показом картинок (pics/levelshots/mapname.jpg - 160x120), имена карт отсортированы по алфавиту.<br /><br />На скриншотах вверху отображены баги, внизу - исправленное.
Машина несла меня через неведомые районы Галактики сквозь пространство математической реальности быстрее скорости света. (C) Фред Саберхаген.
Берсеркер
2326 постов
Карма: 218
#78 12 марта 2007 в 06:02
А теперь обещанное описание как я боролся с косяками Ку2-геометрии<br /><br />Рассмотрим на Surface.jpg полигон ABCDEF (точки идут именно в такой последовательности).<br />Рендер рисует полигоны как GL_TRIANGLE_FAN.<br />Можно конечно рисовать как GL_POLYGONS, но видеокарта все-равно воспринимает это как GL_TRIANGLE_FAN.<br />Пояснение: GL_TRIANGLE_FAN передает треугольники в видеокарту в таком виде:<br /> ABC, ACD, ADE, AEF.<br />Вот тут то и видим засаду: треугольник AEF получился вырожденным.&nbsp; &gt;:(<br />В этом месте межточечная интерполяция вычислений не работает, и мы видим артефакт (DegeneratedTris.jpg).<br /><br />Первоначально я попробовал отказаться от интерполяции: отключил вершинные программы<br />и перевёл все вычисления целиком на фрагментный шейдер.&nbsp; ;D<br />Качество бампмапа и спекулармапа (Ideal.jpg) получилось идеальным,<br />никакие дефекты геометрии не страшны.<br />Но заметное падение скорости рендеринга не дало мне остановиться на этом способе.<br /><br />Второй способ был такой: брать начальной точкой для GL_TRIANGLE_FAN ту,<br />которая не даёт вырожденных треугольников. В нашем примере этими точками<br />могут быть C или F. Но изъян данного способа в том, что если имеем на одной<br />прямой грани больше трёх точек, и таких граней в полигоне больше двух,<br />то получаем опять же вырожденные треугольники.<br /><br />Третий способ, на котором я остановился, такой:<br />вычислил центральную точку полигона (XYZ-координаты, ST-текстурные координаты и прочее)<br />и принял её как первую при рисовании полигона (обозначим точку как X).<br />Получились треугольники:<br /> XAB, XBC, XCD, XDE, XEF, XFA.<br />Всё просто отлично.&nbsp; ::)<br /><br />Чтобы метод работал, я делаю два теста геометрии полигона. Если какой-то<br />тест не проходит, во избежание артефактов я рисую полигон по старому.<br />Тест 1: выпуклость полигона.<br />Тест 2: принадлежость всех точек плоскости полигона.<br /> Попутно, найдя такие non-flat полигоны, я определяю polygonOffset,<br /> который использую для правильного наложения декалей.<br />Баг с декалями см. Decals.jpg<br />
Машина несла меня через неведомые районы Галактики сквозь пространство математической реальности быстрее скорости света. (C) Фред Саберхаген.
Берсеркер
2326 постов
Карма: 218
#79 12 марта 2007 в 12:38
Обновление сайта отослал Кириллу, сегодня вечером он обещал залить на сайт.&nbsp; ;)
Машина несла меня через неведомые районы Галактики сквозь пространство математической реальности быстрее скорости света. (C) Фред Саберхаген.
KRIGSSVIN
930 постов
Карма: 53
#80 12 марта 2007 в 15:51
треугольник AEF получился вырожденным
<br />А разве треугольник, если он _вырожденный_, вообще виден?&nbsp; ::) Видимо, что-то я не учёл...<br /><br />
найдя такие non-flat полигоны, я определяю polygonOffset,<br />&nbsp; который использую для правильного наложения декалей<br />
<br />А может стоит просто передвинуть точку на плоскость полигона? Хотя это, конечно, сомнительно, т.к. непонятно, где эта плоскость вообще находится... Юзаешь msurface_t::plane? Тогда катит&nbsp; ;)<br /><br /><br />