Skip to content

Rendering and Lighting RU

Yahasi edited this page Jul 6, 2026 · 1 revision

🌐 English · Русский

← Главная · GPU-рендерер →

Рендеринг и освещение

Рендеринг

  • Рендерер CPU или GPU, выбирается для каждого мира. По умолчанию — многопоточный трассировщик на CPU. Мир можно переключить на GPU (NVIDIA, через ILGPU → CUDA; также работает на любом OpenCL-устройстве): все первичные, теневые и осветительные лучи считаются на видеокарте при полном паритете фич с CPU. Если мир запросил GPU, но пригодной видеокарты нет, происходит прозрачный откат на CPU. Выбирается в диалоге Создать мир (Renderer: CPU / GPU). См. страницу GPU-рендерер.
  • Трассировка на CPU в ASCII через градиент яркости.
  • Truecolor-вывод — каждая ячейка несёт 24-битный RGB-цвет (Rgb24), выводимый ANSI-кодами, поэтому картинка больше не ограничена 16 цветами консоли. На терминалах без truecolor используется ближайший консольный цвет.
  • Два вида прозрачности — у каждого объекта есть оба:
    • Прозрачность объектаальфа-канал цвета, делающий его сквозным. Перекрывающиеся прозрачные поверхности компонуются front-to-back через depth peeling, а прозрачный объект отбрасывает более светлую тень.
    • Блёклость цвета (значение Pale) — отдельная ручка, выцветающая собственный цвет поверхности к белому, при этом объект остаётся полностью твёрдым и даёт полную тень.
  • PNG-текстуры + UV — любой объект может носить PNG-картинку, мапящуюся по UV на каждый угол, с тайлингом / выбором грани / фильтрацией. См. отдельную страницу Текстуры.
  • Освещение с плавающей точкой с поканальной тональной компрессией по Рейнхарду, фоновой (ambient) составляющей и регулируемой экспозицией.
  • Сглаженное (по нормалям вершин) затенение, с дружелюбным к Blender загрузчиком OBJ (триангуляция n-угольников веером, отрицательные/относительные индексы, запасной вариант с геометрической нормалью).
  • BVH-ускорение для высокополигональных мешей, строится один раз в локальном пространстве и обходится с лучом, преобразуемым каждый кадр, поэтому работает даже с анимированными/вращающимися моделями. Переключается вживую клавишей F3.
  • Отсечение по ограничивающей сфере для каждого объекта — как для первичных, так и для теневых лучей.
  • Опциональные тени (переключаются для каждого мира или вживую клавишей F2).
  • Регулируемая детализация рендера (1–4): меняйте разрешение на скорость вживую клавишей P.
  • Diff-рендеринг — каждый кадр перезаписываются только реально изменившиеся ячейки (с прыжками курсора по ANSI), а не весь экран. При неподвижной камере выводится почти ничего — это убирает «прорисовку сверху вниз» (тиринг) и повышает частоту кадров.

Освещение

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

Виды источников

  • Point (точечный) — всенаправленный, с обратно-квадратичным затуханием.
  • Directional (направленный) — параллельное «солнце» с постоянным мягким затуханием.
  • Spot (прожектор) — конус вдоль вектора, с дополнительным формированием (ниже).
  • Area (площадной) — квадратный излучатель, сэмплируемый по сетке, для площадного затухания и мягких теней.

Дополнительно для каждого источника

  • Цветное освещение — каждый источник излучает RGB-цвет (берётся из его ConsoleColor). Параметр SurfaceTint / Influence позволяет цветному свету проявляться на любой поверхности, а не только того же цвета.
  • Spin (вращение) — со временем поворачивает направление источника (рад/с) для анимированного освещения.
  • Многонаправленные лучи прожектора — прожектор может бросать сразу 1–8 конусов (Beams), равномерно развёрнутых вокруг оси; точка освещается тем лучом, который до неё дотягивается.
  • Форма конуса прожектора — сечение конуса может быть кругом (Circle), квадратом (Square) или треугольником (Triangle).

Всё это рендерится одинаково на CPU и GPU (проверяется попиксельно самотестом gputest).

Устойчивость к изменению размера терминала

Рендерер адаптируется вживую: если размер консоли меняется (растяжение окна или зум шрифта по Ctrl+scroll), буферы переаллоцируются и кадр перерисовывается чисто — одинаково в одиночном виде, разделённом экране и стыкованной компоновке. Стартовый сплэш тоже перецентрируется. О перестроении HUD см. Камеры и HUD.

Clone this wiki locally