Войти
ФлеймФорумПрограммирование

Общие вопросы по программированию графония. (18 стр)

Страницы: 114 15 16 17 18 19 Следующая »
#255
4:33, 17 мар. 2020

=A=L=X=
Я читал, что в Virtua Fighter 1 на какойто приставке были криволинейные треугольники!


#256
4:34, 17 мар. 2020

Delfigamer
> Но она неправильная ... x^3... vs ... x^2
Я без понятия технических деталей того как делала NVidia, но в те времена пиксели были с кулак, грани полигонов дрожали как припадочные, а у PS1 вообще перспективной коррекции текстур не было как класса алгоритмов. Вероятно им нравилось и так как они сделали. Но это конкретно их техническая реализация с их заморочками которая потом всё-равно пошла на дно из-за сложностей с переложением на D3D.
Картинки выше это ответ на общетеоретический вопрос.

#257
(Правка: 4:39) 4:34, 17 мар. 2020

Aslan
> Я читал, что в Virtua Fighter 1 на какойто приставке были криволинейные
> треугольники!

Не криволинейные, а четырёхугольные - это была Sega Saturn где оно было эксклюзивом какое то время среди домашних консолей (сама то вышла на игровом автомате изначально), ЕМНИП, и она использовала чип NVidia как раз - первый их чип.
Т.е. первые чипы NVidia растеризовали четырёхугольники. Отреуголилась компания и встала на путь истинный из-за попыток переехать на D3D.

#258
8:07, 17 мар. 2020

Кстати да, вспомнил как было на Saturn: https://gamedev.ru/flame/forum/?id=231027&page=6&m=4960608#m83
Похоже на 3DO:

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

Т.е. несовместимость с традиционным рендером была глубже даже на уровне полупрозрачных поверхностей.

#259
8:15, 17 мар. 2020

Delfigamer
> Плоские или любой конфигурации?
Плоские выпуклые

#260
8:18, 17 мар. 2020

Слушайте, а действительно. В 3DO рендер шёл от четырёхугольного спрайта (на деле тупо прямоугольника) и поэтому мог применять RLE-кодирование. И проецировал пиксели спрайта на экран.
В Sega Saturn получается что то же самое ведь - на экран копировался прямоугольный спрайт в котором была другая ускоряющая двойной цикл по его пикселям фича - т.н. end codes. Это когда был специальный цвет пикселя который если встречался 2 раза в строке, то цикл пропускал остаток строки и переходил к следующей.
Т.е. например строка:
----x123456x-----
в которой - это прозрачные пиксели может и слева и справа проходится в ускоренном режиме с отбрасыванием конца после второго x.
Спросите зачем нужно идти с обратного конца? А спрайты же даже в денди можно зеркалировать по горизонтали и вертикали и это просто меняло порядок обхода строк и столбцов.
В спрайтоориентированных четырёхугольных 3Д-рендерах получается что то же самое.
Значит и в 3DO и в Saturn (NVidia) рендер четырёхугольников в 3D есть ничто иное как развитие идей 2D-спрайтов.
В отличие от современной растеризации цикл по пикселям шёл не рендертаргета, а самой текстуры которая воспринималась никак иначе как прямоугольный спрайт переносимый пиксель за пикселем на экран вместо текстурных выборок трианглов пляшущих от очередной его полоски пикселей на экране.
Огромные проблемы с полупрозрачностью и масштабированием при этом прилагались автоматически и то что это вымерло вообще ничем не удивительно.

#261
8:26, 17 мар. 2020

1 frag / 2 deaths
> Плоские выпуклые
Так неинтересно, это так же просто как и обычные треугольники.

#262
(Правка: 8:38) 8:36, 17 мар. 2020

Хотя нет - выше я заблуждаюсь, в Saturn не стоял чип от NVidia, но эти компании как то взаимодействовали друг с другом во время разработки Saturn и позднее.

