Почему насыщенность в материалах Unreal считается бесплатной в современном графическом оборудовании - PullRequest
0 голосов
/ 28 ноября 2018

Узел saturate (зажимает другое выражение материала (1 или более чисел с плавающей запятой) между 0 и 1) в пределах UnrealEngine материальные выражения документируется с

Saturate бесплатен на большинстве современного графического оборудования

Saturate node in UE material editor

Этот узел переведен в шейдеры в UMaterialExpressionSaturate::Compile, который использует FMaterialUniformExpressionSaturate,Там происходит сжатие выражения с

static FORCEINLINE T Clamp( const T X, const T Min, const T Max )
{
    return X<Min ? Min : X<Max ? X : Max;
}

Однако я не нашел перевода в шейдер соответствующей платформы (например, HLSL).

  1. шейдеры в UE4, скомпилированные с FMaterialCompiler?
  2. Как выглядит полученный код (например, в HLSL) для этой функции зажима?Почему обучение стоит почти бесплатно?

1 Ответ

0 голосов
/ 29 ноября 2018

Это потому, что зажим (), abs () и операция отрицания могут быть модификаторами инструкций на определенных платформах графического процессора.AFAIK, модификатор зажим () поддерживается всеми современными аппаратными средствами.

Модификаторы команд влияют на результат команды перед ее записью в регистр назначения.С точки зрения набора инструкций наличие инструкции с модификатором означает наличие двух разных инструкций (например, add и add_sat ).

...