Что такое блики в играх

Хроматическая аберрация – эффект, который вы наверняка отключаете в настройках игр. Зачем он вообще нужен?

Объясняем тренд.

Одна из самых часто встречающихся графических настроек в современных играх – хроматическая аберрация. По умолчанию эффект обычно включен, хотя многие геймеры отключают его при первой же возможности. Причина проста: без хроматической аберрации картинка выглядит «чище».

Так почему разработчики тратят силы, чтобы добавить в игры «лишнюю» постобработку, и кто ее придумал?

Хроматическая аберрация пришла в игры из кино

Происхождение у аберрации общее с другими неоднозначными эффектами постобработки: lens flare, motion blur, глубиной резкости, виньетированием и так далее. Изначально они появились в кинематографе.

Реальная хроматическая аберрация возникает при использовании фотоаппаратов и видеокамер. Из-за того, что лучи света разных цветов отличаются длиной волн, они преломляются в линзе камеры по-разному. Когда объективу не удается собрать все лучи в одну точку, цвета на полученных фото и видео искажаются. Сильнее всего это заметно по краям объектов: они размываются и расслаиваются на красный, зеленый и синий цветовые каналы.

Что такое блики в играх. Смотреть фото Что такое блики в играх. Смотреть картинку Что такое блики в играх. Картинка про Что такое блики в играх. Фото Что такое блики в играх

Долгое время операторам и фотографам приходилось мириться с хроматической аберрацией – ее можно было только минимизировать, используя более дорогостоящие и качественные объективы. Со временем от нежелательного побочного эффекта научились избавляться на этапе постобработки: многие современные камеры компенсируют цветовые искажения с помощью встроенного процессора, также аберрацию можно убрать в графических редакторах при работе с RAW-форматами.

В то же время хроматическая аберрация стала настолько распространенным и привычным явлением, что ее начали относить к ретро-эстетике и оставлять (или даже добавлять) намеренно, добиваясь более «винтажного» вида фотографий или фильмов. Произошло то же, что и с lens flare, только в меньших масштабах: признак непрофессионализма превратился в осознанный стилистический прием.

Что такое блики в играх. Смотреть фото Что такое блики в играх. Смотреть картинку Что такое блики в играх. Картинка про Что такое блики в играх. Фото Что такое блики в играх

(Здание на одном и том же кадре без хроматической аберрации и с ее сильным проявлением)

Аберрация в играх – попытка сделать их кинематографичнее

Хотя сами геймеры часто определяют крутость игровой графики, сравнивая ее с реальной жизнью, сами разработчики ориентируются в первую очередь на кинематограф. Логика простая: сделать картинку ближе кинематографичнее проще, чем приблизить ее к «чистой» реальности.

Эффекты вроде хроматической аберрации позволяют замаскировать технические недостатки игры и стилизовать ее простым приемом, который к тому же практически не сказывается на производительности. Нет смысла отключать аберрацию, чтобы игра работала лучше – из этого получится выжать примерно один дополнительный кадр в секунду, да и то не всегда.

Что такое блики в играх. Смотреть фото Что такое блики в играх. Смотреть картинку Что такое блики в играх. Картинка про Что такое блики в играх. Фото Что такое блики в играх

(В Resident Evil 7 аберрация заметна, только если присмотреться, например, к раме)

Цель у хроматической аберрации в играх простая: «смягчить» контуры объектов, чтобы они подсознательно больше напоминали фильмы (и показанную в них реальность), а не компьютерную графику.

Понятное дело, в играх физической камеры нет, поэтому хроматическая аберрация симулируется: эффект просто добавляет сине-красные края объектам в кадре. Конкретная реализация, конечно, зависит от игры: где-то эффект бросается в глаза, в других случаях он едва заметен – примерно так же отличаются дешевые и дорогостоящие объективы.

Иногда эффект лучше оставлять включенным

Хроматическая аберрация набрала популярность в прошлом поколении консолей, когда игры повсеместно стали выглядеть (или пытаться выглядеть) «как кино». Аберрацию нельзя назвать объективным улучшением или ухудшением: ей нужно уметь пользоваться, а ее восприятие – исключительно субъективно. Часть игроков совершенно не терпит эффект, поскольку из-за него картинка становится менее четкой, другим дополнительная «киношность» по душе.

Правда, в зависимости от визуального стиля самой игры аберрация чаще может просто загрязнять кадр, чем дополнять его. Например, если игра в целом выглядит не очень хорошо или стилизована под мультяшный стиль – значит, на «киношный фотореализм» она претендовать не может. Тем не менее разработчики все равно добавляют постобработку – в таком случае эффект вызовет раздражение с большей вероятностью.

