Упрощенный рендеринг
По мере усложнения стандартного рендер-движка Dagon, повышаются и системные требования — в данный момент он требует довольно мощную видеокарту геймерского класса (желательно NVIDIA, желательно не ниже Turing). Но, поскольку далеко не все игры обязаны иметь топовую графику, неплохо предусмотреть в движке некий облегченный режим, оптимальный для казуальных жанров и стилизации под ретро, где не нужен сложный пайплайн с реалистичным освещением и PBR. В Dagon рендер уже давно структурно вынесен в отдельную систему, которую можно модифицировать и даже полностью заменять, не трогая остальной код движка — модель данных сцены и менеджер ресурсов в Dagon полностью независимы от рендера. Это позволило без особых сложностей добавить упрощенный рендер-движок SimpleRenderer
, который вы можете создать в вашем классе игры (на базе Game
или Application
) и заменить им стандартный DeferredRenderer
.
SimpleRenderer полностью переопределяет рендеринг объектов. Здесь по умолчанию нет физически обоснованных источников света, карт окружения и т.д. — за освещение отвечает простейшая модель Блинна-Фонга, которая в данный момент работает с одним глобальным направленным источником света (environment.sun
текущей сцены). Нет normal mapping’а и прочих эффектов материала — учитывается только baseColorFactor
/baseColorTexture
. Но зато вы можете назначить вашим материалам любой шейдер с любыми эффектами — в DeferredRenderer
такой возможности нет (все объекты с пользовательскими шейдерами трактуются как forward и рендерятся отдельно, после всех deferred-проходов). Также в этой системе поддерживаются слои, что позволяет явным образом задавать порядок рендеринга группам объектов — например, можно занести все прозрачные объекты в отдельный слой, который рисуется поверх дефолтного.
SimpleRenderer
отлично подойдет для создания игр для low-end железа, он будет работать даже на самых слабых системах.