Освещение в играх. Deferred shading. G-буфер

В статье рассмотрим первый этап динамического отложенного освещения (deferred shading), а именно G-буфер. Внутри есть примеры в виде скриншотов))

Освещение в играх. Динамическое освещение и его методы

В данной статье рассмотрим понятие «динамическое освещение» и его методы в теории, а именно о forward render, deferred shading, Light Pre-Pass Render (LPP, deferred lighting).

Освещение в играх. Методы освещения

Освещение один из самых важных критериев самоопределения проекта. Визуальная составляющая играет немаловажную роль, во всех игровых проектах. Освещение в целом определяет вектор направления движения проекта, его целевую аудиторию и намерения. В данной статье рассмотрим в теории методы.

История создания s4g до версии 0.9.2

Мне всегда было интересно как же создавался какой-то проект, его история создания, до определенной версии. Поэтому и мы начнем)) В статье расскажу историю разработки s4g до версии 0.9.2 с момента задумки.

Передача данных между библиотеками dll

При разработке SkyXEngine, перед нами на всегда вставала важная проблема — как осуществить общение dll библиотек друг с другом? Как будет происходить передача данных между библиотеками dll? Очень часто мы обходились путем прямой посылки данных в библиотеку. Но когда кода стало слишком много, мы поняли что это неправильно.

Разработка компилятора. Оптимизатор

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

Основные способы оптимизации производительности

Для real-time приложений производительность очень важна, а если приложение еще и критично по времени исполнения, то производительность является ключевым фактором. Вопросам оптимизации производительности должно уделять достаточно времени. При разработке скриптового языка s4g мы не раз сталкивались с низкой производительностью. И каждый раз нам приходилось решать задачи по ускорению исполнения кода. Речь идет именно о повышении производительности C++ кода. Однако, не всегда, казалось бы очевидные приемы оптимизации, действительно ведут к оптимизации.

Типизация в языках программирования

Типизация языка программирования в некоторых случаях может оказаться достаточно важным фактором при его выборе. Не ради сравнения, а лишь только с целью показать различия языковых возможностей стоит сказать: в языке lua намного проще выполнить некоторые действия, нежели на C++. На первый взгляд достаточно глупый пример, но с другой стороны, где лучше описывать логику на C++ или на lua? Риторический вопрос на который, каждый сам находит ответ))

Что такое API?

Казалось бы, написал программу, и весь ее код и есть API, однако не все так просто, как кажется) Предоставляя лишний код в программный интерфейс создаются дополнительные проблемы использования, что за код, куда его девать и как с ним быть? Какой код вычленить для использования? В данной статье рассмотрим что такое API (программный интерфейс/интерфейс программирования) и его значимость.

Разработка компилятора. Синтаксический анализатор

В первой версии нашего языка s4g синтаксический анализ не был полностью отдельным процессом, и был совмещен с лексическим анализом. Разбор осуществлялся без каких либо четких правил, он работал, но внести какие-то изменения или дополнения без риска сломать все было несколько проблематично. Понятно, что так продолжаться долго не может, и к версии 0.9.2 синтаксический анализатор был полностью переработан.