Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Игры";
Текущий архив: 2004.09.26;
Скачать: [xml.tar.bz2];

Вниз

DelphiX: Antialiasing (сглаживание)   Найти похожие ветки 

 
kas-t   (2004-05-30 00:48) [0]

Поигрался в "Как достать соседа 2" и очень понравился хорошо проработанный эффект Anti-Alias (так вроде пишется). Создается впечатление что герои и объекты, находящиеся на уровне как будто одно целое. Может быть, кто-нибудь пробовал подобный эффект сделать на DelphiX?

Как считаете... Стоит ли вообще разбираться с этим. Или это лишняя трата времени? Если стоит то в какую сторону "копать"?

ЗЫ: Что может быть потеря FPS из-за антиалиазинга, я в курсе :).

Спасибо!


 
lokid7   (2004-05-31 06:54) [1]

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


 
KilkennyCat ©   (2004-06-01 00:16) [2]


> lokid7   (31.05.04 06:54) [1]

Ошибаетесь.
Моя прога по отображению шрифта (средствами GDI!) под ДиректИксом, в полноэкранке, антиальязинг, пофиг сколько строчек текста не тормозит на 166 мгц 32 озу 2 видео. 1024х768х16


 
lokid7   (2004-06-01 05:27) [3]

Возможно и ошибаюсь, но если подумать, то если производить это всего изображения то торомоза будут от этого. Возможно это можно сравнить с прозрачностью на DirectDraw.


 
kas-t   (2004-06-01 13:34) [4]

Так все-таки!? Как к этому стремится. Есть, какие то стандартные способы организовать подобный эффект, или нужно писать свои процедуры по обработки крайних пикселей (или всего спрайта). На предмет сглаживания? Может где можно посмотреть примеры на эту тему?


 
NailMan ©   (2004-06-01 14:59) [5]

kas-t

> Так все-таки!? Как к этому стремится. Есть, какие то стандартные
> способы организовать подобный эффект, или нужно писать свои
> процедуры по обработки крайних пикселей (или всего спрайта).
> На предмет сглаживания? Может где можно посмотреть примеры
> на эту тему?

Ну ты загнул. AA на DelphiX.  :-[ ]

Но все же...идеи всего 2: FSAA и AA со смещением.

Первый идеа(Full Scene Anti-Aliasing):
Рендеришь сцену предварительно в левый буфер с разрешением кратным исходному разрешению экрана. Скажем исходное 800x600, рендеришь в 1600х1200. Далее сжимаешь левый буфер до 800х600. И этот буфер заливаешь блитом на основную плоскость(или как там в delphiX).
Это AA 2x2. Можно соответственно и с большей кратностью, но будет тормозно!  Ж-))

Этот антиальясинг юзался в nVIDIA GeForce(сейчас уже более сложные алгоритмы).

Второй способ, смещением(юзался у ATI начиная с R8500):
Рендерится картинка в левый буфер с исходным разрешением.
Далее во второй левый буфер данные из первого дублируется, но со смещением, скажем 0.5 пикселя в какую-то сторону(лубую, но обычно влево). Далее на основную плоскость заливается смесь первой картинки и второй.
Скажем первая идет с коэф прозрачности blend=1, а вторая(смещенная) с blend=0.5. Получается типа легкий эффект блюра, что воспринимается как сглаживаение картинки и краев(в реале у АТИ еще и производилась коррекция пограничных пикселей на четких цветовых переходах).

Вот такие наиболее простые алгоритмы AA.

Как это реализовывать на обрубках типа DelphiX - Х.З. Я лишь привел идеи.

---
WBR, NailMan aka 2:5020/3337.13


 
kas-t   (2004-06-02 00:55) [6]

NailMan: Спасиб! В целом суть понятна. На DelphiX это действительно будет тормозну-то. :) Но попытаюсь, поковыряется. Все же интересно :).


 
KilkennyCat ©   (2004-06-02 01:16) [7]

на DelphiX это не будет тормознуто... потому что, при попытке это сделать, от DelphiX только таймер останется :)


 
3d[Power] ©   (2004-06-02 04:45) [8]

