RGB spalvų pasirinkimo įrankis yra nepaprastai naudingas tiesioginiam kasdieniam darbui, tačiau tikroji jo vertė atsiskleidžia tada, kai kodo eilutės nustoja atrodyti kaip atsitiktinė kompiuterinė biurokratija ir pradeda įgauti gilią prasmę. Tokia reikšmė kaip rgb(255, 0, 0) nėra tiesiog techninė etiketė, kurią prie spalvos priklijavo nuobodžiaujanti mašina. Tai yra glaustas ir tikslus aprašymas to, kaip elgiasi skaitmeninė šviesa, kaip evoliucionavo ekranų gamybos technologijos ir kaip žmogaus biologinė regos sistema interpretuoja supančią aplinką. Kai tik tai suprantate, RGB nustoja atrodyti kaip sterili programavimo konvencija ir virsta nuostabiai elegantišku tiltu tarp fundamentalaus mokslo, žmogaus anatomijos ir šiuolaikinio dizaino.

RGB reiškia Raudona, Žalia, Mėlyna (angl. Red, Green, Blue). Šie trys nepriklausomi kanalai sudaro vieną pagrindinių spalvų modelių, naudojamų šiuolaikiniuose skaitmeniniuose ekranuose. Išmanieji telefonai, nešiojamieji kompiuteriai, stacionarūs monitoriai, planšetės, televizoriai, šviečiančios LED iškabos, drobės grafika (angl. canvas), vartotojo sąsajų sistemos, vaizdų redaktoriai, naršyklių renderinimo varikliai ir nesuskaičiuojama daugybė kitų švytinčių stačiakampių naudoja RGB kaip praktinę kalbą spalvoms kurti šviesos pagalba. Ši paskutinė frazė yra lemiama: šviesos pagalba. RGB modelis nėra susijęs su dažais, pigmentais, rašalu ar kokiomis nors cheminėmis medžiagomis, gulinčiomis ant pasyvaus popieriaus lapo. Jis kalba apie tiesioginę, spinduliuojamą šviesą, kuri tiesiu keliu pasiekia jūsų akis.

RGB: trys fotonai ir begalė apgavysčių

Norint suprasti, kodėl būtent raudona, žalia ir mėlyna tapo pasirinktąja trejybe, pravartu trumpam atsitraukti nuo technologijų ir pasigilinti į žmogaus biologiją. Žmonės, kalbėdami apie regėjimą, dažnai prisimena rainelę, daugiausia todėl, kad rainelė yra aiškiai matoma ir džiaugiasi išoriniu dėmesiu. Tačiau rainelė iš esmės tėra diafragma, kuri reguliuoja į akį patenkančios šviesos kiekį ir suteikia akiai jos atspalvį. Tikrasis sunkusis spalvų suvokimo darbas atliekamas kur kas giliau – tinklainėje (retina). Būtent ten šviesai jautrios ląstelės paverčia patenkančius fotonus elektriniais impulsais, kuriuos smegenys gali interpretuoti. Tarp šių ląstelių yra garsieji kūgeliai, ir būtent kūgeliai yra centrinė visos RGB istorijos ašis.

Žmogaus akyje paprastai yra trijų pagrindinių tipų kūgeliai, kurių kiekvienas yra jautriausias skirtingoms regimojo spektro sritims:

  • L-kūgeliai (Long wavelength): jautriausi ilgosioms bangoms (~560 nm, raudonasis spektro galas).
  • M-kūgeliai (Medium wavelength): jautriausi vidutinėms bangoms (~530 nm, žalioji spektro dalis).
  • S-kūgeliai (Short wavelength): jautriausi trumposioms bangoms (~420 nm, mėlynoji spektro dalis).

Mūsų smegenys nemato jokių atskirų bangų ilgių lentelių, kabančių juodoje erdvėje lyg kokių sausų laboratorinių diagramų. Jos tiesiog lygina šių trijų kūgelių grupių santykinį sužadinimą ir sukonstruoja pojūtį, kurį mes vadiname spalva. Tai yra esminė idėja: mums nereikia atskiro receptoriaus kiekvienai įmanomai spektro spalvai. Vietoj to, regos sistema sukuria milžinišką spalvų įvairovę iš santykinių signalų vos per tris kanalus.