Куда уместнее использовать хроматическую аберрацию в проектах с реалистичным визуальным стилем: в The Last of Us: Part II, Red Dead Redemption 2 или, скажем, в «Сталкере 2». В них частичная нечеткость краев скорее сойдет за кинематографичность, чем за чужеродный визуальный эффект.

Что такое блики в играх. Смотреть фото Что такое блики в играх. Смотреть картинку Что такое блики в играх. Картинка про Что такое блики в играх. Фото Что такое блики в играх

(Ползунок хроматической аберрации все чаще встречается в фоторежимах)

Другой вариант – применять хроматическую аберрацию там, где физическая (не игровая) камера используется по сюжету. Вот первая Life is Strange, например, выглядит слишком стилизованно, чтобы быть фильмом, но главная героиня увлекается фотографией, да и винтажные снимки играют ключевую роль в развитии сюжета. Поэтому здесь аберрация имеет хотя бы нарративный смысл.

Что такое блики в играх. Смотреть фото Что такое блики в играх. Смотреть картинку Что такое блики в играх. Картинка про Что такое блики в играх. Фото Что такое блики в играх

Также, конечно, аберрацию стоит отключать в случаях, если из-за нее у вас сильнее устают глаза – такой побочный эффект тоже встречается.

У разработчиков нет объективных причин отказываться от хроматической аберрации в будущем: эффект очень просто реализовать, он не сказывается на оптимизации и зачастую делает игру визуально дороже (по крайней мере в глазах казуальных игроков, не вникающих в технологии). Главное, чтобы ее всегда можно было отключить в настройках – это логичное правило игровые студии обычно соблюдают.

Источник

Блики, мерцание экрана. Нужна помощь.

23 Jun 2015 в 01:43

Что такое блики в играх. Смотреть фото Что такое блики в играх. Смотреть картинку Что такое блики в играх. Картинка про Что такое блики в играх. Фото Что такое блики в играх

23 Jun 2015 в 01:43 #1

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

Назвал это бликами потому что не знаю как можно назвать подругому. Это проблема точно не с монитором, ставил другой, тоже самое. Это проблема не похожа на проблему с драйвером, потому что в тот день с драйвером ничего не делал, не обновлял и тд. Пробовал откатиться, тоже самое. Сегодня-вчера вышел новый драйвер для моей видеокарты NVIDIA GT 430, ничего не изменилось. Это не похоже на проблему с Windows, так как я переустановил и ничего не изменилось.

В общем вопрос такой, кто с таким сталкивался и как это лечить? Я понимаю что скорее всего дело в видеокарте и она пошла по «нехорошему» пути. но надежда умирает последней.

Тролли естественно приветствуются, спасибо за АП темы. Ещё большое спасибо тем кто будет кричать что автор дно и слушает русский рэп, за этот ап тоже спасибо, даже плюсики могу поставить.

Но я забыл кое-что ещё написать. Нахватал кучу вирусняков перед переустановкой винды, внатуре куча была. Компьютер не хотел «Восстанавливать систему», писал что-то типо ошибки. Ниодин драйвер видеокарты не устанавливался, тоже писал ошибку и разрешение было 640х480 и комп не видел монитора и видюхи. И переустанавливал винду без форматирования, потому что полетел DVD-rom и не с чего было запустится. Только что ещё заметил, что если реборн не запускать, то бликов этих намного меньше.

Видео с бликами представляю ниже, повторюсь, блики не только в игре, но и в ВК, на Десктопе и тд. Особенно эти блики видно на 5-9 секундах.

Что такое блики в играх. Смотреть фото Что такое блики в играх. Смотреть картинку Что такое блики в играх. Картинка про Что такое блики в играх. Фото Что такое блики в играх

23 Jun 2015 в 01:45 #2

не смотрите видео там вылезает страшное чудовище и кричит

Что такое блики в играх. Смотреть фото Что такое блики в играх. Смотреть картинку Что такое блики в играх. Картинка про Что такое блики в играх. Фото Что такое блики в играх

23 Jun 2015 в 01:47 #3

Что такое блики в играх. Смотреть фото Что такое блики в играх. Смотреть картинку Что такое блики в играх. Картинка про Что такое блики в играх. Фото Что такое блики в играх

23 Jun 2015 в 02:10 #4

