Комментарии (1)
Ответ сгенерирован нейросетью и может содержать ошибки
Модели освещения в Unity и компьютерной графике
В Unity и компьютерной графике существует несколько фундаментальных моделей освещения, которые описывают взаимодействие света с поверхностями. Эти модели комбинируются для создания реалистичного или стилизованного визуального восприятия. Я разделю их на физические (PBR), эмпирические (традиционные) и специализированные (стилизованные).
1. Физически-корректный рендеринг (PBR)
Физически-корректный рендеринг — это современный стандарт, основанный на законах физики света. В Unity он реализован через Standard Shader (и URP/HDRP аналоги) и использует следующие ключевые компоненты:
- Модель отражающей способности (BRDF — Bidirectional Reflectance Distribution Function):
* **Cook-Torrance BRDF** — наиболее распространённая модель, включающая:
* **Diffuse (диффузная) компонента**: Обычно рассчитывается по **Lambert** или более точной модели **Disney diffuse** (Oren-Nayar для шероховатых поверхностей).
* **Specular (зеркальная) компонента**: Рассчитывается как произведение трёх факторов:
* **Функция распределения нормалей (D)** — описывает микрогеометрию поверхности (например, **GGX/Trowbridge-Reitz**, даёт реалистичные "длинные" блики).
* **Геометрическая функция затенения (G)** — учитывает затенение микровыступов (например, **Smith**).
* **Функция Френеля (F)** — описывает зависимость отражения от угла обзора (**Шлик** — распространённая аппроксимация).
// Упрощённая структура Cook-Torrance в шейдере
float3 CookTorranceBRDF(float3 N, float3 L, float3 V, float roughness, float metallic) {
float3 H = normalize(L + V);
float NDF = DistributionGGX(N, H, roughness);
float G = GeometrySmith(N, V, L, roughness);
float3 F = fresnelSchlick(max(dot(H, V), 0.0), F0);
float3 numerator = NDF * G * F;
float denominator = 4.0 * max(dot(N, V), 0.0) * max(dot(N, L), 0.0) + 0.0001;
float3 specular = numerator / denominator;
float3 kS = F;
float3 kD = (1.0 - kS) * (1.0 - metallic);
float3 diffuse = kD * albedo / PI;
return diffuse + specular;
}
2. Эмпирические (традиционные) модели
Эти модели более просты и исторически использовались в фиксированном конвейере (Fixed Function Pipeline).
- Модель Ламберта (Lambertian Diffuse):
* Описывает идеально рассеянное отражение. Яркость не зависит от угла зрения.
* `float diffuse = max(dot(N, L), 0.0);`
- Модель Фонга (Phong) и модифицированная модель Блинна-Фонга (Blinn-Phong):
* **Phong**: Суммирует ambient (фоновое), diffuse (рассеянное) и specular (зеркальное) освещение. Specular рассчитывается через отражённый вектор R.
* **Blinn-Phong**: Более эффективная оптимизация Фонга, использующая полувектор H, что даёт более правдоподобные и быстрые вычисления.
```hlsl
// Blinn-Phong specular
float3 H = normalize(L + V);
float specular = pow(max(dot(N, H), 0.0), shininess);
```
3. Специализированные и стилизованные модели
Используются для нереалистичного рендеринга (NPR — Non-Photorealistic Rendering).
- Модель отрисовки в стиле "cel-shading" или "toon":
* Освещение квантуется (дискретизируется) с помощью **ramp-текстуры** или пошаговой функции.
```hlsl
// Простой toon diffuse
float toonDiffuse = floor(diffuse * _Steps) / _Steps;
```
- Модель освещения для волос, кожи или ткани (Kajiya-Kay, Marschner и др.):
* Специализированные BRDF, учитывающие анизотропию или многократное рассеяние внутри среды (подповерхностное рассеяние — **Subsurface Scattering**).
Практическое применение в Unity
В Unity выбор модели освещения определяется конвейером рендеринга и используемым шейдером:
- Built-in Render Pipeline: Использует Standard Shader (PBR) или можно писать кастомные шейдеры на HLSL/CG, реализующие любую модель.
- Universal Render Pipeline (URP): Предоставляет Lit Shader (PBR, основанный на Cook-Torrance) и Baked Lit, Simple Lit (использует упрощённую модель, похожую на Blinn-Phong).
- High Definition Render Pipeline (HDRP): Использует более сложную и точную Physically Based Lighting с поддержкой площадных источников света, продвинутого подповерхностного рассеяния и спектрального рендеринга.
Итог: Выбор модели зависит от задач:
- Реализм для AAA-проектов → PBR в HDRP.
- Мобильные или стилизованные проекты → Simple Lit (Blinn-Phong) в URP или кастомные тоон-шейдеры.
- Понимание основ → начинать с Lambert/Blinn-Phong, затем углубляться в Cook-Torrance для работы с современным PBR. Ключевая тенденция — физическая корректность, так как она обеспечивает консистентность материалов при любом освещении и ускоряет процесс художникам.