DynamicGI
класс в UnityEngine
Выполнено в:UnityEngine.CoreModule
Описание
Запрашивает состояние Enlighten Realtime Global Illumination и управляет им.
Используйте DynamicGI статический класс, чтобы запрашивать глобальный экземпляр Enlighten и управлять им. Enlighten — подсистема, обеспечивающая Realtime Global Illumination. Этот класс применим только тогда, когда Глобальное освещение в реальном времени включен в Scene вкладка Освещение окно.
С помощью этого класса можно запросить внутреннее состояние Enlighten. Например, вы можете использовать DynamicGI.isConverged чтобы определить, следует ли показывать экран загрузки.
Некоторые свойства позволяют вам контролировать стоимость runtime Enlighten. Например, вы можете использовать DynamicGI.materialUpdateTimeSlice чтобы определить, сколько вычислений выполняется в каждом кадре, и DynamicGI.updateThreshold чтобы контролировать, как часто обновляются светокарты в реальном времени.
Enlighten Realtime Global Illumination учитывает назначенный Skybox Материал в своих расчетах освещения. В большинстве случаев, он автоматически обнаруживает и обрабатывает любые изменения в Skybox Материале (например, при изменении Skybox Материала). Однако, бывают ситуации, когда Enlighten не может автоматически обнаружить изменения (например, когда шейдер Skybox Материала зависит от глобальных переменных, таких как системное время). В этом случае вы можете вызвать DynamicGI.UpdateEnvironment чтобы вручную запланировать оценку текущего материала Skybox. Вы также можете использовать DynamicGI.SetEnvironmentData чтобы пропустить оценку Skybox Материала и передать вместо этого необработанные значения кубической карты.
Для получения дополнительной информации о Enlighten, см. Введение в глобальное освещение в реальном времени с помощью Enlighten.
Дополнительные ресурсы: RendererExtensions.UpdateGIMaterials, TerrainExtensions.UpdateGIMaterials.
using UnityEngine;
// Attach this script to a Game Object to animate the emission used // by Enlighten Realtime GI. The Game Object's Material is unaffected. public class AnimateEmission : MonoBehaviour { public Color color1 = Color.red; public Color color2 = Color.blue; public float intensity = 2.0f; public float speed = 0.5f;
void Update() { // This value changes gradually from 0 to 1 to 0 in a cycle. var pingpong = Mathf.PingPong(Time.time * speed, 1.0f);
// Determine the new color for this frame. var newColor = Color.Lerp(color1, color2, pingpong) * intensity;
// Extract the MeshRenderer from the game object. var renderer = gameObject.GetComponent<MeshRenderer>();
// Apply the new emissive color using the MeshRenderer. DynamicGI.SetEmissive(renderer, newColor); } }
Статические свойства
| Свойство | Описание |
|---|---|
| indirectScale | Позволяет масштабировать вклад карт освещения реального времени & запечённых карт освещения. Примечание: это значение можно задать в окне Lighting, и оно сериализуется, чего нельзя сказать о других свойствах этого класса. |
| isConverged | Является ли предварительно рассчитанный выход Enlighten Realtime Global Illumination конвергентным? |
| materialUpdateTimeSlice | Число миллисекунд, которые могут быть потрачены на обновление материалов. |
| synchronousMode | При включении, новый динамический выход Global Illumination показывается в каждом кадре. |
| updateThreshold | Определяет процентное изменение интенсивности освещения, которое вызывает Unity для перерасчета карты освещения в реальном времени. |
Статические методы
| Метод | Описание |
|---|---|
| SetEmissive | Позволяет быстро установить эмиссионный цвет для данного рендерера, без необходимости рендировать эмиссионный вход для всей системы. |
| SetEnvironmentData | Позволяет переопределить освещение окружающей среды для Enlighten Realtime Global Illumination, без изменения Skybox Материала. |
| UpdateEnvironment | Расписывает обновление сопоставления кубов среды. |
| UpdateMaterials | Расписывает обновление текстур альбедо и эмиссии системы, которая содержит рендерер или рельеф. |