PictureView — просмотр изображений различных форматов

Здесь можно обсудить ваш любимый плагин.
Denis
Posts: 1420
Joined: Tue 05 Apr, 2005 18:12
Has thanked: 7 times
Been thanked: 2 times

Re: PictureView — просмотр изображений различных форматов

Post by Denis » Wed 08 Jul, 2009 14:51

Latest post of the previous page:

Taciturn
Если найти ACDSee SDK, то можно.

JFK
Posts: 34
Joined: Fri 05 Jan, 2007 06:37

Re: PictureView — просмотр изображений различных форматов

Post by JFK » Wed 08 Jul, 2009 15:04

Прикрутил Lanczos. Как и ожидалось, скорость прилично упала. Прилагаю плагин для желающих потестировать.

http://subv.mail333.su/PictureView_far2 ... s_sse2.rar

User avatar
Александр Кряжев
Posts: 882
Joined: Sun 03 Dec, 2006 10:09
Location: Москва
Has thanked: 2 times
Contact:

Re: PictureView — просмотр изображений различных форматов

Post by Александр Кряжев » Wed 08 Jul, 2009 15:15

Ох, чувствую я, что всё-таки решили вы испортить хороший плагин...

Фар - маргинальный продукт. (c) zg

JFK
Posts: 34
Joined: Fri 05 Jan, 2007 06:37

Re: PictureView — просмотр изображений различных форматов

Post by JFK » Wed 08 Jul, 2009 15:20

Александр Кряжев wrote:Ох, чувствую я, что всё-таки решили вы испортить хороший плагин...
Благодарить за это нужно корпорацию M$, которую очень мало волнует работа старых интерфейсов DirectX под новыми ОС...

P.S. Пробный вариант с софтовой интерполяцией - не для повседневного использования, а скорее для оценки производительности. Если кто-нибудь знает, как прикрутить к плагину аппаратную интерполяцию - пишите, давайте обсудим.

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

Code: Select all

double _Lanczos3(double x)
{
	const double R = 3.0;
	if (x<0.0) x = -x;
	if(x==0.0) return 1;

	if(x<R)
	{
		x *= M_PI;
		return R*sin(x)*sin(x/R)/(x*x);
	}
	return 0.0;
}
и копировать новый битмап в primary surface. Триангулярная фильтрация будет побыстрее (там нет синусов), но и качеством похуже.

Вариант с триангулярной фильтрацией.

Исходники.

User avatar
Andrey Budko
Posts: 1203
Joined: Fri 01 Apr, 2005 14:03
Contact:

Re: PictureView — просмотр изображений различных форматов

Post by Andrey Budko » Wed 08 Jul, 2009 16:07

JFK wrote:Трилинейная фильтрация
Причем вообще трилинейная фильтрация к 2д графике? Трилиная фильтрация сглаживает переходы между мипами.

User avatar
uncle-vunkis
Posts: 72
Joined: Thu 11 Jun, 2009 15:16
Been thanked: 1 time

Re: PictureView — просмотр изображений различных форматов

Post by uncle-vunkis » Wed 08 Jul, 2009 16:11

JFK wrote:Трилинейная фильтрация будет побыстрее (там нет синусов), но и качеством похуже.
Лично я собирался прикрутить именно аппаратную трилинейку. Во-первых, она будет очень быстрой (по fps - не медленее нынешней реализации), во-вторых, поддерживается практически всеми карточками одинаково. Есть, конечно, и минус - потребует в два раза больше видео-памяти. Ещё минус - большее время на создание мип-уровней. Насколько это критично - может показать только тестирование.

Трилинейка позволит сделать down-sampling качественее nearest'а.

User avatar
Andrey Budko
Posts: 1203
Joined: Fri 01 Apr, 2005 14:03
Contact:

Re: PictureView — просмотр изображений различных форматов

Post by Andrey Budko » Wed 08 Jul, 2009 16:21

uncle-vunkis wrote:Трилинейка позволит сделать down-sampling качественее nearest'а.
Трилинейная фильтрация это вроде GL_LINEAR_MIPMAP_LINEAR. Последний линеар в случае квада на экран не поможет. GL_LINEAR_MIPMAP_NEAREST - это билинейная с мипмапингом, не?

User avatar
HaRT
Moderator
Posts: 9150
Joined: Tue 30 Aug, 2005 17:21
Location: Санкт-Петербург
Has thanked: 90 times
Been thanked: 174 times

Re: PictureView — просмотр изображений различных форматов

Post by HaRT » Wed 08 Jul, 2009 16:25

uncle-vunkis wrote:потребует в два раза больше видео-памяти
На встроенных видяшках уже и сейчас часто не хватает видеопамяти, чтобы показать фотку целиком (вместо этого показывается четверть), т.ч. полагаю, не стоит усугублять.
Фар есть инструмент, а не нянька. © 2009 DrKnS

JFK
Posts: 34
Joined: Fri 05 Jan, 2007 06:37

Re: PictureView — просмотр изображений различных форматов

Post by JFK » Wed 08 Jul, 2009 16:26

Andrey Budko wrote:Причем вообще трилинейная фильтрация к 2д графике? Трилиная фильтрация сглаживает переходы между мипами.
Правильно, конечно triangle resampling. Но в некоторых источниках говорят именно о трилинейном ресемплинге применительно к 2D-графике.

User avatar
uncle-vunkis
Posts: 72
Joined: Thu 11 Jun, 2009 15:16
Been thanked: 1 time

Re: PictureView — просмотр изображений различных форматов

Post by uncle-vunkis » Wed 08 Jul, 2009 16:27

Andrey Budko wrote:GL_LINEAR_MIPMAP_NEAREST - это билинейная с мипмапингом, не?
Да.
Andrey Budko wrote:Последний линеар в случае квада на экран не поможет.
1) Качество изображения для скейлов, попадающих между мип-уровнями, у трилинейки будет выше, чем у простой билинейки с мип-мапами.
2) В этом плагине реализован плавный зум. Для него трилинейка также пригодится - не будет явных скачков (переходов между мип-уровнями).

User avatar
uncle-vunkis
Posts: 72
Joined: Thu 11 Jun, 2009 15:16
Been thanked: 1 time

Re: PictureView — просмотр изображений различных форматов

Post by uncle-vunkis » Wed 08 Jul, 2009 16:59

HaRT wrote:На встроенных видяшках уже и сейчас часто не хватает видеопамяти, чтобы показать фотку целиком
Резонно, но с этим можно бороться. Кстати, если задать DDSCAPS_SYSTEMMEMORY, не помогает?
P.S. Я только что на плагине просмотрел картинку bmp размером 20000x20000, и всё показало правильно. Надеюсь, вы не подумали, что у меня больше 1 Гб видеопамяти? :wink:

User avatar
Andrey Budko
Posts: 1203
Joined: Fri 01 Apr, 2005 14:03
Contact:

Re: PictureView — просмотр изображений различных форматов

Post by Andrey Budko » Thu 09 Jul, 2009 00:28

uncle-vunkis wrote:Я только что на плагине просмотрел картинку bmp размером 20000x20000, и всё показало правильно.
Как это реализуется в плагине? Разбивается на части? Ибо самый распространненный максимальный размер текстуры это 4к на 4к. На "ультра" современных видяхах это 8к на 8к как максимум (GL_MAX_TEXTURE_SIZE=8192 на 8800 GTS), больше не видел. Откуда тогда проблема с памятью описанная хартом? Надо просто разбивать на меньшие куски (4 штуки) размером ближайшей степени двойки от разрешения экрана. То есть если у харта 1680 на 1050, то это будет 4 текстуры по 2к: 2K*2K*4=16Мб - должно хватать на любом встроеном.

Кто-то тут заикался про дх10, что мол легко реализуемо в терминах существующей имплемиентации. Так в чем проблема? ДХ10 так ДХ10. Тем более, как я понял, глюки только в виндовс виста и выше, а там дх10 де факто.
uncle-vunkis wrote:Ещё минус - большее время на создание мип-уровней
Их вроде как можно генерировать динамически по мере необходимости, но не думаю, что стоит заморачиваться с умодавящим алгоритмом ради ускорения в четветь секунды на файлах размером 5к на 5к.
uncle-vunkis wrote:Качество изображения для скейлов, попадающих между мип-уровнями, у трилинейки будет выше
Шоты можешь показать? Уменьши 1100x1100 до 400x400 билинейной и трилинейной.

Я вот поэкспериментировал - разницы не вижу. Да и не должно быть насколько я себе представляю ибо трилинейная на то и трилинейная, что ей надо третее измерение (глубину сцены) К примеру, трилинейная не делается в шейдере, где можно оперировать только пикселями текущего мипа. Мне вот нужно было для дума, да нет возможности. Научишь? :)
http://prboom-plus.sourceforge.net/a1.png
http://prboom-plus.sourceforge.net/a2.png

Вот тут видно, но это обычный GL_LINEAR на увеличение.
http://prboom-plus.sourceforge.net/a3.png
http://prboom-plus.sourceforge.net/a4.png

Хотя могу заблуждаться.
uncle-vunkis wrote:В этом плагине реализован плавный зум. Для него трилинейка также пригодится - не будет явных скачков (переходов между мип-уровнями)
Как ты себе это представляешь чисто теоретически? Надо вывести большую картинку квадом 600 на 600. Есть два соседних мипа: 1024х1024 и 512х512. Вроде как очевидно, что берется 1024х1024 и уменьшается либо неарестом либо линеаром. Мип 512х512 в этом случае не поможет никак.

UJvu
Posts: 156
Joined: Tue 03 May, 2005 15:38
Location: Севастополь
Contact:

Re: PictureView — просмотр изображений различных форматов

Post by UJvu » Thu 09 Jul, 2009 01:13

Andrey Budko wrote:Я вот поэкспериментировал. Разницы не вижу. Ну да и не удивительно. Ибо насколько я себе представляю, трилинейная на то и трилинейная, что ей надо третее измерение.
http://prboom-plus.sourceforge.net/a1.png
http://prboom-plus.sourceforge.net/a2.png
Красивые трусики
a2, мне кажется, получше. a1 слегка смазана. На кружевах видно.

User avatar
Александр Кряжев
Posts: 882
Joined: Sun 03 Dec, 2006 10:09
Location: Москва
Has thanked: 2 times
Contact:

Re: PictureView — просмотр изображений различных форматов

Post by Александр Кряжев » Thu 09 Jul, 2009 04:57

UJvu wrote:a2, мне кажется, получше. a1 слегка смазана. На кружевах видно.
Да там - горизонт завален!
(А если серьёзно, я разницы не увидел. Ни в кружевах, ни в остальном).

Фар - маргинальный продукт. (c) zg

User avatar
uncle-vunkis
Posts: 72
Joined: Thu 11 Jun, 2009 15:16
Been thanked: 1 time

Re: PictureView — просмотр изображений различных форматов

Post by uncle-vunkis » Thu 09 Jul, 2009 09:30

Andrey Budko wrote:Надо вывести большую картинку квадом 600 на 600. Есть два соседних мипа: 1024х1024 и 512х512. Вроде как очевидно, что берется 1024х1024 и уменьшается либо неарестом либо линеаром. Мип 512х512 в этом случае не поможет никак.
Попробую объяснить. Вместо 600х600 можно для пущего эффекта взять 513х513. Разве не очевидно, что мип-512 даже сам по себе будет смотреться гораздо лучше в этом случае, чем линейно уменьшенный в два раза 1024. Почему? Да потому что для получения мипа-512 используют фильтры более качественные: Catmull-Rom, Гаусс, Митчелл, Sinc и т.п (уменьшается альясинг). А вот если бы мы скейлили до 1023, то, очевидно, ближе всего к нужному был бы тогда чистый мип-1024 (вырождается в билинейку). Кстати, выбор мип-уровней определяется не глубиной, а соотношением площадей пиксель/тексель. А скриншоты сейчас делать нет смысла: каждый сможет убедиться в этом эффекте, когда сделаем соответствующие модификации плагина (с трилинейкой и без).

User avatar
Andrey Budko
Posts: 1203
Joined: Fri 01 Apr, 2005 14:03
Contact:

Re: PictureView — просмотр изображений различных форматов

Post by Andrey Budko » Thu 09 Jul, 2009 10:07

uncle-vunkis wrote:Да потому что для получения мипа-512 используют фильтры более качественные: Catmull-Rom, Гаусс, Митчелл, Sinc и т.п
А для 1024 не используются?

User avatar
Taciturn
Posts: 390
Joined: Thu 26 May, 2005 17:14
Location: Санкт-Петербург
Has thanked: 23 times
Been thanked: 8 times
Contact:

Re: PictureView — просмотр изображений различных форматов

Post by Taciturn » Thu 09 Jul, 2009 10:23

Denis wrote:Если найти ACDSee SDK, то можно.
http://asia.acdsee.com/files/acdsee_plugin_sdk.zip

Post Reply

Return to “Обсуждение плагинов”