Введение
Стандарт API для рендеринга 3D компьютерной графики, обычно используемый в 1980-х – начале 1990-х годов. PHIGS (Programmer's Hierarchical Interactive Graphics System) – это стандарт интерфейса прикладного программирования (API) для рендеринга 3D компьютерной графики, который считался стандартом 3D-графики в 1980-х – начале 1990-х годов. Впоследствии сочетание возможностей и производительности привело к появлению OpenGL, который стал самым популярным профессиональным 3D API середины и конца 1990-х годов. Крупные производители обычно предлагали версии PHIGS для своих платформ, включая DEC PHIGS, graPHIGS от IBM и SunPHIGS от Sun. Его также можно было использовать в системе X Window с поддержкой через PEX. PEX представлял собой расширение X, добавляющее команды, которые пересылались с X-сервера в систему PEX для рендеринга. Рабочие станции обычно отображались в окнах, но также могли быть перенаправлены для захвата всего экрана или вывода на различные принтеры. PHIGS был разработан в 1980-х годах, унаследовав многие идеи от Graphical Kernel System (GKS) конца 1970-х годов, и стал стандартом к 1988 году: ANSI (ANSI X3.144 1988), FIPS (FIPS 153) и затем ISO (ISO/IEC 9592 и ISO/IEC 9593). В силу ранней стадии разработки, стандарт поддерживал только базовую 3D-графику, включая простую геометрию и сетки, а также базовые методы затенения Gouraud, "Dot" и Phong для визуализации сцен. Хотя PHIGS в конечном итоге был расширен и включал в себя продвинутые функции (включая более точную модель освещения Phong и сопоставление данных), другие функции, считавшиеся стандартными к середине 1990-х годов, не поддерживались (в частности, текстурирование), и многие машины того времени физически не могли быть оптимизированы для работы в реальном времени.
PHIGS (Programmer's Hierarchical Interactive Graphics System) is an application programming interface (API) standard for rendering 3D computer graphics, considered to be the 3D graphics standard for the 1980s through the early 1990s. Subsequently, a combination of features and power led to the rise of OpenGL, which became the most popular professional 3D API of the mid to late 1990s. Large vendors typically offered versions of PHIGS for their platforms, including DEC PHIGS, IBM's graPHIGS and Sun's SunPHIGS. It could also be used within the X Window System, supported via PEX. PEX consisted of an extension to X, adding commands that would be forwarded from the X server to the PEX system for rendering. Workstations were placed in windows typically, but could also be forwarded to take over the whole screen, or to various printer output devices. PHIGS was designed in the 1980s, inheriting many of its ideas from the Graphical Kernel System (GKS) of the late 1970s, and became a standard by 1988: ANSI (ANSI X3.144 1988), FIPS (FIPS 153) and then ISO (ISO/IEC 9592 and ISO/IEC 9593). Due to its early gestation, the standard supports only the most basic 3D graphics, including basic geometry and meshes, and only the basic Gouraud, "Dot", and Phong shading for rendering scenes. Although PHIGS ultimately expanded to contain advanced functions (including the more accurate Phong lighting model and Data Mapping), other features considered standard by the mid 1990s were not supported (notably texture mapping), nor were many machines of the era physically capable of optimizing it to perform in real time.
Технические детали
Слово "иерархический" в названии указывает на заметную особенность PHIGS: в отличие от большинства графических систем, PHIGS включал в себя систему сценографии как часть базового стандарта. Модели создавались в централизованном хранилище структур (CSS) – базе данных, содержащей "мир", включающий как графические примитивы, так и их атрибуты (цвет, стиль линий и т.д.). CSS могли использоваться совместно несколькими виртуальными устройствами, известными в PHIGS как рабочие станции, каждая из которых могла содержать любое количество видов. Отображение графики на экране в PHIGS осуществлялось в три этапа: сначала модель создавалась в CSS, затем создавалась и открывалась рабочая станция, и, наконец, модель подключалась к рабочей станции. В этот момент рабочая станция немедленно отображала модель, а любые последующие изменения в модели мгновенно отражались во всех соответствующих видах рабочей станции. Изначально PHIGS не поддерживал отрисовку освещенных сцен и был заменен PHIGS+. PHIGS+ работает по сути так же, но добавляет методы освещения и заливки поверхностей в 3D-сцене. PHIGS+ также представил более продвинутые графические примитивы, такие как NURBS-поверхности (неоднородные рациональные B-сплайны). Для этих предлагаемых расширений PHIGS был сформирован специальный комитет ANSI, который изменил его название на более описательное и (оптимистично) расширяемое "PHIGS PLUS". "PLUS" – это слегка ироничный акроним от "Plus Lumière Und Surfaces" (две основные области усовершенствования по сравнению с базовым стандартом PHIGS).
Рост OpenGL и упадок PHIGS
OpenGL, в отличие от PHIGS, была системой рендеринга непосредственного действия, не имеющей "состояния"; как только объект отправляется в сцену для отрисовки, он фактически исчезает. Любые изменения модели требовали повторной отправки в систему и перерисовки, что требовало совершенно иного подхода к программированию. Для простых проектов PHIGS был значительно проще в использовании и работе. Однако, API "низкого уровня" OpenGL позволял программисту значительно повысить производительность рендеринга, сначала анализируя данные на стороне центрального процессора, прежде чем отправлять их по шине в графический движок. Например, программист мог отбрасывать невидимые объекты, определяя, какие объекты действительно видны в сцене, и отправлять только те, которые должны были появиться на экране. Это было скрыто в PHIGS, что значительно усложняло настройку производительности, но позволяло оптимизацию "бесплатно" внутри реализации PHIGS. Учитывая низкую производительность систем того времени и потребность в высокопроизводительной отрисовке, OpenGL обычно считался гораздо более "мощным" для 3D-программирования. PHIGS устарел и перестал использоваться. Версия 6.0 протокола PEX была разработана для поддержки других моделей 3D-программирования, но не получила распространения. PEX был в основном удален из XFree86 4.2.x (2002) и окончательно исключен из X Window System в X11R6.7.0 (апрель 2004).