Advanced member
Статус: Не в сети Регистрация: 10.04.2003 Откуда: Москва
Сергей_ писал(а):
Для того чтобы получить изображение разрешением 400 на 200 необходимо устройство вывода разрешением 800 на 600.
На самом деле, нужно 400 на 200 при одном маленьком условии - это должно быть строго в сетке. Если обобщить, то выводить можно только в разрешении 400*N 200*K, где N и K целые числа. Т.е. вывод в 401*201 уже недопустим.
Цитата:
То есть мы просто не имеем права выводить вертикальную линию шириной меньше 2-х пикселов! Конечно я упрощаю
если предельно 'упрощать', то соглашусь.
Цитата:
более формально надо обрезать пространственные частоты выше 1/2 частоты разрешения экрана.
Почти. Надо сделать ФВЧ высокого порядка с единичным пропусканием на Fmax/2 и 0 на Fmax. Для визуальной компенсации пропадания 'хвоста' спектра надо сделать предкоррекцию в области Fmax/2 (+6db).
Цитата:
Визуально картинка сильно "замылится", но зато изображение будет полностью лишено артефактов дискретизации - как по телевизору.
с учетом вышесказанного мной - не столь заметно. К тому-же ... ммм .... мелкие детали 'в фокусе', расположенные "вдали" изображения всегда смотрятся очень неестественно. Небольшое размывание не повредит. (о этих 'особенностях восприятия' {и методе dAA} должна была быть вторая часть статьи, но ее не будет)
Цитата:
Пример - профессиональные программы 3D графики имеют параметр вроде "размер пиксела". По умолчанию он установлен больше 1 = 1.3 в 3D MAX , но только начиная с 2 мы получаем идеальное изображение. Вопрос - так почему же никто не реализовал это в игровых ускорителях ?
Увы, это уже 'не вопрос'.
Цитата:
Человеческий глаз устроен так что имеет "автофокус" - мозг анализирует мелкие детали изображение и подстраивает хрусталик так чтоб сигнал от мелких деталей( контуров) был больше.
и так и не так. Мозг акцентирует зрение на чем-то одном и только оно в фокусе. Применять то-же в 'игре' нельзя - человек смотрит в разные места картинки и 'странную' расфокусировку глаз не поймет. Т.е. можно (точнее НУЖНО) делать только статическую компенсацию - нельзя же выводить четко провода в 10Km от точки наблюдения. (я образно)
Цитата:
В результате покупатели берут "неправильные" видеокатры - "погляди, какая четкая детальная картинка !
согласен! ... а через некоторое время - блин, а где обещанная виртуальная реальность 'как в жизни'????????????
И еще дополню мысль - все любят screenshots. Да, красиво! .... но когда монстр из ****цать тысяч полигонов и (вдумайтесь!) резкими краями начинает перемещаться и уходить в даль .... столько всего нехорошего _я_ вижу, что о этих **** полигонах и вспоминать не хочется. Еще оттуда-же: резкость текстур об'екта и контуров этого об'екта...... Даже говорить не хочется.
Цитата:
Но как только дело дойдет до движущегося изображения - все ошибки, неплохо описаные в статье, вновь заставят подумать о качестве видеокарты и профессионализме разработчиков. Исправит все это только значительное увеличение разрешения мониторов, мне кажется лет через 10.
... только это решают не разработчики, а 'трепачи' в этих компаниях. Т.е. пока это не будет нужно маркетингу - ничего не будет.
Цитата:
То есть нельзя просто усреднить точки с помощью дешевого сумматора и сдвигателя
Разве я говорил, что при суммировании надо отсекать до выбранного разрешения цвета? ... во-первых, это можно только для 32BPP (что уже не '16BPP') во-вторых - это внутреннее дело RAMDAC, в каком виде вести расчеты. Например, почему-бы не в 16 бит на цвет? ... а потом выводить с 10 бит на цвет. ... это все-же 'мелочи', согласись.
Цитата:
Это связано с тем что человеческий глаз имеет нелинейную чувствительность
... да, это надо учесть. Впрочем, темы статьи это не касается.
Цитата:
Третий фактор - конечно же инертность разработчиков.
диагноз - 'не лечится'. Если серьезно, то ... разработчик обязан быть ленив, но _в_меру_.
На самом деле, нужно 400 на 200 при одном маленьком условии - это должно быть строго в сетке. Если обобщить, то выводить можно только в разрешении 400*N 200*K, где N и K целые числа. Т.е. вывод в 401*201 уже недопустим.
Честно говоря даже не хочется спорить, хочешь 22 кГц получить - выводи 44 минимум, хочешь картинку 800 на 600 - выводи 1600 на 1200 а лучше еще больше. Это просто математика. Никаких 6 Дб !!!!! Конечно условия идеальные - квадратный пиксел равномерно окрашеный. Можно помухлевать слегка и компенсировать излишную расфокусированность CRT трубок чем ниб вроде Sharpen фильтра, но это другая история.
Цитата:
Разве я говорил, что при суммировании надо отсекать до выбранного разрешения цвета? ... во-первых, это можно только для 32BPP (что уже не '16BPP') во-вторых - это внутреннее дело RAMDAC, в каком виде вести расчеты. Например, почему-бы не в 16 бит на цвет? ... а потом выводить с 10 бит на цвет. ... это все-же 'мелочи', согласись
Просто недопонимание. 16 бит НА КОМПОНЕНТУ а не на пиксел.Извиняюсь за сумбур, я в свое время собирался проектировать первую российскую 3D плату (о, подростковая наивность...) и довольно много сделал - например свой софтверный OpenGL драйвер, и поэтому очень близко к сердцу воспринял рассуждения о растеризации, фильтрах и проч. Речь шла о том что было бы очень неплохо записывать не предкорректированные величины в фрейм буфер а линейные, а в RAMDAC быстренько на лету их переделывать. Реализовал я это быстро в своем драйвере, качество цветопередачи - супер. Было с чем сравнивать - параллельно писал клон SoftImage|3D и огрехи были видны сразу - рядом два окна, одно - OpenGL другое - Hi-End картинка. Одно "но" - жуткий бандинг в темных областях. Долго мучался, винил себя, искал ошибку. Оказалось - виноват я, точнее мое зрение. Ну не хватает 8 бит при линейном цветовом пространстве! И все пользуются тем что зависимость CRT яркости от напряжения нелинейная - I=exp(V, gamma). Она очень здорово подходит под кривую чувствительности глаза и потому 8 бит хватает с лихвой.
И касается это нашей темы напрямую, при проектировании кристалла одно дело добавить сумматор и устройство сдвига а другое - еще и перекидывать из одного пространства в другое. Именно поэтому всеми хваленый антиалиасинг реализован неправильно - одно дело (A+B+C+D)/4 ( как сейчас - и это неправильно) а другое - exp( (exp(A,gamma) + (exp(B, gamma) + (exp(C, gamma) + (exp(D, gamma))/4, 1/gamma). В результате на участках с малым градиентом вроде бы правильно но там где AA нужен, в контурах - сильное искажение. Вывод - ждем 16 бит на компоненту видеокарт, кажется директикс 9 это предусматривает но не верится что им реально пользуются - очевидно двухкратное падение пропускной способности памяти и уеличение объема буфера.
Если кому интересны исходники того что я успел написать (закос под SoftImage3D+MentalRay+Software OpenGL)- могу выложить, правда давно это было, и все очень коряво, и брошено на пол - дороги. Разве что проверить теорию.
А почему собственно не будет второй части статьи ? Я только разошелся
Advanced member
Статус: Не в сети Регистрация: 10.04.2003 Откуда: Москва
Сергей_ писал(а):
Честно говоря даже не хочется спорить, хочешь 22 кГц получить - выводи 44 минимум, хочешь картинку 800 на 600 - выводи 1600 на 1200 а лучше еще больше.
Я не о том и приведу конкретный пример. Есть картинка (gif например 1024*768) и надо ее уменьшить. Если ее ужать в 2 раза то качество почти не испортится, а если в 1.8 - будет Г. Т.е. если изображение кратно дискретизации(вплоть до 1:1), то проблем не возникнет. Дискретизация (Fd) и сигнал (Fs) на экране порождают смесь частот типа Fs, Fs+/-Fd и т.д. Если Fs=Fd или Fs=k*Fd, то их биения Fs+/-Fd=0 и повреждения изображения (звука и прочее) не происходит. Если это равенство нарушается (а оно никогда не выполняется), то будут присутствовать компоненты Fs-Fd и чем ближе Fs к Fd, тем гадостнее это заметно. Так что ... запас 2х скорее эвалюционный, чем революционный. Помнишь, я говорил о фильтре? ....
(только не придирайся к формулам - у меня и так голова болит
Цитата:
Никаких 6 Дб !!!!!
Это я как железячник тебе говорю. Впрочем, не уверен на 100%, что технологии аналоговой техники прямо применимы в этой теме. .... но ведь 'где-то близко'?
Цитата:
Ну не хватает 8 бит при линейном цветовом пространстве! И все пользуются тем что зависимость CRT яркости от напряжения нелинейная - I=exp(V, gamma). Она очень здорово подходит под кривую чувствительности глаза и потому 8 бит хватает с лихвой.
Кодер-декодер нелинейных 8 бит в линейные 16 это знаешь что? - EPROM. Если серьезно, то нечто подобное давно живет в телефонии (a,u-coding) и проблем не вызывает.
Цитата:
И касается это нашей темы напрямую, при проектировании кристалла одно дело добавить сумматор и устройство сдвига а другое - еще и перекидывать из одного пространства в другое.
For example, в той-же телефонии -- никто не работает с компрессированным сигналом. Даже больше того, DSP даже не задумывается над этой проблемой - компрессию/декомпрессию звука делает интерфейсный модуль, а самом DSP оперирует нормальными данными. Нет никаких проблем сделать так-же.
Цитата:
не верится что им реально пользуются - очевидно двухкратное падение пропускной способности памяти и уеличение объема буфера.
Почему? Прости, я наверно сейчас полную чушь спрошу и заранее извиняюсь - разве эти вычисления производятся не в RAMDAC? Зачем хранить с явной излишней точностью, если можно только на время вычислений временно завышать точность данных?
Цитата:
Если кому интересны исходники того что я успел написать- могу выложить
А в чем проблема? .... берешь себе персональную страничку и клади файлы - если раздавать по mail'у то мало кто возьмется смотреть.
Цитата:
А почему собственно не будет второй части статьи ?
Как-то задал себе это вопрос и не смог найти ни одного серьезного аргумента 'за'.
For example - вот тебе сейчас надоест сюда писать и эта ветка загнется.
(прошу не воспринимать как агитацию)
(когда я говорил цвет, то, естественно, имел в виду цвет (R или G или B) а не полное цветовое описание точки)
Последний раз редактировалось serj 18.12.2003 22:53, всего редактировалось 2 раз(а).
serj_ Отличная статья!
Практически уверен, что большинство либо недопоняли (в том числе и я - буду перечитывать) либо бросили читать, так и не начав.
Но тем кто понял или пытается понять такие обзоры нужны как хлеб.
Respect!
Member
Статус: Не в сети Регистрация: 18.04.2003 Откуда: Novosibirsk
serj_ Пиши продолжение! Я требую продолжение! Я более-менее понял, и приятно почитать на любимом сайте не только про разгон.
Насчет вашего спора с Сергей_ я думаю вы просто друг дурга или не поняли или говорите немного на разных языках. : -)
Я требую продолжение!
Я требую продолжение!
Сколько раз еще написать? : - )
К сожалению, автору уже неоднократно объясняли, что предложенный им метод АА неработоспособен - во многих случаях будет выдавать неправильную картинку.
Например, при альфа-блендинге и перекрытии больше двух треугольников в одной точке.
Но он почему-то не верит!
Идеи, мысли, актуальная тема... Вообщем можно было-бы местами преподать кое-что проще, но тема сложная для непосвещёных...
Нескажу что сильно вникал...
1) Но то что я понял это то что автор хочет использовать остатки от рендеринга пикселей в 4-м байте [A] (RGBA), я так понял?
2) Но в "ветке" я обнаруживаю обсужение сглаживания за счёт соседних пикселей... =(
если в первом я оказался прав то тогда возникает вопрос разве такие остатки существуют?
И выборка пикселя с текстуры ведётся в float?
Member
Статус: Не в сети Регистрация: 09.05.2003 Откуда: от маськовск... Фото: 1
Цитата:
при удалении об'екта на телевизоре изображение теряет фокус (что естественно!), на мониторе - сохраняет четкие границы в 1 пиксель.
Эттта мощный проход. Я попытался представить себе "удаление объекта на телевизоре" и кроме как выбросить работающий на батарейках телевизор в окно ничего придумать не смог.
Вообще говоря, телевизор, как и монитор - это средства вывода двумерного изображения, там нету никакой третьей координаты. А тот эффект, про который пишет автор, называется DOF, Depth Of Field, по русски - "глубина резкости". Эффект чиссанатурально оптический, и проявляется на телевизоре из-за того, что телепередачи снимают теле или кино камерой, оснащенной оптической системой под названием "объектив". Ничто (кроме закона Мура) не мешает реализовать (просчитать) этот эффект в 3D гамесе.
Что касается "высокоточных" форматов представления цвета. Современное железо (типа R300 и выше) это умеет (вплоть до 32-х битного плавающего числа на каждую компоненту). Проблема в другом - это нарендеренное изображение нечем визуализировать. РАМДАК, который умеет адекватно преобразовывать 32-х разрядные плавающие числа в напряжение со скоростью несколько сотен мегагерц будет стоить тысячи долларов, я подозреваю. Максимум что себе может позволить нынешняя массовая техника - 10-ти битный рамдак матрокса паргелии, что, конечно, уже лучше 8-ми бит, но тем не менее. А самое что печальное во всей этой истории - победное шествие жидкокристаллического отстоя. Эти "дисплейные унитазы" способны типично на 6 бит на компоненту и 8 как максимум. Когда пенсионер американского значения Гордон Мур со своим, мать его, законом обеспечит нас скоростными и хотя бы 16-ти битными РАМДАКами они уже никому не будут нужны, кроме богатеньких буратин, которые смогут позволить себе покупать суперэлитные аналоговые CRT мониторы (как сейчас, например, ламповые усилители). И видеоплаты с такими рамдаками как раз и будут стоит эти самые тысячи долларов...
И только когда вымрет этот жидкокристаллический мусор и ему на смену придет что-то типа JVCшной технологии D-ILA (эти проекторы стоят сейчас в диапазоне $70-200К, хотя Сони обещает с этим что-нибудь сделать и приблизить к "народу") вот тогда есть шанс что мы вернемся к обсуждению многоразрядных быстрых рамдаков. "Только вот жить в эту пору прекрасную уж не придется ни мне ни тебе"(с)классик.
[/u]
Автор в начале привел отвратительный пример, сравнил монитор с телевизором и указал на то, что качество у телевизора лучше!!! Я плевался.
Для начала подключи телевизор к компу у которого самая удачная реализация TV-Out. Поставь монитор и телевизор рядом и сравни разницу!!! Телевизоры всегда на несколько поколений по качетсву отстают от мониторов ((
Может автор имел ввиду не качество мониторов и телевизоров, а почему качество кадра игруль не такое как кинематографический кадр? Так это уже недоработка игрописателей, что они плохо проработали детали. Смысл добиваться реалистичных "каёмок" если даже в разсматриваемой игруле "Unreal II" моделям далеко до реальности?
Если размытие есть гуд, то не нужно напрягать разработчиков GPU и игровых движков. Просто отнесите свой монитор в мастерскую и попросите вывести наружу подстройку фокусировки. Тогда достаточно подкрутить ручку и вот вам халявное сглаживание.
В итоге автор вроде как разбирается в математической модели AA, но абсолютно не знает к какому месту это приложить.
Всё. Заканчиваю. И прошу администрацию сайта внимательно читать статии перед тем как выложить их на столь авторитетном ресурсе.
К автору.
Цитата
"У монитора разрешение больше 1024 линий, а обычный телевизор лучше 400 линий вряд ли сможет показать."
Ответ на невысказаный вопрос: Вообще то ИХ у стандартной телевизионной трубы = 625.
Цитата
"У монитора вывод изображения строго в сетке (например, для 1024*768 это будет 1024 точек в строке на 768 строк), у телевизора - фиксированное число строк без фиксации количества точек в строке."
Ответ - ТАКОЕ МОГ НАПИСАТЬ ТОЛЬКО извиняюсь за выражение ДЕБИЛ.
Любая CRT труба имеет определенное количество "так называемых пикселов " как вдоль, так и поперек. А если автор имел ввиду разрешение, то в зависимости от стандарта оно может отличаться, но это применимо и к монитору в таком случае.
Дальше развивать тему не буду ,а то и так на языке одни ругательства. Ненавижу когда теоретики херовы пишут о том, чего реально не знают.
P.S. Об'являю конкурс на лучшее доказательство теоремы Ферма. Приз - Нобелевская премия. ответы отправлять Л.С.
Member
Статус: Не в сети Регистрация: 26.03.2003 Откуда: Moscow
Рад что тема вызвала такой резонанс. Приятно, что народ все таки шевелится еще, несмотря на всепоглощающую массу "удобных" корпоративных решений. А теперь по теме:
Есть такое направление компьютерной мысли, как демосцена. Кто знает - читайте след. абзац, а тем, кто не знает - скажу, что это некие фанатики программисты, компьютерные музыканты и художники, которые делают нечто вроде видеоклипов. Только не мультики, а программы, то есть все, что показывается - вычисляется на ходу (да, объяснение еще то... кому интересно - сходите на www.demoscene.ru). Я тоже когда то был демомейкером, писал программы и музыку периодически.
Так вот, то, что в статье описано, давным давно применялось в демосцене, под названием "клеточный автомат". На его основе можно получать очень нересурсоемкие модификации содержимого экрана, с помощью которых можно проводить и сглаживание, и просто размывание (зависит от формулы зависимости цвета клетки от цвета ее соседей и порядка обработки клеток на экране. клетка тут равна пикселю), и разные эффекты, такие, как волны, огонь (которому любые фрактальные взрывы позавидуют), и так далее. Такие алгоритмы я использовал еще в 1994м, а в мире они повились где-то с конца 80-х. Причем обратите внимание, что тогда все это делалось для тогдашних компов (хоть и в 320*200 всего). Еще издавна (с 1996-го где-то примерно) в демках применялся смешанный полигонально-бамповый (от BUMP Mapping) метод изображения воды. И результаты всего этого были (опять же не считая разрешения!) не хуже того, что сейчас мы видим реализованным с помощью пиксельных шейдеров, которы жрут ресурса страшно даже подумать во сколько раз больше. А сам в чистом виде BUMP хоть и реальизован вроде почти на всех картах, но практически не используется, хотя с его помощью можно создавать такие реалистичные полы-стены-потолки, что закачаешься. Вместо этого - тот же pixel shading, требующий ГОРАЗДО больше ресурсов. Да, у pixel shadingа побольше возможностей конечно, чем у BUMPa, но то, как его сейчас применяют - стрельбя из пушки по воробьям.
Почему так происходит? Потому же, почему сейчас мы работаем в Windows, а не в гораздо более устойчивых системах, как то OS/2 например (мир праху ее, никогда не был ее фанатом, но объективно система была гораздо лучше виндов). Потому же, почему многие (80 процентов) "убеждаются, что у них компьютерах стоит процессор Интел, позволяющий полностью использовать возможности Интернета" (глупее фразу сложно придумать, но на народ действует). Реклама и Маркетинг, господа. Сделала корпорация что-то. Сделала так себе, но прорекламировала зато. Все купили, и ЭТО стало стандартом. Потому все остальные стали делать то же самое, стандарт ведь... Кто решится этот стандарт поломать? Да почти никто. Хотя 2 примера все же приходят на ум... 1)NVIDIA, подмявшая в итоге под себя предыдущий стандарт - 3DFX. Сама она в итоге стала на место предыдущего короля во всех смыслах, и финансово и морально - ведут себя так же похабно. Слава богу есть ATI... 2)AMD с их AMD64 - тоже типа того. Не револющия, а такой мирный путч пытаются проделать. Станут стандартом - и мы тоже будет выть, уже от них. Ибо таковы, как ни прискорбно, законы общества нашего - власть и деньги делают из людей монстров...
Да... Начал вроде как про одно, а закончил про другое. Ну если что - извиняйте. Автору статьи еще раз спасибо, хорошая статья. Да, на прощанье скажу, что почти все клеточные автоматы, будучи аписанные на ассемблере, вмещаются в 128 байт (не кило, а именно байт). Делайте выводы о скорости. А сколько алгоритм FSAA 4x занимает? Вот вот. Только нужно ли это кому-нибудь из тех, кто реально что-то может изменить - неизвестно... Грустно
Блин....... забыл, что не со своего компа отправляю...и я в итоге гость, а во лбу торчит гвоздь...это админ забил, чтобы гость не уходил.
ИТАК ДУБЛЬ 2
К автору.
Цитата
"У монитора разрешение больше 1024 линий, а обычный телевизор лучше 400 линий вряд ли сможет показать."
Ответ на невысказаный вопрос: Вообще то ИХ у стандартной телевизионной трубы = 625.
Цитата
"У монитора вывод изображения строго в сетке (например, для 1024*768 это будет 1024 точек в строке на 768 строк), у телевизора - фиксированное число строк без фиксации количества точек в строке."
Ответ - ТАКОЕ МОГ НАПИСАТЬ ТОЛЬКО извиняюсь за выражение ДЕБИЛ.
Любая CRT труба имеет определенное количество "так называемых пикселов " как вдоль, так и поперек. А если автор имел ввиду разрешение, то в зависимости от стандарта оно может отличаться, но это применимо и к монитору в таком случае.
Дальше развивать тему не буду ,а то и так на языке одни ругательства. Ненавижу когда теоретики херовы пишут о том, чего реально не знают.
P.S. Об'являю конкурс на лучшее доказательство теоремы Ферма. Приз - Нобелевская премия. ответы отправлять Л.С.
Member
Статус: Не в сети Регистрация: 26.03.2003 Откуда: Moscow
Clootie , алгоритм может работать с готовым изображением, которое уже состоит из скажем 1024*768 точек. По этому сколько там полигонов и как они наложены - без разницы. Это во первых. А во вторых - "правильное" изображение (математически неискаженное) далеко не всегда приятно для глаза. Собственно именно об алгоритмах искажения изображения мы тут и говорим фактически.
kika , да, TFT все еще отстают по некоторым параметрам от CRT. Но лично я поставил себе TFT и очень доволен, ибо в отличие от CRT (очень хорошего кстати, стоялал дорогая iiyama) мой нынешний TFT-шник не делает мои глаза красными, как у вампира, не вызывает головной боли после 8 часов работы (или игр). Полное отстутсвие мерцания - это хорошо, как не крути. Лично я даже 85 герц видел (а выше задираешь - падает четкость неизбежно, такова технология) , а когда смотришь на стабильную картинку - хорошо.
LDA , очень просто. Сравни Need for speed for PC и Need for Speed for Playstation 2. Первую заведи на мониторе, вторую - на телевизоре. У меня есть PS2, и я знаю о чем говорю. На мониторе - ну игра, но и есть игра... Нестыковки полигонов то тут то там, итд. А на TV - почти real life. Технически на мониторе качество картинки лучше, а визуально - TV вне конкуренции. Текст конечно на TV глупо выводить, он не для этого... Но тут мы и не обсуждаем сглаживание шрифтов - так ведь?
Гость , насчет разрешения... Разрешение есть у СИГНАЛА TV. А вот трубы мониторов (именно трубы, не TFT), делаются не так, как мониторные трубы. Или не совсем так. Там действительно нет тех самых фиксированных пикселей. Так что не надо катить бочку на человека.
Кстати, фактически похожий на TV эффект можно получить, если пустить на TFT игру в меньшем разрешении, чем его максимум. И если у вас монитор с хорошей интерполяцией, то вы получите "бесплатное" с плане FPS полноэкранное сглаживание. В некоторых играх - очень облагораживает картинку - попробуйте. Главное - не перестараться. 800*600 для монитора в 1280*1024 - это не есть гуд. А вот 1024*768 - вполне достойно.
Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 6
Вы не можете начинать темы Вы не можете отвечать на сообщения Вы не можете редактировать свои сообщения Вы не можете удалять свои сообщения Вы не можете добавлять вложения