Тут вот какая то история, но всё читать лень, выхватил глазами только, что https://forums.tomshardware.com/threads/nvidias-history-with-sega.864328/ но там они сами теряют историю до того момента как Sega начинает портировать игры с Saturn на первый нвидивский квадрический чип - NV1. Но судя по моим воспоминаниям они должны были работать вместе еще над самим сатурном, потому что вспоминаю где то фразы, что именно NVidia убедила Сегу взять за основу квадрики. Теперь уже не помню где это точно в этих всех темах про 32 бита... Ну и как бы выпустить плату с NV1 и сразу поддержкой сеговских джойстиков и звукового чипа Saturn - тоже как бы намекает.

#263
9:32, 17 мар. 2020

Delfigamer
> Так неинтересно, это так же просто как и обычные треугольники.
Ну, если это позволяет сэкономить на растеризации рёбер, то это хорошо

#264
9:59, 17 мар. 2020

1 frag / 2 deaths
> Ну, если это позволяет сэкономить на растеризации рёбер, то это хорошо
Которые wireframe или которые пограничные пиксели? Во втором случае не вижу экономию, всё равно те же самые проверки понадобятся между соседними полигонами.

#265
10:00, 17 мар. 2020

Delfigamer
Которые на ребрах, делящих 8-угольник на треугольники. Нет деления - нет лишних ребер.

#266
10:32, 17 мар. 2020

=A=L=X=
> (здесь нет трианглов - это единый квад и еще раз напоминаю что в 2D)
К сожалению нет, эта картинка в 3д (по крайней мере с учетом перспективной коррекции). Посмотри на нижний ряд кирпичей. Левая сторона заметно растянута (по длине кирпичей смотри). При том текстурировании квада, которое тут обсуждают - этого быть не должно.

#267
(Правка: 10:44) 10:42, 17 мар. 2020

MrShoor
> При том текстурировании квада, которое тут обсуждают - этого быть не должно.

Должно. Правильность текстурирования определяется просто - каждая точка с противоположной стороны соединяется с точкой другой стороны по текстуре прямой без переломов. И это тут соблюдается.
Но действительно есть интересный момент - эта картинка в 2Д-плоскости лежащей в экране полностью эквивалентна проекции из 3Д-пространства классическими матричными афинно-перспективными проекциями если найти правильную точку зрения. Поэтому её не просто легко перепутать - это как бы оно и есть. Формулы те же.

Но! Мы можем пойти дальше - взять этот квад и перенести в 3Д и считать уже по 3Д. И ходить вокруг него и смотреть со всех сторон. И опять 25 - матрица проекции-вида даст тот же косяк. Только мы уже сможем ходить вокруг него и разглядывать его с разных сторон. А чтобы исправить ситуацию нужно будет опять таки доворачивать как то вычисления.

#268
(Правка: 20:09) 20:08, 17 мар. 2020

=A=L=X=
> Правильность текстурирования определяется просто - каждая точка с
> противоположной стороны соединяется с точкой другой стороны по текстуре прямой
> без переломов. И это тут соблюдается.
Вот тебе 2 картинки, удовлетворяющие твоему условию:
2d | Общие вопросы по программированию графония.
3d_persp | Общие вопросы по программированию графония.
Я специально сделал сильную перспективу, чтобы разница была хорошо видна.
Так вот, первая картинка - это то, что получится, если взять четырехугольник в 2д, и посчитать текстурирование по этим формулам.
Вторая картинка - это что получится, если учесть 3-ю координату, и сделать перспективно корректное текстурирование.

+ p.s. Обе картинки получил в блендере

#269
(Правка: 20:20) 20:18, 17 мар. 2020

MrShoor

А, понятно о чём ты. Бегло посмотрел ту статью на которую сам сослался - похоже там чувак как раз что-то такое и выводит в следующей странице:
Изображение
Действительно в первом случае у тебя еще соблюдается равенство вертикальных промежутков при условии что вертикальные координаты нигде не меняются. Довольно очевидное должно быть правило в 2Д. А перспектива да, получается что отдельно идёт. Заморочек еще больше чем я подумал.

Страницы: 114 15 16 17 18 19 Следующая »
ФлеймФорумПрограммирование