71 lines
5.9 KiB
C#
71 lines
5.9 KiB
C#
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.
|
||
*/ |