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

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

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

programina
Так ты гамму крутишь не для коррекции освещения,
а в художественных целях?


#241
16:47, 14 мар. 2020

nes
> Выходит, что ты плаваешь в понятиях и не понимаешь,
> что, зачем применять
я не плаваю, а индукцирую и дедукцирую.

#242
16:49, 14 мар. 2020

nes
> Так ты гамму крутишь не для коррекции освещения,
> а в художественных целях?
я не кручу гамму. Я сравниваю С гамма-коррекцией и БЕЗ гамма-коррекции.

#243
16:49, 14 мар. 2020

programina
Зачем?

#244
16:51, 14 мар. 2020

nes
> Зачем?
чтобы не щелкать в реалтайме.
И вообще крутят не гамму, а экспозицию.

#245
17:03, 14 мар. 2020

programina
Экспозиция тут каким боком?

#246
(Правка: 17:50) 17:45, 14 мар. 2020

Panzerschrek[CN]
> Прикинул тут математику. Вывел, что растеризация четырёхугольников сводится к
> попиксельному решению квадратичных уравнений. Они дают ноль решений (когда
> фрагмент рисовать не надо), одно (обычный фрагмент), два (когда одна часть
> четырёхугольника рисуется перед другой).

Так пыталась делать NVidia в начале своего творческого пути.
Тут упоминали Sega Saturn и да, в своей теме про блеск и нищету 32/64-битных ПК и консолей я натыкался.
Путь был реализован аппаратно в нескольких чипах NVidia и конкурирующих фирм и потом всеми был откинут.

https://gamedev.ru/flame/forum/?id=231027&page=7&m=4961678#m92

Использование квадратичных поверхностей было элегантным и абсолютно новым решением в 3D-мире. Хотя теория была придумана давно, в железе такого до этого никто не делал. Главная идея заключалась в том, что в 1995 году реализовать операцию деления 1/z в железе была невероятно сложно и дорого, и в результате этого имплементировать перспективную проекцию было очень трудно. Классический подход, заключавшийся в линейной аппроксимации гиперболической функции, имел свою проблему аппроксимации в окрестности нуля и требовал сложного программного обеспечения. Квадратичная теория, использованная в NV1, аппроксимировала функцию 1/z параболической интерполяцией и такая интерполяция по качеству превосходила кусочно-линейную, которая была использована в решениях конкурентов.
...
Попытка исследовательской группы NVIDIA портировать квадратичную технологию на API Microsoft провалилась. Попытка выполнить наложения текстуры и операцию clipping приводило к уравнениям 5 степени невычислимыми в радикалах. Хотя демонстрационные примеры с квадратичными поверхностями выглядели довольно неплохо, работа с ними оказалась чрезвычайно трудной.
...
Дальнейшая разработка NV1 под новым названием — NV2 была остановлена, NV1 производство было свернуто. В 1996 году Nvidia начала разработку классического акселератора.

P.S.

А вот 3DO Interactive Multiplayer делал вообще через жопу, через спрайт который пиксель-за-пикселем отправлялся на экран и если между пикселями на экране образовывались промежутки, то они образовывались и чтобы их побороть можно было включить супермедленный режим запускающий двойной цикл заливки по каждому пикселю. Т.е. если спроецировать текстуру/спрайт в 1 пиксель это рисуется (перетираясь) с той же скоростью что и в 2 раза большую площадь (но с промежутками).

#247
1:03, 15 мар. 2020

programina
Гамма коррекция нужна для правильного блендинга и шейдинга. Когда ты задаешь формат текстуры srgb, то в шейдере при чтении из текстуры цвет переводится в линейное пространство. Вот в этом линейном пространстве как раз корректно применять формулы над цветом (блендинг и тп). В финале конечное изображение нужно перевести обратно из линейного в srgb пространство.

#248
23:57, 15 мар. 2020

=A=L=X=
Что хорошего в четырехугольниках без subdivision и даже сглаживания нормалей?

#249
(Правка: 18:15) 18:00, 16 мар. 2020

Aslan
> Что хорошего в четырехугольниках без subdivision и даже сглаживания нормалей?

Пффф, кое как нашёл по каким словам это вообще найти: http://reedbeta.com/blog/quadrilateral-interpolation-part-1/
В самом начале этой статьи приводится проблемка одна. Всё нижеследующее излагается в 2D! Но как всегда это просто частный случай 3D.
Если взять квад состоящий из двух треугольников и трансформировать его вершины так чтобы он продолжал оставаться параллелограммом (т.е. противоположные стороны параллельны), то текстурирование выглядит отлично.
Но если начать трансформировать его так что параллельность противоположных сторон нарушается, то текстура начинает трещать вдоль линии разделяющей трианглы:
Изображение

А вот настоящее квадрическое текстурирование было бы идеальным переходом текстуры от одной грани в другую без переломов:
Изображение
(здесь нет трианглов - это единый квад и еще раз напоминаю что в 2D)

#250
(Правка: 22:04) 21:55, 16 мар. 2020

=A=L=X=
Это понятно, но экономия всего вдвое и более сложный примитив, тогда как subdivision позволяет вообще криволинейный треугольник, сопряженный с соседями по нормалям

#251
23:19, 16 мар. 2020

Мой движок растеризует произвольные эн-угольники, если что.

#252
0:14, 17 мар. 2020

1 frag / 2 deaths
> Мой движок растеризует произвольные эн-угольники, если что.
Плоские или любой конфигурации?

#253
2:25, 17 мар. 2020

Aslan
> но экономия
Это не экономия, а правильность результата. Как бы вшитая перспективная коррекция без оглядки на мерность пространства.
В остальном как говорит цитата выше одни недостатки.

#254
2:40, 17 мар. 2020

=A=L=X=
> Это не экономия, а правильность результата. Как бы вшитая перспективная
> коррекция без оглядки на мерность пространства.
Но она неправильная, у тебя в цитате же и написано.
Правильная интерполяция - это когда зависимость текстурных координат от экранных даёт гиперболическую функцию, а при экранной интерполяции квадов получается парабола. А если квад не плоский, то в идеале должна быть вообще кривая как минимум третьего (а может и пятого) порядка, а по факту остаётся та же парабола.

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