Чому не слід виправляти гамма-картки, звичайні та зміщені карти?


9

Тому я намагаюся обернути голову навколо цього з досить технічної точки зору.

Коли ви додаєте карту Bump або Normal або Displacement у свій шейдер, вони не повинні бути виправлені гаммою. Але дифузні текстури повинні бути. Але чому?

Коли ви зберігаєте файл у 8-бітовому (або 16-бітовому цілому) у такому форматі, як JPEG, PNG або TIFF, вони запалюють гаму 0,4545 (1 / 2,2). Отже, камера захоплює світло з реального світу (тобто лінійного) і при збереженні фотографії у форматі JPEG додається значення гамма 1 / 2,2, як спосіб стиснення інформації в 8 біт, а потім при перегляді зображення на моніторі, що додає гаму 2,2, що робить яскравість знову лінійною.

Тому при використанні дифузних текстур (наприклад, на фотографії) вам потрібно "видалити" гаму 1 / 2.2, щоб зробити її лінійною (називається лінеаризацією), тому текстура виглядає темнішою, але ці значення є правильними з математичної точки зору, тому рендерінг буде зробити правильні розрахунки. Побічна примітка: програмне забезпечення використовувало дисплейну гаму 2,2, щоб переконатися, що текстури виглядають правильно, саме для внутрішнього обчислення вони лінійні. Але коли я створюю Bump карту у Photoshop і зберігаю її як JPG або PNG, тоді 1 / 2.2 гамма також спалюється на цьому зображенні, так чому ж ця карта Bump також не повинна бути лінеаризованою?

Якщо я завантажую Bump карту в 3ds Max з вхідною гаммою 2,2 так само, як це робиться з текстурою Diffuse, дифуз виглядає правильно, але збій виглядає неправильно, тому я повинен встановити вхідну гаму на 1,0 для удару для того, щоб щоб це виглядало правильно, але як я вже сказав: чому обидва файли зображень записали гаму 1 / 2.2, правда?

Відповіді:


5

Те, що фотографія зберігається в гамма-просторі, не має нічого спільного з PNG або JPEG, це пов'язано з тим, що це фотографія.

Камера виявляє 50% інтенсивність, але збирається зберегти її як 187 замість 127, оскільки це ефективніше зберігати інформацію про кольори, яка має значення для людського ока, коли у вас є лише 256 різних можливих значень. Так само і Photoshop, якщо ви так сказали.

У нормальних картах або картах переміщення у вас немає такої потреби, тому немає причин використовувати для них гамма-простір (використання гами для них насправді було б помилкою, оскільки це вплине на розподіл точності). Таким чином, коли ви декодуєте нормальну текстуру або текстуру зміщення, вам не потрібно застосовувати гамму.

Якщо звичайна карта закодована в іншому просторі, як це може бути, наприклад , G-буфер , тоді вам доведеться застосувати відповідне виправлення.


Як сказати Photoshop, щоб зберегти зображення із запеченою гамою, як ви сказали вище: "І так це робить Photoshop, якщо ви так скажете".
Крістофер Геландер

Це зовсім не пояснює "чому". Це просто повторює "що".
користувач1118321

@ user1118321: Я вважаю, що це так. Я додав акцент у спробі зробити це більш зрозумілим.
Жульєн Гурто

Ну, правда, але це все ще не дуже пояснює, чому. Я визнаю, що у мене є та ж проблема, що я просто згадую про відсутність користі або шкоди, заподіяної таким стисненням. Немає потреби, але чому дані образів властиві людським почуттям, тоді як наші просторові міркування мають більш лінійний характер (що стосується 3D-програми)
joojaa

3

JPG, PNG або будь-який інший 8-бітовий формат зображень по суті не пов'язаний з ним 1 / 2,2 гамма. Вони просто зберігають значення від 0-255. Як інтерпретуються ці дані, залежить від програмного забезпечення, яке читає та записує ці файли. Цікавий факт, що більшість програм для редагування зображень за замовчуванням використовує кольоровий гамма-гамма. Усі пензлі, ефекти, фільтри та навіть підбір кольорів працюють у гамма-просторі. Подивіться лише на відтінки сірого на підбірці кольорів у Photoshop. Вони не слідують лінійному розподілу.