Štai kur prasideda didžioji technologinė ironija: jūsų kompiuterio ekranas fiziškai negali sugeneruoti geltonos šviesos fotono. Ekranas turi tik trijų spalvų emiterius – raudoną, žalią ir mėlyną. Kai ekrane matote prinokusią citriną ar geltoną mygtuką, monitorius tiesiog vienu metu maksimaliai įžiebia raudonus ir žalius subpikselius. Jūsų smegenys, gavusios vienalaikį signalą iš raudonųjų ir žaliųjų tinklainės receptorių, atlieka sintezę ir sukuria geltonos spalvos pojūtį. Visas skaitmeninis pasaulis yra 60 ar 120 kartų per sekundę kartojama trijų spalvų optinė apgaulė.

Subpikselių geometrija ir PenTile technologija

Kiekvienas skaitmeninio ekrano taškas (pikselis) susideda iš mažyčių fizinių subpikselių. Tradiciniuose LCD monitoriuose naudojama lygiagreti RGB Stripe juostų geometrija. Tačiau moderniuose OLED ekranuose, ypač „Samsung AMOLED“ matricose, naudojamas PenTile RGBG išdėstymas, kur žalių subpikselių yra dvigubai daugiau nei raudonų ar mėlynų. Inžinieriai šį sprendimą priėmė neatsitiktinai: žmogaus akies tinklainėje M-kūgelių (žaliųjų) koncentracija yra didžiausia, todėl akis yra jautriausia žalios šviesos skiriamajai gebai. Tai leidžia sumažinti ekrano energijos sąnaudas išlaikant nepriekaištingą vaizdo ryškumą.

Thomas Young, Helmholtz ir Maxwell: istorinis kelias

Šios idėjos šaknys siekia XIX amžių. Garsus britų polimatas Thomas Youngas 1802 m. pirmasis iškėlė trichromatinės regos hipotezę, kurią vėliau matematiškai ir eksperimentiškai ištobulino vokiečių fizikas Hermannas von Helmholtzas (vadinamoji Young-Helmholtz teorija).

O 1861 m. legendinis škotų fizikas Jamesas Clerkas Maxwellas pademonstravo pirmąją pasaulyje spalvotą fotografiją: jis nufotografavo tartano kaspiną pro tris skirtingus filtrus (raudoną, žalią ir mėlyną) ir vėliau, trimis projektoriais nukreipęs šviesą į vieną tašką, atkūrė pilnavertį spalvotą vaizdą. Tai buvo momentas, kai spalva iš mistinio meno virto reiškiniu, kurį galima matematiškai modeliuoti, eksperimentiškai tikrinti ir inžineriškai atkartoti.

Kiek spalvų? 16 777 216 ir baitinė buhalterija

Skaitmeninėse sistemose kiekvienas RGB kanalas saugomas kaip vienas baitas (8 bitai). Aštuoni bitai dvejetainėje sistemoje leidžia užkoduoti 28 = 256 skirtingus intensyvumo lygius – nuo 0 (visiškai išjungta) iki 255 (maksimalus švytėjimas).

Kombinuojant tris nepriklausomus kanalus gaunama:

256 × 256 × 256 = 16 777 216 unikalių spalvų (True Color / 24-bit)

Pagrindiniai adityviosios sintezės taškai:

  • rgb(255, 0, 0) – gryna raudona.
  • rgb(0, 255, 0) – gryna žalia.
  • rgb(0, 0, 255) – gryna mėlyna.
  • rgb(255, 255, 0) – geltona (raudona + žalia).
  • rgb(0, 255, 255) – cianas / žydra (žalia + mėlyna).
  • rgb(255, 0, 255) – magenta / purpurinė (raudona + mėlyna).
  • rgb(255, 255, 255) – balta (visų kanalų maksimumas).
  • rgb(0, 0, 0) – juoda (visiška tamsa, diodai išjungti).

