-
Notifications
You must be signed in to change notification settings - Fork 0
Rendering and Lighting RU
🌐 English · Русский
- Рендерер 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.