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

Ускоряющая структура для эффективной трассировки линий (4 стр)

Страницы: 1 2 3 4 5 Следующая »
#45
21:28, 8 июля 2024

THE_MASTER
> а тупо подкрашиваем небольшие участки треугольника по краям
Ок. Тогда я бы в вершины треугольника записывал бы ID линий. Если у двух вершин одинаковый ID, то значит тут можно красить ребро.

#46
21:38, 8 июля 2024

MrShoor
> Тогда я бы в вершины треугольника записывал бы ID линий. Если у двух вершин одинаковый ID, то значит тут можно красить ребро.
не проканает, т.к. из одного вертекса может исходить больше чем две линии, вон даже на скрине по ссылке /A\ это видно:
Изображение

/A\
> Я про барицентрики при растеризации
даже не знаю, как это поможет, я ж цвет целиком генерю в RTX, а потом, да, у меня есть пост шейдер-микшер, где я много чего смердживаю так сказать, но цвет линии на тот момент уже определён как бы...

#47
21:43, 8 июля 2024

Вот побыстрому сделал, только чуть артефачит.

fragment barycentrics | Ускоряющая структура для эффективной трассировки линий
#48
21:45, 8 июля 2024

/A\
> от побыстрому сделал, только чуть артефачит.
это RTX?

#49
21:48, 8 июля 2024

THE_MASTER
Растеризация с барицентриками. RTX я бы несколько часов делал)

#50
21:57, 8 июля 2024

/A\
> RTX я бы несколько часов делал)
ну вот я уже на RTX у себя добиваю, пришлось кучу всего протаскивать по софту, как доделаю - покажу скрин

#51
22:03, 8 июля 2024

THE_MASTER
> из одного вертекса может исходить больше чем две линии
Вижу максимум 2 линии из одного вертекса. Ну и да, я писал про линии во множественном числе.

#52
22:10, 8 июля 2024

MrShoor
> Вижу максимум 2 линии из одного вертекса.
в случае как бы triangle list-а так и есть, а если шарить вертексы и рендерить индексами, тогда линий из вертекса может исходить много

#53
9:04, 9 июля 2024

Короче, флаги в индексах для RTX хранить - не очень удобный трюк, т.к. VkAccelerationStructureGeometryTrianglesDataKHR::indexType не может иметь кастомного размера, максимум VK_INDEX_TYPE_UINT32, поэтому придётся заводить дополнительный флаг буфер...

#54
9:13, 9 июля 2024

THE_MASTER
Если у тебя вся геометрия из прямоугольников, то переставь индексы так чтоб всегда первая грань была диагональю

#55
(Правка: 9:45) 9:38, 9 июля 2024

/A\
> Если у тебя вся геометрия из прямоугольников
не, не вся, например, когда ты триангулируешь какую-то сферу (полученную из геом. ядра), она получается одним большим single mesh-ом из набором трианлов, да и вообще, никто не машет юзеру рисовать пирамидки всякие и пр, короче, прямоугольники - это скорее исключение, чем правило. Да это всё фигня, флаг буфер уже завёл, там другая проблема в совмещение качества и алгоритмов триангулятора меша и рёбер, т.к. они делаются как бы в разных местах и разными методами...

p.s.: а что до размера индексов в RTX, вообще древний у них подход, во многих других местах у них есть возможность явно указать stride, а тут - нет, ну мол пусть RTX думает, что индекс uint32, ну вот пусть и читает свои 4 байта, а на самом деле там будет больше, а для шага указывался бы страйд, но нет... да и пёс с ним.

#56
11:04, 9 июля 2024

Вообще, сами линии получились в итоге довольно таки сносные (увеличил для наглядности), так я сделал фейд к заднему цвету, но теперь осталась главная проблема - заигнорить внутренние рёбра и пока-что как-то хреново получается (на картинке этого вообще ещё нет)... Проверка рёбра и стороны треугольника точка-в-точку пока не проканала, нужно копаться с настройками триангуляторов :)
Изображение
Да, и ещё конечно из косяков то, что на краях я получаю как бы пол толщины линии, что и логично, т.к. другая её сторона не видна, что не очень хорошо.

#57
22:10, 9 июля 2024

По поводу всё тех же линий. Короче, победил я триангулятор и вытащил всё таки на каждом face-е нужные adjacency триангы, по ним всё нормально отфильтровал от мусора, но конечно этот метод хорош далеко не для всех случаев... Вот на рисунке все рёбра:

+ Показать

теперь посмотрим на отфильтрованное изображение:

+ Показать

как видно, на относительно прямых участках всё ок, но вот на всяких цилиндрах и чём-то подобном грани оборванные и вот почему [увеличиваю толщину линий]:

+ Показать

[модели и камера слегка отличаются на картинках]
короче, триангулятор выдаёт не очень-то крутой меш, по крайней мере для исходной цели окрашивания ребра сторонами треугольника, т.к. в некоторых местах (см. первый рисунок) на крышке цилиндра есть куча мелких трианглов, у которых стороны мизерные, а под определённым углом эти трианглы даже тоньше линии, поэтому и закрашивается хреново.
Какое может быть решение? Наверное, нужно пытаться сменить триангулятор :)

Вообще, если посмотреть как генерит цилиндры 3д макс, это просто небо и земля, если бы у меня так было, проблем бы вообще не было.

+ Показать
#58
22:50, 9 июля 2024

Плакал мой фоторежим с такими рёбрами, даже диффузный свет не спасает ))
Изображение
короче, надо будет ещё как-то поизгаляться...

#59
23:21, 9 июля 2024

THE_MASTER
> грани оборванные и вот почему [увеличиваю толщину линий]:
Тебе Смайл еще тут https://gamedev.ru/code/forum/?id=284547&page=3&m=5930145#m35 говорил об этом, и даже картинку с артефактами показывал.

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