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

вопрос про разницу между GL_QUAD и GL_TRIANGLE (2 стр)

Страницы: 1 2 3 4 Следующая »
#15
15:01, 5 июля 2017

g-cont
> Да что он вам сделал? Детство испортил?
Видать на улице новые кроссовки отжал. Такая затаенная детская обида на гопника Гену Квадратова ))))

#16
17:15, 5 июля 2017

Cheb
> Чтобы нарисовать квадрат совместимо с тем, как исторически работает GL_QUAD, надо четыре треугольника, иначе интерполяция даст для центра совсем не то, как оно работает.
Что за бред? Квады всегда работали как два треугольника, по крайней мере на железе с шейдерами.

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

> Отсюда торчат уши у перекошенных текстур на пушках и прочих лоу-поли моделях в первом и втором квейке.
Там просто не было перспективно корректной интерполяции (точнее, она была включена только на стенах).

#17
17:54, 5 июля 2017

> Отсюда торчат уши у перекошенных текстур на пушках и прочих лоу-поли моделях в первом и втором квейке.
Там анварп скинов просто кривой... А плывущие текстуры на моделях там вообще из за формата моделей. К гл_квадз этого отношения не имеет, да и рисовались они через триангл стрип-фан

#18
0:03, 6 июля 2017

Я думаю в 95-м году просто нормальных пакетов моделирования еще не было. Я в Arcane Dimensions поиграл и там нормальные модельки вполне. Так что формат непричём.

#19
1:13, 6 июля 2017

>>Почему считается, что отдельные треугольники быстрее квадратов будут?

потому что Sony PlayStation выиграла, а Sega Saturn проиграла.

#20
16:33, 6 июля 2017

>Там просто не было перспективно корректной интерполяции
Ты предполагаешь, что трапеция - это результат перспективной проекции прямоугольника.
А трапеция может быть просто трапецией. Как часть линии, нарисованной GL_QUADS, например. И вот в этом случае - НЕТ, два треугольника не работают, получается через жопу. Тем сильнее, чем она трапециевиднее.
Я недавно это на своей заднице выучил, портируя код рисования линий с glBegin(GL_QUADS) на нормальные 2d модели из индекснутых треугольников.

>Там анварп скинов просто кривой...
Механика другая, косяк тот же. Нормально отекстурить трапецию, натянув на неё прямоугольник, можно только 4 треугольниками. Иначе банальная линейная интерполяция текстурных координат приводит к говнищу на узких длинных треугольниках.
У вас есть лоу-поли трапеция? Тогда этот косяк идёт к вам!

#21
17:00, 6 июля 2017

Cheb
а покажи пример кривого текстурирования трапеции, взяв в качестве текстуры шахматное поле

#22
17:17, 6 июля 2017

Cheb
> Ты предполагаешь, что трапеция - это результат перспективной проекции прямоугольника.
В данном конкретном случае (баги с текстурами в кваке) это именно так и есть.

> А трапеция может быть просто трапецией. Как часть линии, нарисованной GL_QUADS, например. И вот в этом случае - НЕТ, два треугольника не работают, получается через жопу.
Потому что текстурные координаты кривые (нелинейные), трепецевидность тут напрямую не при чем, просто наиболее часто возникающий частный случай.
Для работы с нелинейными текстурными координатами можно использовать тесселяцию либо специальный шейдер.
И тесселяция с добавлением единственной точки никак не может считаться универсальным решением.

#23
17:29, 6 июля 2017

Наслаждайтесь!
По быстрому переколбасил в своём движке из фона гуя:

Изображение

Без дополнительной точки в центре - честная линейная интерполяция даёт ЖОПУ.

#24
17:38, 6 июля 2017

>И тесселяция с добавлением единственной точки никак не может считаться универсальным решением.
Она является универсальным решением для 100% эмуляции поведения ныне покойной GL_QUADS

>координаты кривые (нелинейные)
Нет, что самое смешное - они-то как раз линейные. Просто GL_QUADS интерполирует по всем четырём соседним, а железо, рисующее треугольник - по трём, ничего не зная о четвёртой точке четырёхугольника.

#25
17:40, 6 июля 2017

а теперь найди разницу с этим:
Изображение
статья https://en.wikipedia.org/wiki/Texture_mapping раздел Perspective correctness

#26
17:49, 6 июля 2017

Какая разница? Мы не о проекции говорим, а об отекстуренной ленточке из прямоугольников, имеющей изгибы и расширения.

Как ты её не прецируй потом, она останется отекстуренной через жопу

Отекстуренные ленточки имеют 100500 применений: следы махов меча, всякие магические потоки, вихрящиеся вокруг героя, элементы гуя... Колея железной дороги, на худой конец, в лоу-поли виде сверху.

И во всех этих случаях без средней точки сгенерированный меш скатывается в сраное говно.

Раньше было проще: и трава зеленее, и ленточку рисуешь, используя GL_QUADS - и ни..почём.
А сегодня - или геометрический шейдер, или среднюю точку на CPU - но всё ручками, всё сам.

#27
18:05, 6 июля 2017

Cheb
> Она является универсальным решением для 100% эмуляции поведения ныне покойной GL_QUADS
Поведение GL_QUADS при нелинейных текстурных координатах, неплоской поверхности и невыпуклого контура — это UB.
Т. е. само использование таких квадов не особенно корректно, ибо каждый вендор делает как хочет.

> Нет, что самое смешное - они-то как раз линейные.
Под словом "линейные" я понимаю, что значения во всех четырех точках задаются одним линейным уравнением Ax + By + C.
Очевидно, что в твоем примере с перекошенной шахматкой это не так.

#28
21:23, 6 июля 2017

>>а теперь найди разницу с этим:
Ну в примере Cheb речь про ортогональную проекцию, а не про коррекцию перспективы. Т.е. на том скриншоте обычный квад, искаженный перспективно.
Но вообще странно конечно.

#29
22:41, 6 июля 2017

Cheb
Что-то сомнительно, что точка в центре пофиксит проблему на 100%. Покаж результат.
Думаю, фиксить баг можно двумя теругольниками с 4-х мерными текстурными координатами. То есть перспективной коррекцией. Но что-то мне кажется, все забивают на такое при ленточках. Ленточки нужно моделировать ровнее :)

Human
Современные GPU понимают треугольники, а квады — нет. Квады конвертируются в треугольники перед рендером.

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

Тема в архиве.