Отрисовка оболочки
Состояние оболочки компонента переопределения иерархического состояния — это эффект прозрачности. В отличие от прозрачной отрисовки видимым остается только передний слой объектов, как и при непрозрачной отрисовке. Кроме того, нормальный внешний вид объектов можно изменить при отрисовке в виде оболочек. Этот эффект предназначен для случаев, когда пользователь не должен пристально всматриваться в неважные детали, но при этом необходимо сохранить пространственное ощущение всей сцены.
Вы можете настроить внешний вид объектов, отрисованных с помощью оболочки, используя глобальное состояние ShellRenderingSettings
. Все объекты, использующие отрисовку оболочки, будут применять одинаковые настройки. Отдельных параметров для объекта нет.
Примечание.
Эффект отрисовки оболочки не может применяться к точкам облаков.
Параметры ShellRenderingSettings
Класс ShellRenderingSettings
содержит параметры, относящиеся к глобальным свойствам отрисовки оболочки.
Параметр | Тип | Описание |
---|---|---|
Desaturation |
с плавающей запятой | Показатель уменьшения насыщенности цвета, которое будет применено к обычному итоговому цвету объекта, в диапазоне от 0 (отсутствие уменьшения насыщенности) до 1 (полное уменьшение насыщенности) |
Opacity |
с плавающей запятой | Непрозрачность объектов, отрисованных с помощью оболочки, в диапазоне от 0 (невидимый) до 1 (полностью непрозрачный) |
В следующей таблице приведены примеры эффектов параметров при применении к целой сцене.
0 | 0,25 | 0,5 | 0.75 | 1.0 | |
---|---|---|---|---|---|
Уменьшение насыщенности | ![]() |
![]() |
![]() |
![]() |
![]() |
Непрозрачность | ![]() |
![]() |
![]() |
![]() |
![]() |
Эффекты оболочки применяются к окончательному непрозрачному цвету, в котором в противном случае была бы отрисована сцена. Сюда входит переопределение иерархического состояния оттенков.
Пример
В следующем коде показан пример использования состояния ShellRenderingSettings
через API.
void SetShellSettings(RenderingSession session)
{
ShellRenderingSettings shellRenderingSettings = session.Connection.ShellRenderingSettings;
shellRenderingSettings.Desaturation = 0.5f;
shellRenderingSettings.Opacity = 0.1f;
}
void SetShellSettings(ApiHandle<RenderingSession> session)
{
ApiHandle<ShellRenderingSettings> shellRenderingSettings = session->Connection()->GetShellRenderingSettings();
shellRenderingSettings->SetDesaturation(0.5f);
shellRenderingSettings->SetOpacity(0.1f);
}
Производительность
Функция отрисовки оболочки содержит небольшие постоянные издержки по сравнению со стандартной непрозрачной отрисовкой. Она выполняется значительно быстрее, чем при использовании прозрачных материалов в объектах или прозрачной отрисовке. Производительность может снизиться сильнее, если только части сцены переведены на отрисовку с помощью оболочки. Это ухудшение может возникать из-за дополнительно обнаруженных объектов, нуждающихся в отрисовке. В этом случае производительность ведет себя аналогично функции Вырезать плоскости.