Скриншоты, получаемые на картах на NVIDIA GeForce 256 в некоторых играх


Теперь перейдем к красивым картинкам :). На основе скриншотов из игр рассмотрим некоторые аспекты качества в 3D, которое обеспечивают платы на базе NVIDIA GeForce 256. В данном разделе мы уже не будем разделять наши три карты между собой, поскольку в качестве 3D все они совершенно одинаковы.

Первый момент: это реализация трилинейной фильтрации. Как известно, NVIDIA Riva TNT/TNT2 использовала вместо честной трилинейной фильтрации аппроксимацию, которая давала подчас такое качество, что временами приходилось жалеть о ее использовании:

   

Этот скриншот получен из игры Unreal, на демо-уровне, использующем компрессию текстур (большие текстуры). Благодаря появлению DirectX 7.0 практически все 3D-ускорители получили доступ к алгоритму распаковки сжатых текстур, поэтому такие вещи, как S3TC-уровни к Unreal мы можем запустить уже на любом акселераторе. Обратите внимание на выделенный фрагмент. На нем очень хорошо видно всю убогость реализации трилинейной аппроксимации на NVIDIA Riva TNT/TNT2. Запускаем этот же уровень, но на NVIDIA GeForce 256:

   

Разница — налицо. Почему такое происходит? Да потому, что одним из важных достоинств этого чипсета является аппаратная поддержка анизотропной фильтрации, обеспечивающей превосходное качество.

Ниже мы покажем фрагмент из Quake3. Первый скриншот — включена только билинейная фильтрация:

   

Обратите внимание на выделенный участок. Граница между MIP-уровнями хорошо видна (мы ее выделили стрелкой). А вот теперь мы включаем трилинейную фильтрацию:

   

Видно, что границы между MIP-уровнями просто нет, и нет тех артефактов, которые сопутствуют трилинейной аппроксимации. Поэтому еще раз хочу обратить внимание на эту важную особенность NVIDIA GeForce 256 — поддержка 8-ми точечной анизотропной фильтрации, которая с лихвой заменяет традиционную трилинейную.

Теперь немного поговорим об освещении. Одной из функций, возложенных на геометрический сопроцессор, является расчет освещения. Однако надо отметить, что, по сути, есть два способа ее реализации в 3D-сценах: картами освещенности (Lightmap) и вершинным освещением (Vertex lighting). Первый способ является всего лишь имитацией световых бликов (как правило, круговыми участками), когда на текстуру накладывается соответствующая карта освещенности, и мы видим как бы освещенный круг вокруг источника света:

Разумеется, что при динамичном изменении положения источника света, либо изменении его очертаний (например, факел с изменяющимися языками пламени) мы уже не можем получить соответствующее и быстрое изменение карт освещенности так, чтобы они соответствовали источнику света. Следовательно, применение вершинного освещения, когда при каждом изменении положения источника света идет перерасчет цвета на вершинах треугольников, образующих сцену, является более реалистичным, но в то же время и сильно загружающим процессор. Вот этот способ расчета освещенности и был перенесен на геометрический сопроцессор чипсета NVIDIA GeForce 256. К сожалению, пока нет ни одной игры, в которой было бы реализовано вершинное освещение с возложением расчета его на GPU. Некое подобие вершинного освещения нам дает Quake3, однако, с довольно большими упрощениями:

Как видим, эффект разной освещенности в зависимости от растояние до источника света явно присутствует, хотя и не столь явно. Должен отметить, что после просмотра этого скриншота реализация освещенности при помощи Lightmap мне показалась чересчур яркой. Все понимается в сравнении :).

Еще одной из важнейших черт, присущих GPU, является перенос расчетов трансформации координат с центрального процессора на геометрический сопроцессор видеокарты. Посмотрите, например, на скелет изображения машины:

Обратите внимание на лавину треугольников, из которых она состоит. У каждого треугольника есть вершины, координаты которых мы знаем в трехмерном пространстве. Но видим-то мы картинку на 2D-экране, поэтому необходимо пересчитать трехмерные координаты в двумерные, то есть выполнить как бы проекцию этого сложного объекта на плоскость. Этим перерасчетом обычно занимается процессор. Однако, ввиду того что на CPU одновременно лежит и масса других функций. Поэтому производители игр обычно шли на упрощение 3D-сцены, уменьшая количество треугольников (полигонов), из которых состоят объекты. Переведя расчеты по преобразованию координат вершин полигонов на геометрический сопроцессор, мы можем значительно усложнить сцену, разбивая ее на большее число полигонов и получая при этом уже почти реалистичные объекты:

Подтверждением этого служит и скриншот из Messiah, игры, которая вскоре появится на прилавках:

   

Посмотрите на плавность форм этого ангелочка. А ведь совсем недавно кроме как квадратичных форм у людей или иных живых объектов в 3D мы и не видели.

