~~~~~~~~~~~~~~~~~~~~ Arc.Ask3.Ru ~~~~~~~~~~~~~~~~~~~~~ 
Номер скриншота №:
✰ D1A6F360D188D1B236178B5EB124915E__1712412840 ✰
Заголовок документа оригинал.:
✰ Shading language - Wikipedia ✰
Заголовок документа перевод.:
✰ Язык штриховки — Википедия ✰
Снимок документа находящегося по адресу (URL):
✰ https://en.wikipedia.org/wiki/Shading_language ✰
Адрес хранения снимка оригинал (URL):
✰ https://arc.ask3.ru/arc/aa/d1/5e/d1a6f360d188d1b236178b5eb124915e.html ✰
Адрес хранения снимка перевод (URL):
✰ https://arc.ask3.ru/arc/aa/d1/5e/d1a6f360d188d1b236178b5eb124915e__translat.html ✰
Дата и время сохранения документа:
✰ 21.06.2024 09:52:25 (GMT+3, MSK) ✰
Дата и время изменения документа (по данным источника):
✰ 6 April 2024, at 17:14 (UTC). ✰ 

~~~~~~~~~~~~~~~~~~~~~~ Ask3.Ru ~~~~~~~~~~~~~~~~~~~~~~ 
Сервисы Ask3.ru: 
 Архив документов (Снимки документов, в формате HTML, PDF, PNG - подписанные ЭЦП, доказывающие существование документа в момент подписи. Перевод сохраненных документов на русский язык.)https://arc.ask3.ruОтветы на вопросы (Сервис ответов на вопросы, в основном, научной направленности)https://ask3.ru/answer2questionТоварный сопоставитель (Сервис сравнения и выбора товаров) ✰✰
✰ https://ask3.ru/product2collationПартнерыhttps://comrades.ask3.ru


Совет. Чтобы искать на странице, нажмите Ctrl+F или ⌘-F (для MacOS) и введите запрос в поле поиска.
Arc.Ask3.ru: далее начало оригинального документа

Язык штриховки — Википедия Jump to content

Язык штриховки

Из Википедии, бесплатной энциклопедии

Язык шейдеров — это язык графического программирования, адаптированный для программирования эффектов шейдеров . Языки штриховки обычно состоят из специальных типов данных , таких как «вектор», « матрица », «цвет» и « нормальный ».

Офлайн-рендеринг [ править ]

Языки шейдеров, используемые при автономном рендеринге, как правило, близки к естественному языку , поэтому специальных знаний программирования не требуется. Офлайн-рендеринг направлен на создание изображений максимального качества за счет большего времени и вычислительных ресурсов, чем рендеринг в реальном времени.

Язык шейдеров RenderMan [ править ]

RenderMan Язык шейдеров [1] (RSL или сокращенно SL), определенный в спецификации интерфейса RenderMan , — это общий язык шейдеров для рендеринга производственного качества. Это также один из первых когда-либо реализованных языков шейдеров.

Он определяет шесть основных типов шейдеров:

  • Шейдеры источника света вычисляют цвет света, излучаемого из точки источника света в точку на целевой поверхности.
  • Поверхностные шейдеры моделируют цвет и положение точек на поверхности объекта на основе падающего света и физических свойств объекта.
  • Шейдеры смещения манипулируют геометрией поверхности независимо от цвета.
  • Шейдеры деформации преобразуют все пространство. Только одна реализация RenderMan, средство визуализации AIR от SiTex Graphics, реализовала этот тип шейдера, поддерживая только одно линейное преобразование, применяемое к пространству.
  • Шейдеры объема управляют цветом света, проходящего через объем. Они создают такие эффекты, как туман .
  • Шейдеры Imager описывают преобразование цвета в окончательные значения пикселей. Это похоже на фильтр изображения , за исключением того, что шейдер изображения работает с данными до квантования . Такие данные имеют больший динамический диапазон и цветовое разрешение, чем могут быть отображены на обычном устройстве вывода.

Язык шейдеров Houdini VEX [ править ]