Наслідком цього є те, що Photoshop не робить перетворення між гаммою та лінійним кольоровим простором під час відкриття чи збереження зображення (за замовчуванням), лише під час його відображення. Це означає, що ви можете так само легко використовувати його для створення або редагування лінійних даних, таких як карта висоти, як і ви можете редагувати фотографії. Збірна карта не виглядає правильно при завантаженні з корекцією гамми, тому що її не зберегли.


Ось відео YouTube також пояснює, що збережене значення на зображенні становить 1 / 2.2 (але він спрощує його і просто скаже, що це квадратний корінь, в тексті є відмова від цього.) Колір комп'ютера зламаний - посилання
Крістофер Геландер

@KristofferHelander Так, але він каже, що лише камера зберігає значення як квадратні корені і лише дисплей, який повертає їх назад. Програмне забезпечення для редагування зображень, як Photoshop, потім просто відкрийте і збережіть зображення без перетворень, що призводить до артефактів, показаних у відео, коли ви намагаєтесь поєднувати кольори.
Quinchilion

Виправте мене, якщо я помиляюся на цьому. Коли я малюю градієнтний пандус у Photoshop, який виглядає для мене лінійним на екрані, значення цього пандуса насправді є лінійними. Але Photoshop додає гамму перегляду 1 / 2.2, оскільки монітор додає гамму 2,2, таким чином значення пікселів зображень є лінійними і вони також виглядають лінійними. Але ця 1 / 2,2 гамма - це лише переглядна гамма, яку Photoshop використовує для відображення зображення, вона не вкладається в зображення, і тому жодне корекцію гамми для зображення не потрібно робити в програмному забезпеченні 3D (використовуйте gamma 1.0), оскільки значення вже лінійні?
Крістофер Геландер

@KristofferHelander goo.gl/yqkeUP Нижній градієнт представляє фізичну яскравість. Якби Photoshop застосував гаму 1 / 2.2 для малювання градієнта або для відображення зображення, ви побачили нижній градієнт. Натомість ви бачите верхню частину, яка збігається випадково лінійно, але не є. Він також не працює для перегляду фотографій. Камера застосувала 1 / 2.2 під час збереження фотографії, тоді Photoshop застосував би ще 1 / 2,2, але дисплей додає гамму 2,2 лише один раз. Це не виглядало б правильно.
Quinchilion

Якщо я заповнюю документ у Photoshop наполовину червоним (255,0,0), а іншу половину зеленим (0,255,0), а потім використовую розмиття Гаусса, отриманий градієнт стає коричневим, а не жовтим посередині, як показано у тому відео, яке я розмістив. Чому так? Якщо пікселі на зображенні лінійні, то чому математика накручується? Я не розумію, як карта зміщення, намальована у Photoshop, лінійна і добре підходить для візуалізації, але в той же час розмиття пікселів накручується неправильною гамою, а кольори стають темними та коричневими?
Крістофер Геландер

3

Вступ

Це залежить від того, як ви створюєте карту! Розгляньте наступне і дозвольте йому зануритися на деякий час, перш ніж йти вперед:

  1. Зображення відображається з корекцією гамми на користь ваших очей
  2. Дані все ще є лише даними. Корекція гамма - це частина відображення, а не частина даних.

Тепер карту карту досить складно намалювати за допомогою нанесення фарби. Тому що його важко помітити, навіть якщо ти правильно лінійний. Тож ви в кінцевому підсумку використовуєте такі речі, як перегляд цінностей. Тепер ось улов:

  • Якщо ви вирішите, що 128 є на півдорозі вашої інтенсивності, то це реальність. Оскільки це ваше кодування в потік даних. Дані - це те, що ви інтерпретуєте, оскільки воно не призначене для людських очей та монітора. Кому цікаво, що монітор показує значення як їх усі про те, як ви інтерпретуєте дані, що їх редагують.

Складання карти удару / переміщення

Гаразд, тепер я описав, що дані піддаються інтерпретації. Але чому б ви інтерпретували дані як лінійні? Тому що тоді ви можете краще спроектувати свій боковий профіль. Подивіться, що ви можете зробити - подумати про 100% непрозорість кисті як цільовій висоті, яку ви хочете вирізати або нанести на шар. Потім ви можете використати інструмент кривих для оформлення форми кисті марок (оскільки ви вважаєте, що дані лінійні).

введіть тут опис зображення

Зображення 1 : Штамп присоски.

Тепер, якщо ви робите щось подібне, то ваше зображення лінійне, незважаючи на те, що всі вам кажуть. Ви вирішили відмовитися від правил зображення, які говорять інакше. І тому зображення лінійне , автор обирає для нього лінійне, так що з ним легше працювати.

введіть тут опис зображення

Зображення 2 : Те саме зображення зміщене та інтерпретоване лінійним (зауважте, я трохи зменшив висоту, щоб відповідати моєму типовому розміру bb), працюючи за призначенням.

Технічно лінійний - це краще.

Синтетична карта не має переваги стиснення одних значень за рахунок інших. Лінійний за своєю суттю кращий, тому що поширення вашої удари краще таким чином. Ось чому ви витрачаєте ресурси, кодуючи їх у гамма-виправленому порядку.

По-друге, у зображенні не потрібно вказувати, у якому кольоровому просторі воно знаходиться. Його тільки редактори зображень припускають, що це закодовано sRGB. У вас немає підстав робити те саме тлумачення, жодна інформація не означає просто: "Ніхто не намагався записати те, що вони думали". Тож, можливо, слід зазначити, що слід позначити його лінійно. Але ось руба ... ваш комп'ютер не має легкодоступного лінійного профілю.

А як щодо Photoshop і розмиття?

Тут стає хитро. Photoshop намагається зробити дуже багато роботи, щоб не потрібно нічого знати про цей матеріал. І саме тут ти стріляєш собі в ногу. Se Photoshop не призначений для створення текстур, він призначений для редагування зображень, а не випадкових даних. Отже, оскільки розмиття на зображенні відрізняється лінійним та нелінійним, воно не буде працювати, орієнтуючись на неправильні дані.

Але ви можете зробити одну з двох речей, щоб виправити це:

  1. Вимкніть гамма-корекцію розмиття
  2. встановіть свій робочий простір на лінійний профіль

Висновок

Причина, що вам важко з цим, - це

  1. Ви не знаєте, що думають інші люди, ви просто не знаєте, чи слід їх коригувати гаммою чи ні.
  2. що ваша програма, яка розглядає зображення як зображення

Перший пункт особливо заплутаний. Я просто знаю, що ВСІ мої карти ударів і переміщень насправді лінійні. Але я не можу знати, що це за ваші карти. Шанси вони лінійні, тому що майже загальновизнано, що дані лінійні. Навіть люди, які не знають про гамму, чомусь роблять її лінійною для нахилу / зміщення (тому що це легко і саме так, як ви думаєте, зображення, поки хтось не скаже вам інакше).


Дякую за ваш внесок - ух! :) Я буду дивитись на це, коли отримаю більше вільного часу. Я повернуся до вас, дякую!
Крістофер Геландер

Even people who do not know about gamma tend to do it linear for bump/displacement for some reasonЙмовірно, тому, що ці карти генеруються.
Тара

3

Насправді, якщо ваша карта ударів чи переміщень збережена за допомогою корекції 0,45 гамма, це неправильно. Ці карти містять геометричну інформацію, а не кольорову, і вони повинні бути просто закодовані лінійно.

Про пов'язану проблему та виправлення Adobe Photoshop див. У цій колоді слайдів: https://docs.google.com/presentation/d/1vS5nAAnXbZ8Pt6-dXxy-xEXDkjfjXTmNnthNGccorl0/edit#slide=id.g14b3e28660_0_8


Особливо це стосується звичайної карти, якщо ви очікували, що довжина вектора буде дорівнює 1.
PaulHK
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.