> [2] KilkennyCat ©   (01.06.04 00:16)
>
> > lokid7   (31.05.04 06:54) [1]
>
> Ошибаетесь.
> Моя прога по отображению шрифта (средствами GDI!) под ДиректИксом,
> в полноэкранке, антиальязинг, пофиг сколько строчек текста
> не тормозит на 166 мгц 32 озу 2 видео. 1024х768х16

У тебя просто DD поддерживает AA


 
lokid7   (2004-06-02 05:47) [9]

3d[Power]
Нет у него наверноу УУ с ГГ, но возможно и ЗЗ рулит

:)))))


 
ixuss ©   (2004-06-02 12:12) [10]

> Но все же...идеи всего 2: FSAA и AA со смещением.

А как насчёт того, чтобы выводить спрайты с Anti-Aliasing, что-то вроде 32-bit bitmap?


 
NailMan ©   (2004-06-02 12:26) [11]

ixuss ©
> А как насчёт того, чтобы выводить спрайты с Anti-Aliasing,
> что-то вроде 32-bit bitmap?

И где тут антиалиасинг?

Антиалиасинг производится на конечной картинке, т.е. той картинке, которая поступает в фреймбуфер видеоадаптера, а не на элементах из которой потом будет создана эта картинка.

Сегодняшние алгоритмы АА используют как вышеуказанные способы, так и всякие мультисэмплинги, типа разбиения картинки на куски и их последующая обработка(подробнее смотри на www.ixbt.com, в статьях).

---
WBR, NailMan aka 2:5020/3337.13


 
Ixuss ©   (2004-06-02 12:47) [12]

>И где тут антиалиасинг?

Как где? В альфаканале. Неужели не пользовался PhotoShop или чем то там?

>Антиалиасинг производится на конечной картинке, т.е. той картинке, которая поступает в фреймбуфер видеоадаптера, а не на элементах из которой потом будет создана эта картинка.

Скорей, не антиалиясинг, а размывка какая-то, blur. Ни за что не поверю, что antialiased line рисуется сначала в буффере, растягивается, сжимается, затем выводится.


 
Ixuss ©   (2004-06-02 12:54) [13]

2 NailMan:

Кроме того, при твоём способе простая прямая линия, параллельная краям экрана, окажется сглаженой, что совсем необязательно.


 
NailMan ©   (2004-06-02 13:24) [14]

Ixuss ©
> Как где? В альфаканале. Неужели не пользовался PhotoShop
> или чем то там?

Плоскости(главные) с альфа-каналом поддерживаются крайне малым числом видюх, и об это забудь.


> Скорей, не антиалиясинг, а размывка какая-то, blur. Ни за
> что не поверю, что antialiased line рисуется сначала в буффере,
> растягивается, сжимается, затем выводится.

Как бы ты не верил, но это именно так и делается. На нормальной видюхе(с жефорца) АА(FSAA) - это делается на аппаратном уровне, хотя и с потерей производительности(понятно почему). О софтваре с приемлемой скоростью даже забудь.

Суть AA - сгладить четкую лесенку на наклонных линиях(просто линиях или краях объектов). При рендере на больший размер "экрана" с последующим сжатием до нормального происходит апроксимация пикселей, т.е. нормальным языком те "четкие" пиксели которые были на картинке AA2x2 будут замещены другим цветом, средним с рядом стоящими пикселями. Т.о. будет достигнуто сглаживание границы.

Вобщем читай статьи по теории Anti-Aliasing-а.

---
WBR, NailMan aka 2:5020/3337.13


 
Ixuss ©   (2004-06-02 14:56) [15]

2 NailMan:

Я конечно понимаю, 3D, всё такое, но речь идёт в вшивом DelphiX, внимательно читай вопрос автора и явно о 2d. Вот тебе даже скриншоты из как достать соседа:

http://www.orkom.ru/multimedia/games/sosed2/

