Константные выражения

Константное выражение — это одно из:

  • конкретное значение (например 5 или true)
  • переменная, объявленная со спецификатором const и инициализированная константным выражением
  • выражение, операнды которого которого константные выражения, включая получение элемента константного массива, или члена константной структуры, или компонента константного вектора. Однако операторы с наименьшим приоритетом оператора последовательности ( , ) и операторов присваивания (=, + =, …) не могут создавать константное выражение.
  • допустимо использование метода length() для объекта с явным размером, независимо от того, является ли объект константным (массивы с неявным размером или размером времени выполнения не возвращают константное выражение)
  • конструктор, все аргументы которого являются постоянными выражениями
  • значение, возвращаемое встроенной функцией при использовании константных выражений в качестве аргументов, за исключением тех, которые обеспечивают доступ к памяти (функции поиска текстуры, доступ к изображениям, атомный счетчик и т. д.) и функции зашумления. Это правило исключает функции возвращающие void или функции имеющие параметр out. Следующие встроенные функции должны возвращать 0, если аргумент является константным выражением:
         dFdx
         dFdy
         fwidth
         dFdxCoarse
         dFdyCoarse
         fwidthCoarse
         dFdxFine
         dFdyFine
         fwidthFine

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

Integral constant expression это константное выражение, которое вычисляет знаковый скаляр или без знаковое целочисленное.

Константные выражения всегда будут оцениваться постоянным (invariant) способом, независимо от наличия спецификаторов invariant и precise, таким образом при создании одинаковых константных, используется что бы создать одно значение в нескольких шейдерах. Смотри разделы 4.8.1 “The Invariant Qualifier” и 4.9 “The Precise Qualifier” для получения более подробной информации о том, как создавать постоянные выражения. Константные выражения могут оцениваться хост-платформой компилятора и поэтому не обязаны вычислять то же значение, которое будет вычисляться одним и тем же выражением во время выполнения шейдера. Однако хост должен использовать ту же или большую точность, что и целевой объект.

Main Admin

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *