January 29th, 2007

nyaload

ɣ



Как видно из картинки, среднее арифметическое между цветами не является средним по яркости (оно зависит от параметра "гамма" монитора). В середине - серый квадрат из цветов (128, 128, 128), рамка - из чередующихся в шахматном порядке черно-белых пикселей (0,0,0), (255, 255, 255).

Получается, что в оффлайне нельзя ни мипмапы нельзя по нормальному сгененить, ни антиальязнутый шрифт. При их генерации надо учитывать хотя бы наиболее типичные значения гамма-коррекции (2.2 на CRT, 2.5 на LDC, кажется). И при усреднении пикселей сначала байты переводить в яркость, её усреднять, и потом уже обратно в байты.

И как теперь жить? И неужели куча игр шипнуто без учета этого? Я только сейчас осознал про то, что генерацию мипмапов я вчера написал бы неправильно.

А ещё оказывается яркость меняется от поворота картинки...

updated: а ещё у LCD монитора разная гамма для RGB и вообще она не cɣ а хитрая функция.

updated:
Антиальязинг.
1 - более-менее корректный антиальязинг с gamma=2.0
2 - без антиальязинга
3 - ClearType(работает только для LCD-мониторов). Тут изображён идеально подходящий для ClearType случай, но всё равно я вижу дурацкие цветные пикселы.
4 - некорректный антиальязинг (с gamma=1.0 или что тоже самое, без неё)