Вот обычный Obj-файл, в котором обычный кубик из 8 вершин:
Индексов в нем 24, а соответственно линий 24.
Но если сравнить, то увидите двойные индексы:
f 2 1 3 4 - это 2-1, 1-3, 3-4, 4-2
Соответственно обратные индексы (1-2, 3-1, 4-3, 2-4) нужно удалить.
Если внимательно посмотрите, то увидите обратные индексы, т.е. по сути дубликаты.
Т.е. по факту тут всего 12 одинарных линий, а не 24.
invis
> Это оно?
Это все в 3 mulps умещается. Это ж 3D-вектор.
invis
> Посмотрел, как их обычно считают - жуть
Да, невеселое занятие.
eDmk
Всё, теперь понял откуда дубли растут.
Как нибудь буду снова писать нейронку, обязательно подумаю в сторону удаления дублей (там задача у меня примерно аналогичная встретится)
invis
InfusionKRD
> А барицентрик придумали для распаралеливания
Если речь о видеокартах, то да, причём суть не в разбиении экрана на тайлы, а в раскладывании каждого треугольника по пикселям на тысячи своих процессоров.
Но на CPU, мне кажется, нужно параллелить более высокий уровень. Либо треугольники делить по потокам, либо экран на горизонтальные полоски. И поэтому в рисовании через барицентрические координаты мало смысла.
invis
> в рисовании через барицентрические координаты мало смысла
Треугольники тогда прыгать будут :) Как у боброва aka 122-й.
Весь смысл треугольника в том, что надо загнать его четко в нужные координаты,
а не туда, куда он прилипнет после Round.
eDmk
> Треугольники тогда прыгать будут :) Как у боброва aka 122-й.
У кого-то там прыгают - слабый аргумент, значит, сделано криво :)
Хотя вот наткнулся на статью, в которой объясняются преимущества рендера на барицентрике.
https://fgiesen.wordpress.com/2013/02/10/optimizing-the-basic-rasterizer/
Показано, как считать барицентрик за 3 сложения на пиксель, есть пример SIMD-рендера с обработкой нескольких пикселей за итерацию.
В таком варианте выглядит вполне разумно. Хотя в конце автор уточняет, что для больших треугольников в полэкрана всё же не очень оптимально каждый раз проходить весь bounding box.
invis
> И поэтому в рисовании через барицентрические координаты мало смысла.
Сложные вычисления делаются один раз перед отрисовкой треугольника. Дальше всё дешево: интерполяция, v4:add/mad.
eDmk
> Треугольники тогда прыгать будут
Не будет ничо прыгать. Барицентрические координаты тут ни при чём. OpenGL рисует через них и ничо не прыгает. Мой рендер рисует через них и тоже ничо не прыгает.
>Не будет ничо прыгать
У меня первая версия триэнгла прыгала.
BC позволяют точки точнее распихать.
eDmk
> BC позволяют точки точнее распихать.
BC помогают распараллеливать легко, но точнее они это не делают. У тебя где-то ошибки были просто.
Ещё я перешёл на BC потому, что в них дешевле считать dFdx/dFdy. Это будет важно при фильтрации.
Я бы сказал фильтрация это вообще самая дорогая фишка. Особенно трилинейная и mipmap (log).
Обновление SR64
1. Улучшена стабильность
2. Оптимизация
3. Выделение групп объектов (CTRL + LMB)
4. Генерация икосаэдров вместо сфер
eDmk Потестил, вроде всё работает. Не нашел до чего докопаться)
InfusionKRD
На шрифт теперь не ругается?
eDmk на это ругается...
Я все никак не доберусь себя сделать владельцем папок на этой чудо ОС. Думаю, если больше никто на подобное не жаловался - то проблема только у меня.