Souljack/Assets/_Project/Scripts/LevelGenerating/RoomLightConfig.cs

71 lines
5.9 KiB
C#
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

using UnityEngine;
namespace _Project.Scripts.LevelGenerating
{
[CreateAssetMenu(menuName = "Level/Room Light Config", fileName = "RoomLightConfig")]
public class RoomLightConfig : ScriptableObject
{
[Header("Префаб")]
public GameObject lightPrefab;
[Header("Размещение")]
[Min(0.5f)] public float spacing = 6f;
public float ceilingDrop = 0f;
public Vector3 rotationOffset = Vector3.zero;
[Header("Параметры источника света")]
public bool overrideLightParameters = true;
public Color color = Color.white;
[Min(0f)] public float intensity = 1.5f;
[Min(0.1f)] public float range = 8f;
public LightShadows shadows = LightShadows.None;
[Header("Runtime Запекание (GPU Baker)")]
[Tooltip("Запечь свет в текстуру _RuntimeLightmap при генерации комнаты")]
public bool bakeToRuntimeLightmap = true;
[Tooltip("Выключить компоненты Light после запекания (даёт огромный прирост FPS!)")]
public bool disableRealtimeLightsAfterBake = true;
[Tooltip("Разрешение текстуры света (128 или 256 идеально для мягкого света и не жрёт VRAM)")]
public int lightmapResolution = 128;
[Tooltip("Сила отражённого света от пола на потолок и стены (Indirect GI Bounce)")]
[Range(0f, 2f)] public float ceilingBounceIntensity = 0.35f;
[Tooltip("Минимальная базовая освещённость тёмных участков")]
[Range(0f, 1f)] public float bakedAmbientIntensity = 0.08f;
[Tooltip("Затенение в углах между стенами, полом и потолком (Ambient Occlusion)")]
[Range(0f, 1f)] public float cornerAOStrength = 0.6f;
}
}
/*
. Блок «Размещение» (Сетка ламп в комнате)
Spacing (по умолчанию 6): Расстояние между лампами в метрах.
Если комната маленькая (например, 4x4 м) — поставится 1 лампа по центру.
Если поставишь Spacing = 4, то в комнате 8x8 м появится сетка 2x2 (4 лампы).
Ceiling Drop: На сколько метров ниже потолка висит префаб лампы (например, 0.1 или 0.3,
чтобы моделька не проваливалась в потолок).
Rotation Offset: Поворот префаба лампы (если вдруг у модели светильника конус света направлен не вниз).
2. Блок «Параметры источника света» (Яркость и конус самой лампы)
Override Light Parameters:
Если галочка стоит — цвет, яркость и радиус всех ламп в этой теме берутся из ползунков ниже.
Если галочка снята — берутся те настройки (Spot Angle, Intensity, Color, Range), которые настроены
прямо внутри твоего префаба лампы (lightPrefab). (Кстати, угол конуса Spot Angle всегда берётся из префаба
лампы — захочешь сделать пятно на полу шире или уже, просто поменяй Spot Angle на самом префабе лампы!).
Color / Intensity / Range: Цвет света, сила прямого луча (на пол) и дальность добивания света в метрах.
3. Блок «Runtime Запекание (GPU Baker)» (Самое вкусное!)
Именно эти ползунки управляют тем, как запекается текстура _RuntimeLightmap:
Bake To Runtime Lightmap (true): Включает/выключает сам запекатель для этой темы.
Disable Realtime Lights After Bake (true): Выключает компоненты Light после запекания. Когда галочка стоит
— реальные лампы не нагружают видеокарту вообще (0 мс на GPU!).
Lightmap Resolution (по умолчанию 128): Разрешение текстуры света на каждую стену/пол (64, 128, 256, 512).
Для мягкого света 128 или 256 — идеально и почти не тратит видеопамять GTX 1650.
Ceiling Bounce Intensity (ползунок от 0 до 2, по умолчанию 0.35): Яркость стен и потолка!
Это сила отражённого света (Indirect GI).
Если стены или потолок кажутся темноватыми — подними до 0.6 – 1.0.
Если хочешь мрачный хоррор, где виден только круг на полу от Spot-лампы, а стены тонут во мраке — убавь
до 0.1 – 0.15.
Baked Ambient Intensity (ползунок от 0 до 1, по умолчанию 0.08): Минимальная базовая подсветка самых
дальних тёмных углов, куда вообще не достаёт радиус ламп (Range). Если хочешь полную темноту вдали от
ламп — ставь 0 или 0.02.
Corner AO Strength (ползунок от 0 до 1, по умолчанию 0.6): Сила затемнения в углах комнаты
(на стыках между стенами, полом и потолком). На 0.7 – 0.85 даёт очень красивый объём, как будто
в сцене включён дорогой SSAO.
*/