Язык шейдеров Houdini VEX (Vector Expressions) (часто сокращенно «VEX») создан по образцу RenderMan. Однако его интеграция в полный 3D-пакет означает, что автор шейдеров может получить доступ к информации внутри шейдера — функция, которая обычно недоступна в контексте рендеринга. Языковые различия между RSL и VEX в основном синтаксические, в дополнение к различиям в названиях нескольких имен шейдеров . [2]

Gelato шейдинга Язык

Мороженое [3] язык шейдеров, такой как VEX Гудини , очень похож на RenderMan. Различия между языком шейдинга Gelato и RSL в основном синтаксические: Gelato использует точки с запятой вместо запятых для разделения аргументов в определениях функций, а некоторые шейдеры имеют разные имена и параметры.

Открытый язык шейдинга [ править ]

Open Shading Language (OSL) был разработан Sony Pictures Imageworks для использования в ее Arnold Renderer. Он также используется . движком рендеринга Cycles Blender Шейдеры поверхностей и объемов OSL определяют, как поверхности или объемы рассеивают свет таким образом, чтобы обеспечить выборку важности; таким образом, он хорошо подходит для физических средств визуализации , поддерживающих трассировку лучей и глобальное освещение.

Рендеринг в реальном времени [ править ]

Языки шейдеров для рендеринга в реальном времени сейчас широко распространены. Они обеспечивают как более высокую аппаратную абстракцию, так и более гибкую модель программирования, чем предыдущие парадигмы, в которых жестко запрограммированы уравнения преобразования и затенения. Они обеспечивают больший контроль и более богатый контент с меньшими накладными расходами.

Шейдеры, предназначенные для выполнения непосредственно на графическом процессоре, стали полезны для общей обработки с высокой пропускной способностью благодаря своей потокового программирования модели ; это привело к разработке вычислительных шейдеров , работающих на аналогичном оборудовании (см. также: GPGPU ).

Исторически на рынке доминировали несколько таких языков; они описаны ниже.

Язык ассемблера ARB [ править ]

Совет по обзору архитектуры OpenGL установил язык ассемблера ARB в 2002 году как стандартный набор команд низкого уровня для программируемых графических процессоров.

высокого уровня OpenGL Языки шейдеров часто компилируются в сборку ARB для загрузки и выполнения. В отличие от языков шейдеров высокого уровня, сборка ARB не поддерживает поток управления или ветвление. Однако его продолжают использовать, когда требуется переносимость между графическими процессорами.

Язык шейдеров OpenGL [ править ]

Также известный как GLSL или glslang , это стандартизированный [4] язык шейдеров предназначен для использования с OpenGL .

Язык объединяет обработку вершин и фрагментов в одном наборе команд, позволяя выполнять условные циклы и переходы . GLSL предшествовал язык ассемблера ARB .

Язык программирования Cg [ править ]

Язык Cg , разработанный Nvidia . [5] был разработан для простой и эффективной интеграции производственного конвейера. Он отличается независимостью от API и поставляется со множеством бесплатных инструментов. [1] улучшить управление активами. Разработка Cg была остановлена ​​в 2012 году, и сейчас этот язык устарел.

шейдеров Язык DirectX ассемблера

Язык ассемблера шейдеров в Direct3D 8 и 9 является основным языком программирования вершинных и пиксельных шейдеров в Shader Model 1.0/1.1, 2.0 и 3.0. Это прямое представление байт-кода промежуточного шейдера, который передается графическому драйверу для выполнения.

Язык ассемблера шейдеров нельзя напрямую использовать для программирования унифицированной модели шейдеров 4.0, 4.1, 5.0 и 5.1, хотя он сохраняет свою функцию представления промежуточного байт-кода для целей отладки. [6]

уровня Язык DirectX шейдеров высокого

Язык шейдеров высокого уровня (HLSL) — это язык шейдеров в стиле C для DirectX 9 и выше, а также игровых консолей Xbox. Он связан с Cg от Nvidia, но поддерживается только DirectX и Xbox. Программы HLSL компилируются в байт-код, эквивалентный ассемблеру шейдеров DirectX.

