Введение

Стандарт 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: в отличие от большинства графических систем, 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).