#71
28 февраля 2007 в 09:21
Выложил!<br />Качать!<br /> :)<br />Опять же спасибо Кириллу за помощь в обновлении сайта.
#72
09 марта 2007 в 04:07
Докладаю о ходе работ над Ку2 8)<br />Щас борюсь с багами геометрии карт Q2, а именно:<br />1. Многие полигоны имеют по три и более колинеарных вершин, т.е. лежащих на одной прямой. Это чревато появлением вырожденных треугольников, что приводит к визуальным искажениям освещения и спекулара. :-\<br />2. Некоторые полигоны имеют вершины, не принадлежащие плоскости полигона, иначе говоря полигоны не идеально плоские :o Проявляется тем, что декали могут пропадать на таких "плоскостях". Такие полигоны особенно замечены на base1 (стены во дворе у реки) и q2dm1 (скала у озерка).<br />Оба бага успешно изучены и планомерно уничтожаются ;D<br />Если нужно, могу в отдельной ветке написать метод лечения. Ку2-девелеперы, надо?<br />
#73
09 марта 2007 в 07:10
иначе говоря полигоны не идеально плоские<br />жОПА, жОПАНЬКИ!! :o :o ???
#74
09 марта 2007 в 08:51
Насчёт нункта 2.<br />Может это нормально? Имитация кривой поверхности. Всё равно по треугольникам рисоваться будет - а они всегда плоские.
#75
09 марта 2007 в 11:15
Нет, это не нормально - полигон по определению должен быть плоским... А если и "имитация" - разве нельзя было сразу по-человечески сделать? ;D<br />Кривизну имитировать должен параллакс >:(............ Вот ;)
#76
09 марта 2007 в 11:32
willow<br />потому освещение неправильно работает,некрасиво.бить надо багу.жеско и цинично!рэльсой в глаз! >:(<br />KRIGSSVIN<br />хтож против!ждем релиза! ;)
#77
12 марта 2007 в 05:43
Обновление готово! Выложу сегодня или завтра, если помогут с доступом на сайт.<br /><br />Отчет о проделанной работе:<br /><br />NEW: доработана реакция TAB в консоли: например при вводе Q и нажатии TAB выводится qport и quit.<br />А новое то, что будет автоматически напечатано quit. Удобная фишка, сам убедился ;)<br /><br />FIXED in Render: LightDir умножался на TBN предварительно НЕ-нормированный. Исправил в glProgs и в рендерах.<br />Визуальных артефактов не наблюдалось, но пусть всё таки будет правильно... :)<br /><br />NEW: доп. тесты на видимость, что для PPL критично. Теперь r_speeds кажет реальную инфу и скорость выросла на 10%. ::)<br /><br />Работа с исправлением косяков Ку2-геометрии:<br />В режиме девелопера можно увидеть:<br />Com_DPrintf("%i surfaces with degenerated triangles\n", c_degenerated);<br />Com_DPrintf("%i non-convex surfaces\n", c_non_convex);<br />Com_DPrintf("%i non-flat surfaces\n", c_non_flat);<br />Исправление работает только для рендеров ARB4/6 с Vertex Program (на другие не было времени сделать). В итоге исправлено освещение и спекулар.<br />Попутно теперь нормально декали рисуются :) ибо были места на картах, где они пропадали.<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 />На скриншотах вверху отображены баги, внизу - исправленное.
#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 получился вырожденным. >:(<br />В этом месте межточечная интерполяция вычислений не работает, и мы видим артефакт (DegeneratedTris.jpg).<br /><br />Первоначально я попробовал отказаться от интерполяции: отключил вершинные программы<br />и перевёл все вычисления целиком на фрагментный шейдер. ;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 />Всё просто отлично. ::)<br /><br />Чтобы метод работал, я делаю два теста геометрии полигона. Если какой-то<br />тест не проходит, во избежание артефактов я рисую полигон по старому.<br />Тест 1: выпуклость полигона.<br />Тест 2: принадлежость всех точек плоскости полигона.<br /> Попутно, найдя такие non-flat полигоны, я определяю polygonOffset,<br /> который использую для правильного наложения декалей.<br />Баг с декалями см. Decals.jpg<br />
#79
12 марта 2007 в 12:38
Обновление сайта отослал Кириллу, сегодня вечером он обещал залить на сайт. ;)
#80
12 марта 2007 в 15:51
треугольник AEF получился вырожденным<br />А разве треугольник, если он _вырожденный_, вообще виден? ::) Видимо, что-то я не учёл...<br /><br />
найдя такие non-flat полигоны, я определяю polygonOffset,<br /> который использую для правильного наложения декалей<br /><br />А может стоит просто передвинуть точку на плоскость полигона? Хотя это, конечно, сомнительно, т.к. непонятно, где эта плоскость вообще находится... Юзаешь msurface_t::plane? Тогда катит ;)<br /><br /><br />