HSL ir HSV: cilindrinis modelis žmogaus patogumui

Nors RGB yra idealus mašinoms, žmogui sunku intuityviai nuspėti, kokius RGB skaičius įvesti, norint padaryti spalvą „šiek tiek šiltesnę“ ar „labiau pastelinę“. Todėl kompiuterių grafikoje atsirado HSL (Hue, Saturation, Lightness) modelis. HSL perkelia RGB kubą į cilindrines koordinates: Hue nurodo kampą spalvų rate (0°–360°), Saturation – grynumą procentais, o Lightness – šviesumą. Tai leidžia programuotojams kurti dinamines vartotojo sąsajų temas keičiant vos vieną parametrą.

HEX ir RGB: tas pats kodas skirtingu formatu

HEX kodas žiniatinklio programavime tėra RGB reikšmių užrašymas šešioliktainėje (hexadecimal) skaičiavimo sistemoje. Skaičiai nuo 0 iki 255 atitinka šešioliktainius rėžius nuo 00 iki FF. Pavyzdžiui, ryški oranžinė rgb(255, 128, 0) šešioliktainiu formatu užrašoma kaip #FF8000 (255 = FF, 128 = 80, 0 = 00). Tai identiška spalva, tiesiog užrašyta kompaktiškesniu kodu, tinkamu CSS stiliams.

RGB prieš CMYK: šviesos spinduliavimas prieš šviesos sugėrimą

Kuriant dizainą ekrane ir vėliau jį spausdinant spaustuvėje, dažnai susiduriama su problema: ryškios ekrano spalvos ant popieriaus atrodo prislopintos ir purvinos. Taip nutinka dėl fundamentalaus fizikinio skirtumo:

  • RGB (Adityvusis modelis): veikia ekrane. Pradedama nuo juodos tamsos ir pridedama spinduliuojamos šviesos. Daugiau fotonų – šviesesnis rezultatas.
  • CMYK (Subtraktyvusis modelis): veikia popieriuje. Pradedama nuo balto popieriaus lapo, o dažai (Cianas, Magenta, Geltona, Juoda) yra cheminiai pigmentai, kurie sugeria (atima) tam tikras spektro bangas. Fizinis pigmentas negali atspindėti daugiau šviesos, nei į jį krenta iš kambario šviestuvo.

Spalvų erdvės: sRGB, DCI-P3 ir gama korekcija

Ne visi ekranai rodo RGB vienodai. Standartinė interneto spalvų erdvė yra sRGB, sukurta 1996 m. „HP“ ir „Microsoft“. Modernūs telefonai ir profesionalūs monitoriai naudoja platesnės gamos erdves, tokias kaip Display P3 (apimančią apie 25% daugiau sočių žalių ir raudonų atspalvių) arba televizijos Rec. 2020. Be to, žmogaus akis šviesos ryškumą vertina ne tiesiškai, o logaritmiškai – todėl visiems RGB signalams taikoma gama korekcija (Gamma 2.2), užtikrinanti tolygų šešėlių ir šviesių tonų perėjimą.

WCAG kontrastas ir prieinamumas internete

Kuriant interneto svetaines nepakanka pasirinkti gražią RGB spalvą – privaloma užtikrinti teksto įskaitomumą pagal WCAG 2.1 (Web Content Accessibility Guidelines) standartą. Minimalus rekomenduojamas kontrasto santykis tarp teksto ir fono spalvos yra 4.5:1 įprastam tekstui ir 3.0:1 stambiam tekstui bei interaktyviems mygtukams.

Kaip veikia spalvų matematika ir atstumas?

Skaitmeninėje grafikoje dvi spalvos gali būti palyginamos trimatėje Euklido erdvėje pagal formulę: Atstumas = sqrt((R2 - R1)² + (G2 - G1)² + (B2 - B1)²). Tai leidžia vaizdo redaktoriams nustatyti spalvų tolerancijos ribas (pvz., burtų lazdelės įrankiui) ir automatiškai parinkti artimiausius atspalvius paletėse.