HLSL был представлен как дополнительная альтернатива языку ассемблера шейдеров в Direct3D 9, но стал обязательным в Direct3d 10 и более поздних версиях, где язык ассемблера шейдеров устарел.

Adobe Pixel Bender и язык Graphics Adobe ассемблера

Adobe Systems добавила Pixel Bender как часть API Adobe Flash 10. Pixel Bender мог обрабатывать только пиксели, но не данные 3D-вершин. Flash 11 представил совершенно новый 3D API под названием Stage3D , который использует собственный язык шейдеров под названием Adobe Graphics Assembly Language (AGAL), который предлагает полную поддержку 3D-ускорения. [7] [8] Ускорение графического процессора для Pixel Bender было удалено в Flash 11.8. [9] [10]

AGAL — это низкоуровневый, но независимый от платформы язык шейдеров, который можно скомпилировать, например, в ассемблерный язык ARB. [ нужна цитата ] или ГЛСЛ .

Язык шейдеров PlayStation [ править ]

Sony анонсировала язык шейдеров PlayStation (PSSL) как язык шейдеров, аналогичный Cg/HLSL, но специфичный для PlayStation 4 . Говорят, что PSSL в значительной степени совместим с шейдерами HLSL на ПК, но с дополнительными функциями для платформы PS4. [11]

Язык шейдинга металла [ править ]

Apple создала низкоуровневый графический API под названием Metal , который работает на большинстве компьютеров Mac, выпущенных с 2012 года, iPhone, начиная с 5S, и iPad, начиная с iPad Air. У Metal есть собственный язык шейдеров под названием Metal Shading Language (MSL), который основан на C++14 и реализован с использованием clang и LLVM . MSL объединяет обработку вершин, фрагментов и вычислений. [12]

Язык шейдеров WebGPU [ править ]

Язык шейдеров WebGPU (WGSL) — это язык шейдеров для WebGPU . То есть приложение, использующее API WebGPU, использует WGSL для выражения программ, известных как шейдеры, которые выполняются на графическом процессоре. [13]

Перевод [ править ]

Для переноса шейдеров с одного языка шейдеров на другой используется несколько подходов: [14]

  • Определите общий интерфейс. Например, Cg/HLSL, GLSL и MSL реализуют макросы препроцессора C , поэтому можно объединить все различные операции в общий интерфейс. Source 2 от Valve и FXAA 3.11 от NVIDIA делают это.
  • Перевести один язык на другой. Например, байт-код DirectX можно частично преобразовать в GLSL через HLSLcc, и существует несколько инструментов для преобразования GLSL в HLSL, таких как ANGLE и HLSL2GLSL .
  • Определите промежуточный язык. SPIR-V частично предназначен для этой цели. Его можно сгенерировать из HLSL или GLSL и декомпилировать в HLSL, GLSL или MSL. [15]