Затронем теперь и такой важный момент, как рельефность объектов. Я уже отмечал ту новую технологию, которую предложила NVIDIA для изображения ряби на воде (типа расходящихся по кругу волн) в первом обзоре NVIDIA GeForce 256, однако этого мало для воспроизведения действительно сильно рельефных объектов. Matrox для этих целей предложил технологию Environment Mapped Bump Mapping (EMBM), которая, используя карты окружающей среды, определенным образом накладывает рельеф на поверхности. К сожалению, эта технология не получила должного распространения в виду отсутствия ее аппаратной поддержки со стороны иных чипсетов, кроме Matrox G400.

NVIDIA GeForce 256 поддерживает скалярное рельефное текстурирование (dot product bump mapping или еще называемое perturbed normal bump mapping), однако, к сожалению, игр, поддерживающих данный способ рельефного текстурирования нет. Можно посмотреть работу этой технологии только на демо-программе BumpMap:

Как можно увидеть, на шаре имеется рельеф (я специально подобрал текстуру, чтобы можно было увидеть более четко углубления и выступы на шаре). Поскольку это опять, как и S3TC в свое время, пока мертворожденная технология, больше на ней останавливаться мы не будем.

В конце рассмотрения качества 3D-графики — десерт :). Во-первых, это скриншот из новой и популярной игры Test Drive 6, одной из первых игр, поддерживающих геометрический сопроцессор. И эта игра действительно показала, что дает эта технология. Как многие помнят, особенностью многих игр-автогонок является некоторое опаздывание с прорисовкой окружающей среды впереди машины (то горы появляются вдруг из воздуха, то меняется растительность впереди по мере приближения к ней). При использовании T&L ситуация резко улучшается. Практически вся сцена заполняется очень быстро, и объекты не дергаются вне зависимости от направления движения. На скриншоте этого показать нельзя, это видно только в динамике, тем не менее, картинку из этой игры все же приведу:

Во-вторых, интересно будет также посмотреть на скриншот из Gabriel Knight 3. Хотя эта игра и не поддерживает аппаратный расчет T&L, тем не менее в игре видны достаточно детализированные человеческие лица:

В заключение этого раздела приведу много скриншотов из нашумевшей, и только что вышедшей игры Unreal Tournament:

       




Дополнительно

Скриншоты, получаемые на картах на NVIDIA GeForce 256 в некоторых играх

Скриншоты, получаемые на картах на NVIDIA GeForce 256 в некоторых играх

Теперь перейдем к красивым картинкам :). На основе скриншотов из игр рассмотрим некоторые аспекты качества в 3D, которое обеспечивают платы на базе NVIDIA GeForce 256. В данном разделе мы уже не будем разделять наши три карты между собой, поскольку в качестве 3D все они совершенно одинаковы.

Первый момент: это реализация трилинейной фильтрации. Как известно, NVIDIA Riva TNT/TNT2 использовала вместо честной трилинейной фильтрации аппроксимацию, которая давала подчас такое качество, что временами приходилось жалеть о ее использовании:

   

Этот скриншот получен из игры Unreal, на демо-уровне, использующем компрессию текстур (большие текстуры). Благодаря появлению DirectX 7.0 практически все 3D-ускорители получили доступ к алгоритму распаковки сжатых текстур, поэтому такие вещи, как S3TC-уровни к Unreal мы можем запустить уже на любом акселераторе. Обратите внимание на выделенный фрагмент. На нем очень хорошо видно всю убогость реализации трилинейной аппроксимации на NVIDIA Riva TNT/TNT2. Запускаем этот же уровень, но на NVIDIA GeForce 256:

   

Разница — налицо. Почему такое происходит? Да потому, что одним из важных достоинств этого чипсета является аппаратная поддержка анизотропной фильтрации, обеспечивающей превосходное качество.

Ниже мы покажем фрагмент из Quake3. Первый скриншот — включена только билинейная фильтрация:

   

Обратите внимание на выделенный участок. Граница между MIP-уровнями хорошо видна (мы ее выделили стрелкой). А вот теперь мы включаем трилинейную фильтрацию:

   

Видно, что границы между MIP-уровнями просто нет, и нет тех артефактов, которые сопутствуют трилинейной аппроксимации. Поэтому еще раз хочу обратить внимание на эту важную особенность NVIDIA GeForce 256 — поддержка 8-ми точечной анизотропной фильтрации, которая с лихвой заменяет традиционную трилинейную.

Теперь немного поговорим об освещении. Одной из функций, возложенных на геометрический сопроцессор, является расчет освещения. Однако надо отметить, что, по сути, есть два способа ее реализации в 3D-сценах: картами освещенности (Lightmap) и вершинным освещением (Vertex lighting). Первый способ является всего лишь имитацией световых бликов (как правило, круговыми участками), когда на текстуру накладывается соответствующая карта освещенности, и мы видим как бы освещенный круг вокруг источника света:

Разумеется, что при динамичном изменении положения источника света, либо изменении его очертаний (например, факел с изменяющимися языками пламени) мы уже не можем получить соответствующее и быстрое изменение карт освещенности так, чтобы они соответствовали источнику света. Следовательно, применение вершинного освещения, когда при каждом изменении положения источника света идет перерасчет цвета на вершинах треугольников, образующих сцену, является более реалистичным, но в то же время и сильно загружающим процессор. Вот этот способ расчета освещенности и был перенесен на геометрический сопроцессор чипсета NVIDIA GeForce 256. К сожалению, пока нет ни одной игры, в которой было бы реализовано вершинное освещение с возложением расчета его на GPU. Некое подобие вершинного освещения нам дает Quake3, однако, с довольно большими упрощениями:

Как видим, эффект разной освещенности в зависимости от растояние до источника света явно присутствует, хотя и не столь явно. Должен отметить, что после просмотра этого скриншота реализация освещенности при помощи Lightmap мне показалась чересчур яркой. Все понимается в сравнении :).

Еще одной из важнейших черт, присущих GPU, является перенос расчетов трансформации координат с центрального процессора на геометрический сопроцессор видеокарты. Посмотрите, например, на скелет изображения машины:

Обратите внимание на лавину треугольников, из которых она состоит. У каждого треугольника есть вершины, координаты которых мы знаем в трехмерном пространстве. Но видим-то мы картинку на 2D-экране, поэтому необходимо пересчитать трехмерные координаты в двумерные, то есть выполнить как бы проекцию этого сложного объекта на плоскость. Этим перерасчетом обычно занимается процессор. Однако, ввиду того что на CPU одновременно лежит и масса других функций. Поэтому производители игр обычно шли на упрощение 3D-сцены, уменьшая количество треугольников (полигонов), из которых состоят объекты. Переведя расчеты по преобразованию координат вершин полигонов на геометрический сопроцессор, мы можем значительно усложнить сцену, разбивая ее на большее число полигонов и получая при этом уже почти реалистичные объекты:

Подтверждением этого служит и скриншот из Messiah, игры, которая вскоре появится на прилавках:

   

Посмотрите на плавность форм этого ангелочка. А ведь совсем недавно кроме как квадратичных форм у людей или иных живых объектов в 3D мы и не видели.

Затронем теперь и такой важный момент, как рельефность объектов. Я уже отмечал ту новую технологию, которую предложила NVIDIA для изображения ряби на воде (типа расходящихся по кругу волн) в первом обзоре NVIDIA GeForce 256, однако этого мало для воспроизведения действительно сильно рельефных объектов. Matrox для этих целей предложил технологию Environment Mapped Bump Mapping (EMBM), которая, используя карты окружающей среды, определенным образом накладывает рельеф на поверхности. К сожалению, эта технология не получила должного распространения в виду отсутствия ее аппаратной поддержки со стороны иных чипсетов, кроме Matrox G400.

NVIDIA GeForce 256 поддерживает скалярное рельефное текстурирование (dot product bump mapping или еще называемое perturbed normal bump mapping), однако, к сожалению, игр, поддерживающих данный способ рельефного текстурирования нет. Можно посмотреть работу этой технологии только на демо-программе BumpMap:

Как можно увидеть, на шаре имеется рельеф (я специально подобрал текстуру, чтобы можно было увидеть более четко углубления и выступы на шаре). Поскольку это опять, как и S3TC в свое время, пока мертворожденная технология, больше на ней останавливаться мы не будем.

В конце рассмотрения качества 3D-графики — десерт :). Во-первых, это скриншот из новой и популярной игры Test Drive 6, одной из первых игр, поддерживающих геометрический сопроцессор. И эта игра действительно показала, что дает эта технология. Как многие помнят, особенностью многих игр-автогонок является некоторое опаздывание с прорисовкой окружающей среды впереди машины (то горы появляются вдруг из воздуха, то меняется растительность впереди по мере приближения к ней). При использовании T&L ситуация резко улучшается. Практически вся сцена заполняется очень быстро, и объекты не дергаются вне зависимости от направления движения. На скриншоте этого показать нельзя, это видно только в динамике, тем не менее, картинку из этой игры все же приведу:

Во-вторых, интересно будет также посмотреть на скриншот из Gabriel Knight 3. Хотя эта игра и не поддерживает аппаратный расчет T&L, тем не менее в игре видны достаточно детализированные человеческие лица:

В заключение этого раздела приведу много скриншотов из нашумевшей, и только что вышедшей игры Unreal Tournament: