информационная безопасность
без паники и всерьез
 подробно о проекте
Rambler's Top100Где водятся OGRыЗа кого нас держат?Spanning Tree Protocol: недокументированное применение
BugTraq.Ru
Русский BugTraq
 Анализ криптографических сетевых... 
 Модель надежности двухузлового... 
 Специальные марковские модели надежности... 
 Три миллиона электронных замков... 
 Doom на газонокосилках 
 Умер Никлаус Вирт 
главная обзор RSN блог библиотека закон бред форум dnet о проекте
bugtraq.ru / блог / архив / 2009
АРХИВ
архив
2024
2023
2022
2021
2020
2019
2018
2017
2016
2015
2014
2013
2012
2011
2010
2009
2008
2007
2006
2005
2004
2003
2002
archive





дорогая цветопередача
06.04.09 14:22 // оригинал
На выходных наконец-то дошли руки до того, чтоб закрыть оставшиеся косяки с цветопередачей нового монитора. Во первых строках поста, конечно, хочется передать отдельный привет виндовой системе управления цветами (ICM). Чтобы воспользоваться цветовым профилем, хоть стандартным от монитора, хоть полученным в результате калибровки, нужно выполнить аж три условия.

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

Во-вторых, загрузить его в LUT монитора (если он такое понимает, как NECовская тридцатка) или видеокарты (в случае Dellовской тридцатки), в последнем случае это нужно проделывать при каждом старте системы. Причем диалоги UAC от висты и от семерки все нафиг сбрасывают (еще один повод избавляться от UAC), хорошо хоть в семерке появилась возможность отключать затемнение экрана, переключение в которое и дает такой эффект. Кстати, в семерке появилась возможность загрузки профиля штатными средствами, уже прогресс - раньше для этого приходилось пользоваться внешними загрузчиками (галочка Color Management->Advanced->Change system defaults->Advanced->Use Windows display calibration, есть шанс, что это отразится и на сбросе от UAC, уже неохота проверять).

Эффект от загрузки профиля уже вполне заметен, но и это еще не все. Финальный штрих - прикладная программа должна быть в курсе того, какой профиль выбран в системе, и при выводе проводить преобразование из цветового пространства медиафайла в системное (хорошо бы при этом считывать информацию из самого файла, но на худой конец сойдет и расчет на то, что там sRGB). Хорошая демонстрация того, что бывает при игнорировании информации из файлов, есть тут; в браузерах, не признающих ICM, наиболее нагляден пример из раздела "Why is color management important".

Для обычных мониторов последнее условие в основном важно при работе с фотографиями, на мониторах же с так называемым расширенным цветовым охватом (wide gamut), к которым относятся обе упомянутые тридцатки, это становится актуально везде (за подробностями - сюда, если на пальцах, то в противном случае все выглядит примерно как при задирании saturation). Я не очень понимаю, почему за те почти 15 лет, что прошли после появления ICM в Windows'95, никому в Microsoft не пришло в голову избавить пользователей от этого геморроя, дав общесистемную настройку, обеспечивающую для программ, слыхом не слыхавших про ICM, хотя бы дефолтовое преобразование sRGB->монитор. Но что имеем, то имеем, а поведение UAC, не изменившееся в семерке, лишь демонстрирует, в каком загоне тут работа с цветами.

Итого, для адекватной передачи цветов на мониторах с wide gamut выбор прикладных программ становится жизненно важным. В случае фото или веба все тривиально. Фотошоп, Lightroom и стандартный просмотрщик висты/семерки о всех этих заморочках в курсе и подхватывают все на ура, у ACDSee и FastPictureViewer есть подходящие настройки. IrfanView грозится обеспечить полную поддержку ICM со следующей версии, пока же от него пришлось отказаться. На вебе выбор невелик - сафари или третий FF (можно поставить плагин, можно в about:config врубить фильтрацию по gfx.color и поменять пару свойств, эффект будет тот же) - кстати, советую это сделать и заценить разницу с IE или на упомянутой выше странице, или тут.

С видео же полный швах - насколько я понял, практически все медиаплейеры просто игнорируют работу с цветами. Конечно, ixbtшная ветка по деллу полна восторгов о ярких цветах, но лично для меня веселый загар большинства персонажей большинства фильмов, переходящий в нездоровый румянец, кислотный зеленый цвет травы и прочие прелести расширенного охвата (а уж во что превращаются стартрековские красные униформы - просто непередаваемо) - вовсе не то, о чем мечталось. К счастью, небольшой поиск привел на страницу с описанием грязного хака, позволяющего подхватить ICC-профиль в Media Player Classic - через редактирование шейдеров (раздел "4. Experimental colour correction in Media Player Classic"). Проверил, результат вполне удовлетворителен. Единственный подводный камень - при переносе полученного шейдера нужно учесть, что в системе с русской локалью запятые в числах нужно заменить на точки. Кроме того, чтобы при просмотре через VMR9 черный цвет выглядел как черный, а не темно-серый, стоит подправить первую строчку функции main этого шейдера, позаимствовав код из шейдера "16-235 -> 0-255".

Окончательный вариант для моих настроек выглядит так:


sampler s0 : register(s0);
float4 p0 : register(c0);

static float4x4 r2r =
{
0.701797172201328,0.31522478186818,-0.0170219540695086,0,
0.0424436523871912,0.948910562083758,0.00864578552905135,0,
0.0112113910919667,-0.0114383758869162,1.00022698479495,0,
0, 0, 0, 0
};

#define Const_1 (16.0/255.0)
#define Const_2 (255.0/219.0)

float4 main(float2 tex : TEXCOORD0) : COLOR
{
float4 c0 = ( tex2D( s0, tex ) - Const_1 ) * Const_2;
c0 = pow(c0, 2.2);
c0 = mul(r2r, c0);
c0 = saturate(c0);
c0 = pow(c0, 1/2.2);
return c0;
}


Что особенно забавно: получается (из того, как это реализовано), что единственное, чего не хватает всем прочим программам после загрузки профиля в систему, - правильного выставления цветовых координат чистых цветов. Если б система могла использовать эти 9 чисел самостоятельно, не пришлось бы рыть носом в поисках правильных программ.

 
теги: софт, цацки  |  обсудить  |  все отзывы (0)  |  обсудить в LJ [1512]
назад «  » вперед

аналогичные материалы
макоудаленное // 29.01.24 23:10
разнонедельное // 07.12.23 15:09
тейлскейлное // 18.04.23 20:43
ютубноподкастное // 15.10.22 22:07
дваждыодиннадцатое // 22.06.22 03:30
безоблачнопарольное // 22.03.22 23:05
объективноапгрейдное // 25.02.22 21:07
умнозарядное // 21.02.22 15:55
облачночитальное // 16.02.22 16:21
клавиатурнопоточное // 05.01.22 15:35
 
последние записи
песчаное // 13.03.24 18:05
макоудаленное // 29.01.24 23:10
разнонедельное // 07.12.23 15:09
qtменюшное // 29.09.23 23:47
неестественноинтеллектуальное // 29.09.23 16:50
основательное // 18.09.23 00:15
отпускное // 06.08.23 00:26
вчерашнезавтрашнее // 02.07.23 15:25
позитивное // 27.06.23 13:05
тейлскейлное // 18.04.23 20:43


авто венгрия вырвиглаз германия глюки греция гуглемап драйверы египет железки журнализм империя добра испания италия кино кипр клоуны книги криворучки оспорт португалия программизм сайт софт стрим студень турция уродцы фото франция цацки чехия читалки android bq e51 eeepc from facebook hd2 hpc htc ipad iphone onlime vista windows 10 windows 7 windows 8 yota



Rambler's Top100
Рейтинг@Mail.ru



  Copyright © 2001-2024 Dmitry Leonov   Page build time: 0 s   Design: Vadim Derkach