In VFX the display transform is a viewer setting you can switch off. In a game it is part of the product — and the player's screen, unlike the grading suite's, was never calibrated by anyone. W VFX transformacja wyświetlania jest ustawieniem viewera, które można wyłączyć. W grze jest częścią produktu — a ekranu gracza, w odróżnieniu od monitora w gradingu, nikt nigdy nie skalibrował.
Historically Unreal shaded in scene-linear sRGB/Rec.709 primaries — the same linear-light principle as Chapter 3, but with the narrower gamut of Chapter 4 rather than ACEScg. Newer versions expose a project-level working colour space setting, ACEScg included, which changes the primaries every shading computation happens in. This is not a cosmetic switch: it changes how saturated lights and saturated albedos multiply together, exactly as Chapter 4 predicted, and it interacts with every texture already authored under the old assumption. Historycznie Unreal cieniował w liniowej przestrzeni o prymariach sRGB/Rec.709 — ta sama zasada liniowego światła co w Rozdziale 3, ale z węższym gamutem z Rozdziału 4 zamiast ACEScg. Nowsze wersje wystawiają ustawienie przestrzeni roboczej na poziomie projektu, z ACEScg włącznie, które zmienia prymaria, w jakich odbywa się każde liczenie cieniowania. To nie jest przełącznik kosmetyczny: zmienia sposób, w jaki mnożą się nasycone światła z nasyconym albedo — dokładnie jak przewidywał Rozdział 4 — i wchodzi w interakcję z każdą teksturą zautorowaną pod starym założeniem.
The practical rule is the same as in a VFX show: the working space is a project decision made once, at the start, by whoever owns colour — not a per-artist preference. What each texture means is still Chapter 11's colour-versus-data question, and in Unreal it is answered by one checkbox on the texture asset (sRGB) plus the compression setting, which is why a normal map or a roughness mask with sRGB left on is the single most common colour bug in an engine project. Praktyczna zasada jest ta sama co na produkcji VFX: przestrzeń robocza to decyzja projektowa podejmowana raz, na starcie, przez osobę odpowiedzialną za kolor — nie preferencja pojedynczego artysty. To, co znaczy każda tekstura, wciąż jest pytaniem kolor kontra dane z Rozdziału 11, a w Unrealu odpowiada na nie jeden przełącznik na asecie tekstury (sRGB) plus ustawienie kompresji — i dlatego normalna albo maska roughness z zostawionym sRGB to najczęstszy błąd kolorystyczny w projekcie silnikowym.
Engines express exposure in EV100, the same photographic unit as Chapter 9's stops, tied to a luminance the camera maps to middle grey: Silniki wyrażają ekspozycję w EV100 — tej samej jednostce fotograficznej co stopy z Rozdziału 9 — powiązanej z luminancją, którą kamera odwzorowuje na średnią szarość:
By default the engine drives that value automatically from the histogram of what is on screen — eye adaptation. For gameplay this is desirable; for lookdev it is fatal, because darkening the material and darkening the scene produce the same picture after adaptation, so the one thing you are trying to evaluate is exactly the thing the system compensates away. In a lookdev level, set the exposure method to manual, or clamp the minimum and maximum EV100 to the same number, and note that value in the scene: a look approved at a fixed EV is reproducible, a look approved under adaptation is not. Domyślnie silnik prowadzi tę wartość automatycznie, z histogramu tego, co jest na ekranie — to adaptacja wzroku. W rozgrywce jest pożądana; w lookdevie jest zabójcza, bo przyciemnienie materiału i przyciemnienie sceny dają po adaptacji ten sam obraz, więc jedyna rzecz, którą próbujesz ocenić, jest dokładnie tą, którą system kompensuje. W poziomie lookdevowym ustaw metodę ekspozycji na ręczną albo zaciśnij minimum i maksimum EV100 na tej samej liczbie i zanotuj ją w scenie: look zatwierdzony przy stałym EV jest odtwarzalny, look zatwierdzony pod adaptacją — nie.
The same discipline applies to lights. Engines that use physical light units (lumen, candela, lux, nits) let a lighting setup be described in the same numbers as the HDRI rig of Chapter 21 — and a rig described in physical units survives being rebuilt, while one tuned by dragging an intensity slider until it looked right does not. Ta sama dyscyplina dotyczy świateł. Silniki używające fizycznych jednostek światła (lumen, kandela, luks, nit) pozwalają opisać setup oświetleniowy tymi samymi liczbami co rig HDRI z Rozdziału 21 — a rig opisany w jednostkach fizycznych przeżyje przebudowę, podczas gdy taki dostrojony ciągnięciem suwaka intensywności aż „zaczęło wyglądać” — nie.
Unreal's colour grading section exposes Saturation, Contrast, Gamma, Gain and Offset — four of which are literally the operators of Chapters 7 and 8. The ASC CDL of Chapter 8 is: Sekcja color gradingu w Unrealu wystawia Saturation, Contrast, Gamma, Gain i Offset — cztery z nich to dosłownie operatory z Rozdziałów 7 i 8. ASC CDL z Rozdziału 8 to:
Two differences from a Nuke grade are worth internalising. First, every control exists four times — global, shadows, midtones, highlights — with adjustable crossover points, which is closer to a colourist's primary wheels than to a single Grade node; the same value entered in "global" and in "midtones" does not produce the same image. Second, and more important: this grade is applied to the game, permanently, for everyone. A grade that fixes a material's albedo being too dark fixes it in every scene that volume touches, and the material is still wrong. The rule from Chapter 7 — grading corrects how you look at the scene, not what the material is made of — is not weakened in an engine, it is enforced by the fact that nobody downstream will ever separate the two again. Dwie różnice względem grade'a w Nuke warto sobie przyswoić. Po pierwsze, każda kontrolka istnieje cztery razy — globalnie, cienie, średnie tony, światła — z regulowanymi punktami przejścia, co jest bliżej kół primary kolorysty niż pojedynczemu węzłowi Grade; ta sama wartość wpisana w „global” i w „midtones” nie daje tego samego obrazu. Po drugie, i ważniejsze: ten grading nakłada się na grę, na stałe, dla wszystkich. Grading naprawiający zbyt ciemne albedo materiału naprawia je w każdej scenie, której dotyka ten volume, a materiał dalej jest zły. Zasada z Rozdziału 7 — grading poprawia to, jak patrzysz na scenę, a nie to, z czego zrobiony jest materiał — nie słabnie w silniku; wymusza ją fakt, że nikt dalej w łańcuchu już nigdy tych dwóch rzeczy nie rozdzieli.
Unreal's default tonemapper is a filmic S-curve derived from ACES — an approximation of the RRT/ODT pair described in raytracing-book's ACES series, fast enough to run every frame. It is exposed as film-curve parameters (slope, toe, shoulder, black clip, white clip) plus a gamut-expansion control that decides how far very saturated, very bright values are allowed to travel before the curve desaturates them. Domyślny tonemapper Unreala to filmowa krzywa S wyprowadzona z ACES — przybliżenie pary RRT/ODT opisanej w serii ACES w raytracing-book, na tyle szybkie, żeby liczyć je co klatkę. Wystawiony jest jako parametry krzywej filmowej (slope, toe, shoulder, black clip, white clip) plus kontrolka rozszerzania gamutu decydująca, jak daleko mogą zawędrować bardzo nasycone, bardzo jasne wartości, zanim krzywa je odsyci.
↓ raytracing-book, Appendix N — the RRT/ODT pair this curve approximates, derived in full↓ raytracing-book, Dodatek N — para RRT/ODT, którą ta krzywa przybliża, wyprowadzona w całościFor lookdev the consequence is the one from Chapter 6, sharpened: your material's specular highlight will be compressed by the shoulder and desaturated on its way to white, and that behaviour is part of the deliverable. Judging a highlight "too hot" or a saturated fabric "too electric" only means something with the shipping curve applied — which is also why changing the tonemapper's parameters late in a project silently re-grades every material anyone already approved. Dla lookdevu konsekwencja jest ta z Rozdziału 6, tylko wyostrzona: rozbłysk specularu Twojego materiału zostanie skompresowany przez ramię krzywej i odsycony w drodze do bieli, a to zachowanie jest częścią deliverable'u. Ocena „za gorący” rozbłysk albo „zbyt elektryczna” nasycona tkanina znaczy cokolwiek tylko z nałożoną docelową krzywą — i dlatego zmiana parametrów tonemappera późno w projekcie po cichu przegradowuje każdy materiał, który ktoś już zatwierdził.
Where a project needs the VFX chain rather than the game one — virtual production, an in-engine cinematic delivered to an editorial pipeline — Unreal's OpenColorIO plugin applies a real OCIO configuration to the viewport and to rendered output, which is the same config architecture pipeline-book covers from the engineering side. Note the asymmetry: in a shipped game OCIO is an authoring aid that never reaches the player, while in virtual production it is the whole chain and must match the show's config exactly. Tam, gdzie projekt potrzebuje łańcucha z VFX, a nie z gry — wirtualna produkcja, cinematic renderowany w silniku i oddawany do montażu — wtyczka OpenColorIO w Unrealu nakłada prawdziwy config OCIO na viewport i na render wyjściowy; to ta sama architektura configów, którą pipeline-book opisuje od strony inżynierskiej. Zwróć uwagę na asymetrię: w wysyłanej grze OCIO jest pomocą autorską, która nigdy nie dociera do gracza, a w wirtualnej produkcji jest całym łańcuchem i musi dokładnie zgadzać się z configiem showu.
↓ pipeline-book, Appendix D — how an OCIO config is actually built, from the engineering side↓ pipeline-book, Dodatek D — jak naprawdę zbudowany jest config OCIO, od strony inżynierskiejAppendix I built the calibrated viewing environment a look is approved in: a profiled display, a known white point, controlled surround. A game has none of that. It runs on an uncalibrated TV in a bright room, in a "vivid" picture mode nobody turned off, on a phone-sized handheld, and — if it supports HDR — through a display transform to PQ whose peak brightness varies by an order of magnitude between devices. Dodatek I zbudował skalibrowane środowisko oglądania, w którym zatwierdza się look: sprofilowany monitor, znany punkt bieli, kontrolowane otoczenie. Gra nie ma nic z tego. Chodzi na nieskalibrowanym telewizorze w jasnym pokoju, w trybie „vivid”, którego nikt nie wyłączył, na przenośnej konsoli wielkości telefonu, a jeśli wspiera HDR — przez transformację do PQ, której szczytowa jasność różni się między urządzeniami o rząd wielkości.
This is why games ship calibration screens ("raise the slider until the logo is barely visible"), and why realtime lookdev protects the look with margin instead of precision: don't put storytelling information in the bottom two per cent of the range, don't rely on a highlight separation of a tenth of a stop, and check the asset once on a deliberately badly-set display. The offline habit of trusting the reference monitor has no realtime equivalent — the reference monitor is still how you author, but it stops being how the work is seen. Dlatego gry mają ekrany kalibracyjne („podnoś suwak, aż logo będzie ledwo widoczne”) i dlatego lookdev realtime chroni look zapasem, a nie precyzją: nie umieszczaj informacji fabularnej w dolnych dwóch procentach zakresu, nie opieraj się na separacji rozbłysków rzędu jednej dziesiątej stopa i sprawdź asset raz na celowo źle ustawionym ekranie. Nawyk offline'owego ufania monitorowi referencyjnemu nie ma odpowiednika w realtime — monitor referencyjny wciąż jest tym, na czym autorujesz, ale przestaje być tym, na czym praca jest oglądana.
A lookdev level's colour setup is worth writing down as a checklist and re-checking whenever a shot looks wrong: exposure manual and pinned, auto-exposure off, colour grading neutral in the volume you are working in (a grade left in from someone else's test is the classic ghost bug), tonemapper at the project's shipping settings — never at a "neutral" or bypassed state — and lights in physical units. Only then does a difference between two materials mean a difference between two materials. Ustawienia kolorystyczne poziomu lookdevowego warto spisać jako checklistę i sprawdzać ją, ilekroć ujęcie wygląda źle: ekspozycja ręczna i przybita, auto-ekspozycja wyłączona, color grading neutralny w volume, w którym pracujesz (zostawiony grading z czyjegoś testu to klasyczny błąd-duch), tonemapper w docelowych ustawieniach projektu — nigdy w stanie „neutralnym” ani obejściu — i światła w jednostkach fizycznych. Dopiero wtedy różnica między dwoma materiałami oznacza różnicę między dwoma materiałami.
Colour handled, the remaining realtime constraint is memory and instructions. Chapter 27 goes into the texture and shader budget: what block compression does to a mask that looked clean in Photoshop, why mip levels make a rough surface sparkle, and how channel packing turns Chapter 11's colour-versus-data rule into a file-format decision. Kolor załatwiony, więc zostaje ograniczenie pamięci i instrukcji. Rozdział 27 wchodzi w budżet tekstur i shaderów: co kompresja blokowa robi masce, która w Photoshopie wyglądała czysto, dlaczego poziomy mip sprawiają, że szorstka powierzchnia zaczyna iskrzyć, i jak channel packing zamienia zasadę kolor kontra dane z Rozdziału 11 w decyzję o formacie pliku.