Теория заговора или Охота на ведьм - 2.

15 мая 2005, воскресенье 13:57
для раздела Блоги
Вы, наверняка, замечали, что бывают такие игры/тесты, в которых на одной карте картинка движется быстро и плавно, а на другой медленнее и с небольшими рывками. И все было бы логично, если бы при этом вторая карта не показывала больший средний FPS, чем первая. Меня подобная ситуация заинтересовала и я решил подумать, почему такое может происходить. Примерно день(точнее, ночь) я эту Мысль думал и, кажется, нашел ответ…

Сейчас уже, наверное, все слышали об особенности человеческого зрения: оно воспринимает лишь 24 кадра в секунду(далее "fps"). На этой особенности основываются технологии "25 кадра" и прочие. Но сейчас речь не о них.

Сегодня практически любая игра имеет свой счетчик fps. Если его включить, то можно заметить, что количество кадров редко падает ниже отметки в 40fps. Причем разницу между 41fps и 42fps ощутить практически невозможно. Не исключено, что именно здесь и кроется ответ.

Для того, чтобы понять принцип, представим вывод картинки в упрощенном варианте: игра посылает в видеокарту данные, видеокарта эти данные обрабатывает и выводит картинку на экран после чего сообщает игре, что картинка на экран выведена, после чего получает новые данные. Я понимаю, что на самом деле все несколько по-другому, но принципиально все выглядит именно так. Подвох кроется в том, что игра не может проверить, ту ли картинку выводит на экран видеокарта. Поэтому никто не мешает видеокарте обработать и вывести на экран, скажем, 49 кадров, после чего решить, что этого маловато и пока рендерится 50й кадр вывести 49й повторно. Или даже сделать еще проще: вывести на экран 49й кадр 2 раза, а игре сказать, что были выведены и 49й, и 50й. Подобная махинация даст прирост около 2%.

Теоретически, реализовать это довольно просто: после того, как видеокарта отрендерила кадр она может не заниматься рассчетом следующего, а просто вывести ту же самую картинку из буфера. Два раза подряд. Если после этого карта "скажет" игре, что отрендерила новый кадр, то игра ничего и не заподозрит. Пользователю заметить подобную махинацию также нереально: в лучшем случае он ощутить лишь легкое замирание картинки. Простота этого метода наталкивает на мысль, что инженеры не могли им не воспользоваться: ведь это же шанс получить фактически бесплатный прирост производительности!

После истории с заточками под 3DMark, ни у кого не возникнет сомнений в том, что корпорации готовы "пудрить мозги" кому угодно, лишь бы их продукт выглядел лучше чем продукт конкурента. Причем таким образом обмануть пользователя с любым уровнем знаний: зрение у всех одинаковое, а на незначительные "подтормаживания" никто уже внимания не обращает. Уже давно убедились, что "подергивания" картинки могут быть вызваны чем угодно: от "грязного" трея Windows до изменения погоды на Марсе. Таким образом фирмы могут с легкостью выдавать медленную карту за быструю, главное – соблюдать меру: если пропускать слишком много кадров, то пользователи могут заподозрить неладное.

Но все эти размышления – лишь теоретические. Поговорим теперь о том, как их можно проверить на практике…

Для того, чтобы проверить эту теорию необходимо будет внести изменения в какую-нибудь популярную игру. Измененная игра должна будет помимо самой картинки "рисовать" на каждом кадре его номер, после чего сохранять покадрово ВСЕ выводимые игрой кадры. После такого тестирования пользователю нужно будет просмотреть все номера кадров и если они будут повторяться – то…

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

Безусловно, может сложиться так, что в реальности никакого заговора нет и всё это – лишь плод моего воображения. Но даже в этом случае проверка не помешает. Для успокоения души, так сказать.

-------------------------------------------------------------------
Ждём Ваших комментариев в специально созданной ветке конференции.
-------------------------------------------------------------------
Оценитe материал

Возможно вас заинтересует

Популярные новости

Сейчас обсуждают