Баг, который нельзя было исправить

min-dalt

Во время обучения в университете свое свободное время я тратил на создание своей игры — гонок. Я создал карту, нарисовал текстуры, создал водную поверхность с отражениями и преломлениями.

Следующим шагом было добавление машины. Здесь начались проблемы. Перед созданием красивой модели я решил начать с малого — с куба. Простой красный куб был создан и помещен на поверхность. Я запустил игру, но ничего не произошло. Куба не было. Чтобы куб было проще найти, я поместил его в центр карты, но его опять там не оказалось.

В программировании графики есть одна интересная вещь — обычно очень сложно найти источник ошибки. Нельзя применить отладчик к фрагментному шейдеру или посмотреть логи. Остается только изменять параметры, в надежде обнаружить ошибку.

После внимательного изучения своего кода я начал играться с параметрами. Сначала я поменял цвет куба с красного на белый и перезапустил игру. И знаете что? Маленький белый куб красовался на земле. Может быть я перепутал красный, зеленый и голубой каналы с альфа-каналом, задающим прозрачность? Я снова проверил, но ничего не нашел. Я поменял цвет на голубой, куб остался. Вернулся к красному. Куб исчез.

Это было странно. Почему не видно красный куб? Я проверил фрагментный шейдер. Я проверил режимы рендеринга. Я даже проверил настройки шаблона. Всё было хорошо. Но почему тогда мой куб не видно?

Я сделал его опять красным, и знаете что? Он появился! Я вернулся в самое начало, но теперь куб было видно! Ошеломленный, я отвел взгляд от монитора. Когда я посмотрел обратно, он опять исчез. Потом появился. Потом опять исчез. И тут меня осенило.

Куб был там все это время. Ошибка была не в программном или аппаратном обеспечении. И даже не в окружающем меня пространстве. Причина, по которой я не мог видеть красный куб на зеленом фоне, оказалась простой — я дальтоник, и путаю красный цвет с зеленым.

Источник: I Like Big BitsНикита Мингалеев, юный падаван