Речь идёт именно о сглаживании краёв, точно так же как в иконках для Windows XP. Понятно, что 3D не имеет дела с плоскими спрайтами и там используются другие технологии для сглаживания, но чтобы PhotoShop сглаживал (притом не всё изображение, а отдельные объекты) путём растяжения-сжатия - не поверю.


 
A22   (2004-06-03 00:08) [16]

описанные вами методы используются в трехмерной графике, на плоскости гораздо проще использовать tga и сглаживать картинки альфа-каналом. к тому же так будет возможность определить степень сглаженности каждой картинки


 
NailMan ©   (2004-06-03 15:07) [17]

Ixuss ©

> Понятно, что 3D не имеет дела с плоскими спрайтами и там
> используются другие технологии для сглаживания, но чтобы
> PhotoShop сглаживал (притом не всё изображение, а отдельные
> объекты) путём растяжения-сжатия - не поверю

3Д может имело со всем в том числе и со спрайтами в экранных координатах(собсно Билли рекомендует делать 2Д на 3Д - все аппаратно и быстро в том числе и AA самых крутого качества).


> Речь идёт именно о сглаживании краёв, точно так же как в
> иконках для Windows XP

Не надо сравнивать работу DDraw-рендера и рендер виндовых рюшечек. Это вещи несравнимые. У винды все делается на софтваре и на настолько малых объектах, да и так нечасто, да и по другому принципу, что скорость практически не теряется, в отличие от того что было здесь задумано.

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

A22

> описанные вами методы используются в трехмерной графике,
> на плоскости гораздо проще использовать tga и сглаживать
> картинки альфа-каналом. к тому же так будет возможность
> определить степень сглаженности каждой картинки

Это "эмуляция" AA, да и только.

---
WBR, NailMan aka 2:5020/3337.13


 
Ixuss ©   (2004-06-03 23:14) [18]

2 NailMan:

Я ещё раз говорю - ты не по делу блистаешь знаниями. Сглаживание карёв при помощи маски в альфа-канале всегда назывался antialiasing"ом точно так же как то же название обозначало своё похожее по эффекту действо в 3d и не надо спорить. Антиалиясинг означает сглаживание и не важно, как достигается это сглаживание. Нам важно, с чем мы имеем дело и имеем мы дело в DelphiX. Если рисовать 2d через 3d - то естественно использовать и его технологии (там и подход другой). Но истиное 2d никуда не делось и всегда будет таким, какое оно есть - многоканальные изображения, маски и всё такое. Хороший пример - 3DPaint.


 
A22   (2004-06-04 18:32) [19]

кстати когда-то делал в DirectDraw7 AA ручками. попиксельно выводил картинку: прозрачные участки (colorkey) не выводятся, обычные рисуются ка есть, а пиксели, находящиеся на границе картинки с фоном - с полупрозрачностью, при значении alpha 0.5. Использовался этот метод для небольших объектов (юнитов) и в принципе работал сносно. Сглаживает конечно не идеально, но... DD7 и есть DD7, в следующих версиях уже проще использовать полноценное alpha-смешивание


 
Weber ©   (2004-06-04 18:57) [20]


> WBR, NailMan aka 2:5020/3337.13

What is WBR очень на Weber похоже! :)


 
NailMan ©   (2004-06-04 19:40) [21]

Weber ©
With Best Regards

---
WBR, NailMan aka 2:5020/3337.13


 
Доброжелатель   (2004-06-04 23:49) [22]

2 NailMan:

Кстати, признал свою запару?



Страницы: 1 вся ветка

Форум: "Игры";
Текущий архив: 2004.09.26;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.52 MB
Время: 0.031 c
1-1094931963
ВиТ
2004-09-11 23:46
2004.09.26
TreeView и БД


3-1093591590
Chainik
2004-08-27 11:26
2004.09.26
Как реализовать запрос?


14-1094722436
bobr12
2004-09-09 13:33
2004.09.26
Как сделать строку в которой есть кавычки


1-1094674686
den.is
2004-09-09 00:18
2004.09.26
Цвет "фона" Button и MainMenu, как поменять?


14-1094325608
MicroMozg
2004-09-04 23:20
2004.09.26
Загадки из мурзилки!





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский