Back to site

Так шмат колераў

Original on http://bholley.wordpress.com/2008/09/12/so-many-colors/

Гэтым летам я працаваў на атрыманне кіравання колерам Mozilla's бэкэнд гатовы да прайм-тайм. Мы, нарэшце, яго ўключэнні ў сённяшнім начныя зборкі, так што я думаў, што я даць некаторыя звесткі пра гісторыю кіравання колерам у Mozilla і кіраванні колерам у цэлым. Вы ўсё павінны ісці запампаваць апошнія начныя, калі ён выйдзе і даць яму паспрабаваць.

У двух словах, кіраванне колерам мяркуе выкарыстанне інфармацыі пра дысплей кампутара, а ў некаторых выпадках інфармацыя пра некаторыя малюнкаў, каб зрабіць старонкі больш сапраўды. Насуперак распаўсюджанаму меркаванню, значэнне RGB (напрыклад, # FFFFFF) само па сабе не ўяўляюць колеры. Хутчэй, значэнні для чырвонага, зялёнага і сіняга каналаў можна разглядаць як каардынаты ў каляровай прасторы, якая ўтрымоўвае актуальныя колеры. Колер, што картэж RGB уяўляе такім чынам, залежыць ад таго, як каляровая прастора вызначаецца (гл. Вікіпедыю для атрымання дадатковай інфармацыі).

Гэты тып інфармацыі звычайна захоўваецца ў файле з імем профіля ICC колер. Кампутар адлюстроўвае часта пастаўляюцца з профілямі ICC, якія сапраўды вызначаюць, якім чынам розныя значэнні RGB будзе выглядаць на экране. Акрамя таго, JPG і PNG малюнкі часта з пазнакай профілі ICC для апісання каляровай прасторы пікселяў. У тэорыі, кожны малюнак павінен прыйсці з каляровай профіль паказаўшы яго каляровая прастора. Аднак, шматлікія выявы не ўтрымоўваюць убудаваных профіляў і не будзе сэнсу для CSS стыляў убудаваць каляровы профіль для CSS кветак. Як вынік, W3C вызначыў, што неадзначаныя вэб-кантэнту павінны лічыць у стандартнай каляровай прасторы sRGB завецца. Так кіраванні колерам у Mozilla сапраўды два этапу: мы карту ўваходных RGB значэнняў з адпаведных каляровых прастор, і ў каляровую прастору манітора (які мы атрымліваем з дапамогай запыту аперацыйнай сістэмы).

Colors are more complicated than you might think.

Кветкі з'яўляюцца больш складанымі, чым вы думаеце.

Каля года назад, Майк Белцнер прадставіла каляровы Mozilla кіраўнічай падтрымкі у сваім блогу. Нажаль, было некалькі асноўных пытанняў, якія захоўваюцца рэжым кіравання колерам мноства прама на "OFF" для выпуску Firefox 3.0.

Першым чынам, там было даволі шмат памылак рэндэрынгу падала на наш колер ажыццяўлення кіравання. Я быў у стане пацвердзіць шматлікія з іх, і выявіць яшчэ некалькі сабе, і я прызямліўся неабходныя выпраўленні. Існавалі таксама даволі шмат пытанняў, з нашай Reftest Suite аказанні цест, які неабходна фіксацыі так што выпрабаванні будуць праходзіць з кіравання колерам на. Гэтыя пытанні таксама былі выпраўлены. Тым не менш, некалькі чалавек, паведамілі дзіўныя паводзіны рэндэрынгу (белых з'яўляецца жаўтлявы, блюз з'яўляецца фіялетавы), што апынулася выніку фіктыўных профіляў адлюстравання на рэпарцёра сістэмы (вялікае дзякуй Крыс Мэрфі для крэдытавання сваім досведам па дадзеным пытанні). Гэта страшна, таму што гэта павялічвае верагоднасць таго, што любая колькасць людзей маглі б бачыць невытлумачальна дзіўныя колеры ў свой браўзар разоў мы пераходзім ад кіравання колерам. Такім чынам, мы спадзяемся атрымаць як шматлікія тэстары наколькі гэта магчыма ў nightlies і бэта-версіі, каб убачыць, наколькі шырока праблема.

Яшчэ адна праблема ў нас было звыш кіраванні колерам павінны былі зрабіць з дапамогай убудоў. Паколькі ўбудовы, такія як Flash і Java зрабіць свой уласны малюнак, мы не маем ніякага кантролю над ці выкарыстоўваюць яны для кіравання колерам. Хоць пашырэнне Plugin API, каб дазволіць гэтаму знаходзіцца ў працы, то ў наш час ніякага спосабу для браўзара і ўбудоў для каардынацыі па кіраванні колерам. Калі браўзар колеру карэктуе колер, а ўбудова не, яны ўжо не выглядаюць сапраўды гэтак жа, побач. На дадзены момант невыразна, як менавіта такая ўжо вялікая праблема гэта, але мы будзем удзячныя, зваротная сувязь.

Тым не менш, найбуйны кіраванні колерам чынніку быў адключаны для Firefox 3.0 было тое, што рэгрэс прадукцыйнасці прыкладна на 20-30% (па нашых Талос выпрабаванняў ) пры ўключэнні. Гэта было палічана непрымальным для налады па змаўчанні. Такім чынам, я правёў шмат часу прафілявання кода, а затым распрацоўкі, рэалізацыі і тэставанні дзясяткі стратэгій выціснуць накладныя выдаткі, як блізка да нуля, як гэта магчыма.

Гэта апынулася вельмі цяжка. Кіраванне колерам на піксель пераўтварэння, гэта азначае, што мы павінны выклікаць функцыю для кожнага піксела малюнка (CSS кветкі лягчэй, бо паўтараецца пікселяў, як вядома, аказанне код). Такая ашаламляльна паралельна праблема будзе ідэальным кандыдатам для апаратнага паскарэння, але мы толькі пачалі распрацоўваць планы для OpenGL і Direct3D рухавічкі ў Каір, так што гэты будзе даволі доўгі час, перш чым мы можам проста напісаць карыстацкіх шэйдараў і зрабіць Уся праблема знікне. Як вынік, я вырыў у маіх пятках і працаваў на тым, каб пераўтварэнне аднаго піксела вельмі, вельмі хутка. Пасля некаторай змены архітэктуры, розных стратэгій кэшаванне, і шмат рук наладжаны SSE2 Асамблеі, накладныя выдаткі поўнага старонцы кіравання колерам, нарэшце, прыкладна ў 4-5% на ўсіх платформах.

За апошнія некалькі месяцаў, гэта здавалася досыць. Белцнер была ўспрымальная да ідэі ператварэння яго, і ніхто ні ў адным з паседжанняў развіцця выказалі ніякіх нараканняў па гэтым пытанні. Роберт O'Callahan і Дэвід Барон выказаў некаторыя асцярогі з нагоды выкананні стандартаў і сумяшчальнасці, але абедзве былі гатовыя, каб уключыць яго для Firefox 3.1 Beta 1 для таго, каб атрымаць зваротную сувязь ад супольнасці. Аднак, як Улад і я былі пасадкі канчатковага выпраўлення, каб уключыць кіраванне колерам, мы былі пакутуе ад шквал скептыкаў, якія не жадаецца прадукцыйнасці каштавала.

Як рэзервовага, я раней ажыццяўляецца трэці рэжым для кіравання колерам, які карэктуе колеры малюнка адзначыў толькі, што мае прадукцыйнасці каля 1%. Safari быў колер, якія выпраўляюць адзначыў малюнкі на некаторы час зараз, і гэта, безумоўна, што дамінуе выпадку выкарыстання для кіравання колерам. Улічваючы буксіроўкі на поўным кіраванні колерам, падобна, нам прыйдзецца пагадзіцца на значэнне па змаўчанні "адзначыў толькі" на дадзены момант. Магчымасці для поўнага выпраўлення даступныя ў Firefox, і, спадзяюся, мы будзем мець лёгкі спосаб пераключэння рэжымаў па часе 3,1 выкочваюцца дзверы. Для зараз, вы можаце перайсці да о: канфігурацыі і мноства gfx.color_management.mode у "0" на няма кіравання колерам, '1 'для поўнага кіравання колерам, і "2" (па змаўчанні), адзначыў толькі для карэкцыі (па тэхнічных чынніках, вам неабходна перазапусціць браўзар для гэтага змен у сілу). Деб Ричардсон сабраў вялікае паведамленне ў блогу, дзе яна звярнула ўвагу на некаторыя адрозненні паміж Кіраванне колерам, а не Кіраванне колерам адзначыў малюнкаў. Я заклікаю вас, каб праверыць гэта.

Color Management Off, Color Management On

Кіраванне колерам Off, Кіраванне колерам (Крыніца DEB)

Асабістыя расчараванні ў бок, я думаю, было б добрай ідэяй, каб адкрыць дыскусію па пытанні пра поўны кіраванні колерам у Інтэрнэце. У свеце, дзе кожны браўзар падтрымлівае кіраванне колерам і ніхто не фіктыўных профіляў дысплей (ідэалістычнай, я ведаю), вэб-дызайнер можа абраць каляровую схему для сваёй вэб-старонкі і быць упэўнены, што ён насамрэч выглядаюць аднолькава для кожнага гледача. Белыя будзе сапраўды белае, і што заспакаяльнае адценне зялёнага будзе выглядаць гэтак жа добра, на наўтбуку вашай маці, як гэта робіць на вашым працоўным стале. Я заклікаю людзей, каб паспрабаваць прагляду вэб-старонак з gfx.color_management.mode = 1. Ёсць прыкметны ўплыў на прадукцыйнасць? Вы запусціць праз любы вэб-старонкі, якія не выглядаюць ці не так? Колькі колеру ўбудовы вы бачыце на штодзённай аснове? Вы клапоціцеся пра карэкцыю колеру? Як заўсёды, Firefox ваш браўзар, і мы жадаем ведаць, што вы жадаеце. Так скажыце нам.

Published (Last edited): Feb 10