Ссылки [ править ]

  1. ^ Персонал (1986–2012). «РИСпец» . Пиксар . Архивировано из оригинала 25 июля 2011 года . Проверено 9 июня 2012 года .
  2. ^ Персонал. «Гудини» . Боковые эффекты . Side Effects Software Inc. Архивировано из оригинала 22 июля 2008 года . Проверено 9 июня 2012 года .
  3. ^ Корпорация NVIDIA (2003–2008). "Дом" . Зона NVIDIA Gelato . Корпорация NVIDIA. Архивировано из оригинала 26 апреля 2006 года . Проверено 9 июня 2012 года .
  4. ^ Персонал (1997–2012 гг.). «Язык шейдеров OpenGL» . OpenGL . Группа «Хронос» . Проверено 9 июня 2012 года .
  5. ^ Персонал (2012). «Инструментарий Cg» . Зона разработчиков NVIDIA . Корпорация NVIDIA . Проверено 9 июня 2012 года .
  6. ^ «Справочник по шейдерам Asm — приложения Win32» . Learn.microsoft.com . 10 декабря 2019 г.
  7. ^ Жозеф Лабрек (2011). Что нового в Adobe AIR 3 . O'Reilly Media, Inc., стр. 17–26 . ISBN  978-1-4493-1108-7 .
  8. ^ Реми Арно (2011). «3D в веб-браузере». В Эрике Лендьеле (ред.). Игровой движок Gems 2 . ЦРК Пресс. стр. 207–212. ISBN  978-1-56881-437-7 .
  9. ^ «Стейдж3Д» . Scratch.mit.edu . Проверено 5 августа 2014 г.
  10. ^ «Adobe Flash Player 11.8 — Ошибка 3591185: производительность шейдера Pixel Bender резко снизилась в FP11.8. Закрыто как «NeverFix» » . Архивировано из оригинала 22 апреля 2014 года.
  11. ^ Стенсон, Ричард; Эй, Крис. «Язык шейдеров PlayStation для PS4» . КРИ Европа 2013 .
  12. ^ Руководство по языку Metal Shading
  13. ^ «Язык шейдеров WebGPU» .
  14. ^ Пранцкявичюс, Арас (28 марта 2014 г.). «Кроссплатформенные шейдеры в 2014 году · Веб-сайт Араса» .
  15. ^ «Связка инструментов СПИР-В» . ЛунныйXchange .

Примечания [ править ]

  1. ^ Предыдущие языки затенения вершин (в произвольном порядке) для OpenGL включают EXT_vertex_shader , NV_vertex_program , вышеупомянутые ARB_vertex_program , NV_vertex_program2 и NV_vertex_program3 .
  2. ^ Для фрагментарного затенения nvparse, возможно, является первым языком шейдеров с абстракцией высокого уровня, основанным на NV_register_combiners , NV_register_combiners2 для пиксельной математики и NV_texture_shader , NV_texture_shader2 и NV_texture_shader3 для поиска текстур. ATI_fragment_shader даже не предоставлял средства синтаксического анализа, ориентированного на строки (хотя позже они были добавлены ATI_text_fragment_shader ). ARB_fragment_program оказалась очень успешной. NV_fragment_program и NV_fragment_program2 на самом деле похожи, хотя последняя обеспечивает гораздо более расширенную функциональность по сравнению с другими.
  3. ^ Композитор Fx с домашней страницы NVIDIA, http://developer.nvidia.com/object/fx_composer_home.html.
  4. Руди Кортес и Сэти Рагхавачари : Руководство по языку шейдинга RenderMan , PTR по технологии курса, 1 издание (27 декабря 2007 г.), ISBN   1-59863-286-8
Arc.Ask3.Ru: конец оригинального документа.
Arc.Ask3.Ru
Номер скриншота №: D1A6F360D188D1B236178B5EB124915E__1712412840
URL1:https://en.wikipedia.org/wiki/Shading_language
Заголовок, (Title) документа по адресу, URL1:
Shading language - Wikipedia
Данный printscreen веб страницы (снимок веб страницы, скриншот веб страницы), визуально-программная копия документа расположенного по адресу URL1 и сохраненная в файл, имеет: квалифицированную, усовершенствованную (подтверждены: метки времени, валидность сертификата), открепленную ЭЦП (приложена к данному файлу), что может быть использовано для подтверждения содержания и факта существования документа в этот момент времени. Права на данный скриншот принадлежат администрации Ask3.ru, использование в качестве доказательства только с письменного разрешения правообладателя скриншота. Администрация Ask3.ru не несет ответственности за информацию размещенную на данном скриншоте. Права на прочие зарегистрированные элементы любого права, изображенные на снимках принадлежат их владельцам. Качество перевода предоставляется как есть, любые претензии не могут быть предъявлены. Если вы не согласны с любым пунктом перечисленным выше, немедленно покиньте данный сайт. В случае нарушения любого пункта перечисленного выше, штраф 55! (Пятьдесят пять факториал, денежную единицу можете выбрать самостоятельно, выплаичвается товарами в течение 7 дней с момента нарушения.)