Блики на экране в основном от видео карты.

Что такое блики в играх. Смотреть фото Что такое блики в играх. Смотреть картинку Что такое блики в играх. Картинка про Что такое блики в играх. Фото Что такое блики в играх

23 Jun 2015 в 02:15 #5

Я тоже так думаю, но ужасно не хочется 🙁 Завтра, если найду, попробую другую. Но всё таки может дело в Винде?

Что такое блики в играх. Смотреть фото Что такое блики в играх. Смотреть картинку Что такое блики в играх. Картинка про Что такое блики в играх. Фото Что такое блики в играх

23 Jun 2015 в 02:19 #6

Что такое блики в играх. Смотреть фото Что такое блики в играх. Смотреть картинку Что такое блики в играх. Картинка про Что такое блики в играх. Фото Что такое блики в играх

23 Jun 2015 в 02:19 #7

Обычные графические артефакты. Винда тут не причем.

Что такое блики в играх. Смотреть фото Что такое блики в играх. Смотреть картинку Что такое блики в играх. Картинка про Что такое блики в играх. Фото Что такое блики в играх

23 Jun 2015 в 02:27 #8

или её время медленно но верно приходит (уходит) или же её кто-то помог тебе сжарить,тем не менее пока не всё так критично:doubt:

Что такое блики в играх. Смотреть фото Что такое блики в играх. Смотреть картинку Что такое блики в играх. Картинка про Что такое блики в играх. Фото Что такое блики в играх

23 Jun 2015 в 02:36 #9

Но я забыл кое-что ещё написать. Нахватал кучу вирусняков перед переустановкой винды, внатуре куча была. Компьютер не хотел «Восстанавливать систему», писал что-то типо ошибки. Ниодин драйвер видеокарты не устанавливался, тоже писал ошибку и разрешение было 640х480 и комп не видел монитора и видюхи. И переустанавливал винду без форматирования, потому что полетел DVD-rom и не с чего было запустится.

Ведь если он даже драйвер не хотел устанавливать, то может он до сих пор его криво устанавливает и выеживается поэтому?

Что такое блики в играх. Смотреть фото Что такое блики в играх. Смотреть картинку Что такое блики в играх. Картинка про Что такое блики в играх. Фото Что такое блики в играх

23 Jun 2015 в 02:37 #10

Почисти видеокарточку и увеличь обороты кулера на ней. Из за жары сейчас туговато компам.

Что такое блики в играх. Смотреть фото Что такое блики в играх. Смотреть картинку Что такое блики в играх. Картинка про Что такое блики в играх. Фото Что такое блики в играх

23 Jun 2015 в 02:39 #11

Прочитай мой ответ выше пожалуйста, если всё же ещё останешься при своём, то я попробую сделать то что ты посоветовал. Но я сомневаюсь, температуру компа мониторю и видеокарта не греется выше пределов. Плюс что даже если холодный комп включаешь, то всё равно гг вп.

Только что ещё заметил, что если реборн не запускать, то бликов этих намного меньше.

Что такое блики в играх. Смотреть фото Что такое блики в играх. Смотреть картинку Что такое блики в играх. Картинка про Что такое блики в играх. Фото Что такое блики в играх

23 Jun 2015 в 04:09 #12

Что такое блики в играх. Смотреть фото Что такое блики в играх. Смотреть картинку Что такое блики в играх. Картинка про Что такое блики в играх. Фото Что такое блики в играх

23 Jun 2015 в 04:16 #13

У меня на мониторе были глюки долгое время, оказалось, что кабель непрочно воткнут)

Что такое блики в играх. Смотреть фото Что такое блики в играх. Смотреть картинку Что такое блики в играх. Картинка про Что такое блики в играх. Фото Что такое блики в играх

23 Jun 2015 в 04:25 #14

Прочитай мой ответ выше пожалуйста, если всё же ещё останешься при своём, то я попробую сделать то что ты посоветовал. Но я сомневаюсь, температуру компа мониторю и видеокарта не греется выше пределов. Плюс что даже если холодный комп включаешь, то всё равно гг вп.

Только что ещё заметил, что если реборн не запускать, то бликов этих намного меньше.

не заметил твое сообщение, пока сам писал. значит вполне верноятно что чип уже перегрелся. собственно это 80% неудачной установки дров. сходи в ремонтную мастерскую, не обязательно в крупную. скажи пусть минут 5 прогреют чип на 350 градусах с флюсом для BGA пайки. должна воскреситься.

Что такое блики в играх. Смотреть фото Что такое блики в играх. Смотреть картинку Что такое блики в играх. Картинка про Что такое блики в играх. Фото Что такое блики в играх

23 Jun 2015 в 06:42 #15

На неопределенный промежуток времени.

Всем доброго времени суток!

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

Назвал это бликами потому что не знаю как можно назвать подругому. Это проблема точно не с монитором, ставил другой, тоже самое. Это проблема не похожа на проблему с драйвером, потому что в тот день с драйвером ничего не делал, не обновлял и тд. Пробовал откатиться, тоже самое. Сегодня-вчера вышел новый драйвер для моей видеокарты NVIDIA GT 430, ничего не изменилось. Это не похоже на проблему с Windows, так как я переустановил и ничего не изменилось.

В общем вопрос такой, кто с таким сталкивался и как это лечить? Я понимаю что скорее всего дело в видеокарте и она пошла по «нехорошему» пути. но надежда умирает последней.

Тролли естественно приветствуются, спасибо за АП темы. Ещё большое спасибо тем кто будет кричать что автор дно и слушает русский рэп, за этот ап тоже спасибо, даже плюсики могу поставить.

Но я забыл кое-что ещё написать. Нахватал кучу вирусняков перед переустановкой винды, внатуре куча была. Компьютер не хотел «Восстанавливать систему», писал что-то типо ошибки. Ниодин драйвер видеокарты не устанавливался, тоже писал ошибку и разрешение было 640х480 и комп не видел монитора и видюхи. И переустанавливал винду без форматирования, потому что полетел DVD-rom и не с чего было запустится. Только что ещё заметил, что если реборн не запускать, то бликов этих намного меньше.

Видео с бликами представляю ниже, повторюсь, блики не только в игре, но и в ВК, на Десктопе и тд. Особенно эти блики видно на 5-9 секундах.

ТС, ты сначала температуры посмотри на карте под нагрузкой. На артефакты это не похоже. Также драйвера удали подчистую прогой DDU в защищенном режиме, и поставь свежие.

Источник

Что такое блики в играх

Это вторая часть нашего гайда. Первая, где собраны основные настройки вроде разрешения, качества текстур и теней, вы можете прочитать по ссылке.

Качество освещения (Lightning Quality)

То, насколько правдоподобно симулируется освещение в игре. Если это единственный подобный параметр в игре, то именно в эту настройку заложили уйму других, будь-то и объемный свет, и рассеивание лучей, и отражения, а иногда даже глобальное затенение. Освещение — это, пожалуй, вообще едва ли не самое основное из всего, что влияет на красоту картинки: оно делает ее объемной, натуралистичной, правдоподобной. Но и ресурсов все это дело «кушает» тоже немало. Именно поэтому, например, Nvidia так расхваливает свои новые RTX-видеокарты — они изначально разработаны под Ray Tracing — метод рендеринга, предполагающий правдоподобную симуляцию каждого луча.

Влияние на производительность

Зависит от движка, но почти во всех современных играх — очень сильное. Симулировать свет — это очень непросто, так что врубайте «ультра» только если у вас действительно мощная видеокарта.

Что такое блики в играх. Смотреть фото Что такое блики в играх. Смотреть картинку Что такое блики в играх. Картинка про Что такое блики в играх. Фото Что такое блики в играх

Качество эффектов (Effects Quality)

Влияние на производительность

Тоже зависит от игры, чаще всего не особенно высокое. Но чем выше этот параметр, тем сильнее будет нагружаться ваша видеокарта в загруженных сценах, например, при масштабных перестрелках. Так что если игра начинает «подлагивать» в особо динамичные моменты, можно попробовать поиграться с этим ползунком, прежде чем снижать, например.

…Качество шейдеров (Shader Quality)

Шейдеры — это специальные программы для вашей видеокарты, исполняемые ее процессором. Грубо говоря, это такие «инструкции» от игры вашей GPU, по которым та понимает, как именно нужно отрисовывать тот или иной эффект. Чаще всего шейдеры используются для улучшения освещения, затенения, создания эффектов преломления лучей в воде (помните, как взрывала мозг та самая «шейдерная водичка из Half-Life 2: Lost Coast?), отражений, рассеиваний и так далее. Так что да, эта опция работает в тандеме с другими параметрами: качеством освещения и качеством теней. Существует три вида шейдеров: вершинные, геометрические и пиксельные, но игры, где можно отрегулировать качество каждого из них отдельно, встречаются невероятно редко.

Соответственно, чем выше качество шейдеров, тем лучше описанные выше эффекты, красивее тени и свет, реалистичнее геометрия — и тем сильнее нагрузка на видеокарту. Именно на видеокарту — потому что шейдеры считаются только GPU.

Влияние на производительность

Чаще всего — высокое. Например, в GTA V это один из самых «тяжелых» параметров в игре — снизив качество шейдеров с «Ультра» на средниее значение, вы получите прирост больше, чем в 15 FPS. Но бывает и так, что снижение этого параметра почти ничего не дает, как, например, в Mass Effect Anromeda.

Источник

Световые эффекты в OpenGL.

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

Но все-таки 90% людей видят в слове графика именно фотореалистичную графику. Но в таком случае появляется целая куча проблем. Нужны качественные сфотографированные текстуры, и оцифрованные модели. Моделлеры, художники могут это все обеспечить (хоть и не просто это будет). Но современный графический движок должен не только уметь выводить текстурированные модели, но и сам уметь что-то делать на лету. Но вот тут и заключается вся проблема, в данном случае баланс сил между моделлером и программистом не сохраняется. В доказательство этому могут послужить старые игры, где все основано на статике, то есть на моделлерах, а программисты лишь советовали, где чего убрать, где что сместить, чтобы не сильно тормозило.

Да и в современное время на моделлеров ложится основная часть работы. Именно они делают картинку на экране монитора. Движок ее только оживляет, но сам практически ничего не может сделать. Хотя попытки есть.

Думаю флейма достаточно, перейдем непосредственно к делу. Я хотел бы поведать в двух словах о некоторых световых эффектах в OpenGL, которые создаются и отрисовываются в реальном времени. Думаю достаточно уже всяких лайтмапов и заранее просчитанных вертекслайтингов, есть вещи, которые вкупе смотрятся не хуже, а может даже и лучше.

Блики

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

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

Данная технология (если можно так сказать) используется довольно-таки давно. Я, конечно, не могу сказать, где впервые это было сделано, но в такой игре как Unreal уже были блики от источников света. Хотя чувствовалось, что они используются редко из-за того, что тогдашнее железо не позволяло использовать их на каждом шагу. Но с появлением Unreal Tournament все резко изменилось, в этой игре блики использовались на полную катушку. Может, железо круче стало, может из-за того, что на Direct3D перешли. Но ложка дегтя была в тамошних бликах. Они были расставлены чуть ли не на каждом шагу. В некоторых уровнях они просто пестрили своим количеством, что имхо было не очень хорошо. И, тем не менее, сабж уже давно используется, поэтому приведу пример как его можно сделать.

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

В интернете описывается огромное количество методов создания спрайтов. В том числе и через новомодные шейдеры, но мы опустим этот зверский способ и сделаем что-нибудь более простое.

В примере к этой статье спрайт стоится по четырем точкам, а тип примитива задается как связанные треугольники. Толку, правда, не очень много от этого, но будем использовать их. Формула, по которой строится спрайт, выглядит так:

Приведенный способ будет работать при соответствующем классе вектора, в нем должно быть целая куча перегруженных операторов. В противном случае придется расписывать каждую строку (каждый оператор) по всем трем компонентам, то есть для каждого X, Y и Z.

Осталось вывести на экран спрайт в виде, как я уже говорил, двух связанных треугольников. Текстурные координаты при этом такие:
<0.0f,1.0f>— для первой вершины.
<1.0f,1.0f>— для второй вершины.
<1.0f,0.0f>— для третей вершины.
<0.0f,0.0f>— для четвертой вершины.

То, что выведется на экран всего лишь 50% от конечного результата. Теперь нужно задать прозрачность. В данном случае достаточно будет:
glBlendFunc ( GL_SRC_ALPHA, GL_ONE );
После чего можно указать в виде четвертого компонента функции glColor4* значение альфа, тем самым, регулируя прозрачность спрайта.

Теперь пора вспомнить, чего мы вообще делаем. А делаем мы блик от источника света. Тут можно опять пофлеймить. Посмотрите как в реале выглядит блик от источника света, например, от обычной лампочки на потолке. Выглядит он в виде яркого пятна с жутко навороченной прозрачностью и яркой сердцевиной. Попробуйте закрыть половину этого блика рукой. Частично лучи все еще проходят (только половина закрыта), так как возможно центр блика все еще не полностью закрыт. При этом, как я уже сказал, частично лучи все еще проходят от центра лампочки и они как бы находятся впереди ладошки (ну или чем вы там закрываете). При этом если не спеша закрыть центр блика полностью то блик плавно исчезнет (плавно настолько, насколько вы плавно его будете закрывать). То есть выясняется сразу две вещи в отношении бликов от источников света, а именно:
— Блик все еще может находится перед закрываемым объектом, если источник этого блика не был полностью закрыт.
— Блик плавно исчезает ЗА объектом, настолько плавно, насколько плавно объект перекроет источник.

Я все это к чему, а к тому, что некоторые люди утверждают, что данный способ построения бликов явно глюкавый. Но, если же посмотреть, как это сделано «в реале», то выясняется, что там все точно также.

А теперь реализация. С первым пунктом вроде все просто. Так как мы используем fake’овый метод он у нас получится на автомате. Спрайт сам будет производить такой эффект, когда перекрываемый объект будет очень близко до полного перекрытия. На картинке это видно:

Что такое блики в играх. Смотреть фото Что такое блики в играх. Смотреть картинку Что такое блики в играх. Картинка про Что такое блики в играх. Фото Что такое блики в играх

При этом использовать glDepthMask() нельзя, так как он лишь закрывает глубину для текущего объекта (объектов), но не для всей сцены. Поэтому чтобы спрайт ложился на объекты как в реале нужно полностью выключать тест на глубину.
В данном случае это можно сделать, поставив glDepthFunc() в GL_NOTEQUAL, это позволит игнорировать все входящие звонки от абонентов Вася Пупкин Корпорэйшн. Вы еще не заснули? Это позволит игнорировать все входящие Z значения пикселей, тем самым спрайт будет рисоваться как какой-то псевдо-объемный световой шар, то есть тот самый fake о котором я говорил в самом начале. Сразу же могу сказать, что GL_ALWAYS и полное отключение zTest’а даст такой же результат. Остальные параметры, насколько я помню, не пропустят входящие Z значения, поэтому zBuffer будет работать, как обычно и спрайты будут протыкать все стены, как показано на рисунке.

Что такое блики в играх. Смотреть фото Что такое блики в играх. Смотреть картинку Что такое блики в играх. Картинка про Что такое блики в играх. Фото Что такое блики в играх

Но вернемся к баранам. Теперь вы знаете все, что нужно для того, чтобы реализовать первый пункт о бликах. Теперь пора поговорить о втором пункте.
Кто его забыл, напомню: «Блик плавно исчезает ЗА объектом, настолько плавно, насколько плавно объект перекроет блик». И тут же хочу всех немного обломать, дело в том, что реализовать такую фишку довольно-таки сложно. Одними fake’ами уже не ограничишься. Поэтому мы сделаем так, как это сделано в большинстве компьютерных игр, а именно: «Блик плавно исчезает ЗА объектом, настолько плавно, насколько это указал программист». То есть после того как блик скроется за объектом, нужно его самому плавно затушить.

Чтобы узнать виден ли центр блика или нет, можно воспользоваться буфером глубины и проекцией трехмерной точки на плоскость.
Сразу же разберем функцию которая это делает.

Вначале находим расстояние от камеры до центра спрайта, и если оно больше той дистанции, на которой спрайт виден, то спрайт тушится. Дальше проверяем, лежит ли центр спрайта в пределах области видимости. Если нет, то ставим переменную in_vis в false. Эта переменная отвечает за то, что спрайт по какой-то причине не виден на экране и значит что его можно «тушить». Дальше нужно проверить, не перекрывает ли спрайт наша геометрия. Проще всего это проверить через оконную Z координату, то есть глубина трехмерной сцены. Это конечно же гораздо быстрее чем полноценные RayTrace методы. Для этого мы проецируем точку спрайта на экран и читаем пиксель в этой точке. Читаем исключительно компонент из zBuffer’а. Если получившаяся глубина больше той, что вернула функция gluProject, то значит спрайт ничем не перекрывается.

Итого, есть как минимум три проверки спрайта на отрисовку: проверка видимости спрайта, проверка пересечения спрайта с другой геометрией и проверка расстояния спрайта от его центра до камеры.

Совет: если есть несколько способов проверить надобность отрисовки чего-либо, то в начале выбирайте самый быстрый способ проверки.

Если хоть одно из условий не выполнится, то спрайт тушится. То есть плавно затухает. Кстати, расстояние вы можете регулировать исходя из общих настроек качества изображения вашей программы.

21 сентября 2003 (Обновление: 12 июня 2009)

Источник

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *