(10.01.02, "Вечерний Новосибирск")
Внимание! Прежде, чем приступить к прочтению данного материала, рекомендуем ознакомится с вышедшим в середине мая аналитическим материалом Ложное солнце / Parhelia-512.
СОДЕРЖАНИЕ
- Общие сведения о Parhelia-512
- Краткая теория
- Особенности видеокарты Matrox Parhelia 128MB
- Описание работы вывода изображения на три монитора, а также особенности TV-out и DVDMax
- Конфигурации тестовых стендов и особенности настроек драйверов
- Результаты тестов: коротко о 2D и предельные тесты из DirectX 8.1 SDK
- Результаты тестов: Синтетические тесты 3DMark2001 SE
- Результаты тестов: Игровые тесты 3DMark2001 SE
- Результаты тестов: Quake3 ARENA
- Результаты тестов: Serious Sam: The Second Encounter
- Результаты тестов: Return to Castle Wolfenstein
- Результаты тестов: Code Creatures DEMO
- Результаты тестов: Comanche4 DEMO
- Результаты тестов: Unreal Tournament 2003 DEMO
- Качество 3D: Анизотропная фильтрация
- Качество 3D: Анти-алиасинг
- Качество 3D в целом
- Выводы
Как мы уже говорили, канадская компания Matrox Graphics (в дальнейшем просто Matrox), подразделение корпорации Matrox Electronic Systems Ltd, совершенно неожиданно для многих (ну, не считая, конечно, поклонников Matrox, которые ждали анонсов от любимой компании ежесуточно :-) ) выпустила в свет довольно уникальный продукт. Чем же он уникален? Более подробно об этом можно почитать в вышеупомянутом материале-превью, а сейчас мы только коротко скажем, что самая главная особенность данного продукта состоит в том, что это плод деятельности компании за несколько лет(!). Ведь после 1999 года от канадской фирмы по сути не было новинок (G450, как и G550 — достаточно вялые попытки представить на рынке видоизмененный G400, поскольку ни существенных улучшений в возможностях, ни роста скорости в 3D не было). Витали только слухи якобы появившемся на горизонте G800, а потом и G1000. Собственно, даже после известий о том, что Matrox представит новый продукт, многие называли его G1000.
И вот, Parhelia-512 перед нами. Еще раз замечу, что теоретические аспекты и особенности данного продукта стоит обязательно изучить в обзоре этого чипа.
Линейка продуктов
Да, не удивляйтесь этому слову — "линейка". Во-первых, компания обещала на базе Parhelia-512 выпустить несколько карт, имеющих разные объемы памяти, и (возможно) частоты. Во-вторых, уже ныне вышедшая карта Matrox Parhelia 128MB имеет две ревизии:
- Parhelia 128MB (Retail) — 220 МГц ядро, 128 МБ 275(550) МГц 256 бит DDR памяти.
- Parhelia 128MB (OEM) — 200 МГц ядро, 128 МБ 250(500) МГц 256 бит DDR памяти.
- 80 миллионов транзисторов (Судя по нагреву чипа — имеется :-))
- Технологическая норма 0.15 мкм (То же самое)
- Графическое ядро с частотой 250 МГц (ориентировочно) и частота памяти до DDR 325 (650) МГц (220/550 или 200/500 МГц)
- Полноценная 256 бит (!) DDR шина памяти (Есть!)
- Пропускная способность локальной памяти порядка 20 ГБ/сек ( ПИКОВАЯ пропускная способность памяти 16/17.6 ГБ/сек для 500/550 МГц частоты соответственно)
- Объем локальной памяти 64/128/256 МБ (Пока 128 МБ)
- AGP 2x/4x/8x, включая режимы SBA и FastWrites (Есть, но только 2х/4х!)
- 4 пиксельных конвейера (Есть!)
- 4 текстурных блока на каждом конвейере (!) (Есть!)
- Скорость закраски — около 1 Гигапикселя и около 4 Гигатекселей (Несколько ниже, 880 мегапикселей и 3520 мегатекселей!)
- Вершинные шейдеры версии 2.0 (Vertex Shader 2.0), четыре параллельных исполняющих блока (В текущих драйверах имеется поддержка вершинных шейдеров только версии 1.1 (а не 2.0 из-за отсутствия DirectX 9.0), да и скорость работы вершинных шейдеров заставляет усомниться в том, что задействованы 4 конвейера)
- Пиксельные шейдеры версии 1.3 (Pixel Shader 1.3), 4 текстурных + 5 комбинационных стадий на каждом пиксельном конвейере, с возможностью объединения конвейеров попарно (получаем 2 конвейера по 10 комбинационных стадий) (Есть!)
- EMBM и DOT3 наложение рельефа (Есть!)
- Фиксированный T&L DX8 (включая расширенные возможности матричного блендинга и скининга). Фактически представляет собой специальный вершинный шейдер (Есть!)
- Построение, хранение в локальной памяти и вывод на монитор изображения с точностью 10 бит на компоненту цвета (!). Технология 10-bit GigaColor (Есть!)
- Два встроенных в чип, 400 МГц, 10 бит на канал RAMDAC, использующих технологию UltraSharp (Есть!)
- Полноценная 10 бит > 10 бит таблица для произвольной гамма-коррекции выводимого изображения (Есть!)
- DVD и HDTV видео декодер с точностью (на выходе) 10 бит (Есть!)
- Поддерживается вывод изображения в разрешениях вплоть до 2048x1536x32bpp@85 Гц (Есть!)
- Встроенный в чип интерфейс TV-Out с 10 битной точностью формирования сигнала (Есть!)
- Два цифровых TMDS интерфейса для цифровых выходов или внешних RAMDAC. Поддерживается разрешение вплоть до 1920x1200x32bpp (Не проверялось)
- Два полностью независимых CRTC (Есть!)
- Возможность вывода одного изображения, растянутого на два или даже три (!) приемника. Например, на 2 встроенных и один внешний RAMDAC или на оба встроенных RAMDAC и TV-Out. Суммарное разрешение в тройном режиме до 3840x1024x32bpp. Технологии TripleHead Desktop, Surround Gaming и DualHead-HighFidelity (HF) (Есть!)
- Адаптивная разновидность суперсэмплинга (не мултисэмплинг!) 16x Fragment SSAA с числом сэмплов до 16 включительно. Активируется только на краевых точках полигонов. (Есть!)
- Аппаратная поддержка N-патчей с адаптивной тесселяцией (!) и картами смещения (Displacement mapping) (Есть!)
- Glyph Antialiasing технология аппаратного краевого сглаживания и гамма-коррекции шрифтов (!) (Есть!)
С учетом вышеприведенных замечаний, тех читателей, кто до сих пор не прочитал превью Parhelia-512, еще раз просим это сделать, ибо здесь мы будем заниматься анализом реальных возможностей карты, а в этом разделе ограничимся лишь сравнительной таблицей.
Чип | Parhelia-512 | 3Dlabs P10 | GeForce4 Ti | RADEON 8500 |
---|---|---|---|---|
Шина памяти, бит | 256 DDR | 256 DDR | 128 DDR | 128 DDR |
Частота памяти, МГц | 275 (250) | 250(?) | 325 | 275 |
Частота ядра, МГц | 220(200) | 250 | 300 | 275 |
Полоса пропускания | 16/17 Гб/сек | ~20 Гб/сек | 10.4 Гб/сек | 9.6 Гб/сек |
Макс. доступный объем локальной памяти | 256 Мб | 256 Мб | 128 Мб | 128 Мб |
Вершинные шейдеры, версия | 1.1 (4 блока?) | 2.0 (4 блока) | 1.1 (2 блока) | 1.1 |
Пиксельные шейдеры, версия | 1.3 | 1.3 (2.0?) | 1.3 | 1.4 |
Текстур за проход, до | 4 | 8 (до 16 выборок) | 4 | 6 |
Текстурных блоков | 4 | 2 | 2 | 2 |
Пиксельных конвейеров | 4 | 4 | 4 | 4 |
Анизотропия | 2 (8, 16?) | ? | 8, 16, 32 | RIP-маппинг |
Встроенные RAMDAC | 2 (10 бит!) | 2 (10 бит?) | 2 | 2 |
Встроенный TV-Out | 1 (10 бит!) | нет | нет | нет |
Число CRTC | 2 (+ режим растяжения на 3 экрана) | 2 | 2 | 2 |
FSAA | 16x FAA (фрагментный) | 8x MSAA | 4x MSAA | 6x pattern MSAA |
N-Patches | DX9 (адаптивные) | Нет | Нет | DX8 |
Карты смещения | Да | Нет | Нет | Нет |
Приведем, для полноты картины, полный список OpenGL расширений, поддерживаемых с текущими драйверами:
Matrox, ICD for Parhelia version 1.2 | NVIDIA, GeForce4 Ti 4400/AGP/SSE2, version 1.3.1 | ATI, Radeon 8500 DDR x86/SSE2, version 1.3.2475 |
---|---|---|
GL_ARB_multitexture | GL_ARB_imaging | GL_ARB_multitexture |
GL_ARB_point_parameters | GL_ARB_multisample | GL_ARB_texture_border_clamp |
GL_ARB_texture_compression | GL_ARB_multitexture | GL_ARB_texture_compression |
GL_ARB_texture_cube_map | GL_ARB_texture_border_clamp | GL_ARB_texture_cube_map |
GL_ARB_texture_env_add | GL_ARB_texture_compression | GL_ARB_texture_env_add |
GL_ARB_texture_env_combine | GL_ARB_texture_cube_map | GL_ARB_texture_env_combine |
GL_ARB_texture_env_dot3 | GL_ARB_texture_env_add | GL_ARB_texture_env_crossbar |
GL_ARB_transpose_matrix | GL_ARB_texture_env_combine | GL_ARB_texture_env_dot3 |
GL_S3_s3tc | GL_ARB_texture_env_dot3 | GL_ARB_transpose_matrix |
GL_ATI_element_array | GL_ARB_transpose_matrix | GL_ARB_vertex_blend |
GL_ATI_vertex_array_object | GL_S3_s3tc | GL_ARB_window_pos |
GL_EXT_bgra | GL_EXT_abgr | GL_S3_s3tc |
GL_EXT_blend_color | GL_EXT_bgra | GL_ATI_element_array |
GL_EXT_blend_func_separate | GL_EXT_blend_color | GL_ATI_envmap_bumpmap |
GL_EXT_blend_logic_op | GL_EXT_blend_minmax | GL_ATI_fragment_shader |
GL_EXT_blend_minmax | GL_EXT_blend_subtract | GL_ATI_map_object_buffer |
GL_EXT_blend_subtract | GL_EXT_compiled_vertex_array | GL_ATI_pn_triangles |
GL_EXT_secondary_color | GL_EXT_separate_specular_color | GL_ATI_texture_mirror_once |
GL_EXT_compiled_vertex_array | GL_EXT_fog_coord | GL_ATI_vertex_array_object |
GL_EXT_draw_range_elements | GL_EXT_multi_draw_arrays | GL_ATI_vertex_streams |
GL_EXT_element_array | GL_EXT_packed_pixels | GL_ATIX_texture_env_combine3 |
GL_EXT_fog_coord | GL_EXT_paletted_texture | GL_ATIX_texture_env_route |
GL_EXT_multi_draw_arrays | GL_EXT_point_parameters | GL_ATIX_vertex_shader_output_point_size |
GL_EXT_packed_pixels | GL_EXT_rescale_normal | GL_EXT_abgr |
GL_EXT_point_parameters | GL_EXT_clip_volume_hint | GL_EXT_bgra |
GL_EXT_rescale_normal | GL_EXT_draw_range_elements | GL_EXT_blend_color |
GL_EXT_secondary_color | GL_EXT_shared_texture_palette | GL_EXT_blend_func_separate |
GL_EXT_separate_specular_color | GL_EXT_stencil_wrap | GL_EXT_blend_minmax |
GL_EXT_stencil_wrap | GL_EXT_texture3D | GL_EXT_blend_subtract |
GL_EXT_subtexture | GL_EXT_texture_compression_s3tc | GL_EXT_clip_volume_hint |
GL_EXT_texture3D | GL_EXT_texture_edge_clamp | GL_EXT_compiled_vertex_array |
GL_EXT_texture_compression_s3tc | GL_EXT_texture_env_add | GL_EXT_draw_range_elements |
GL_EXT_texture_cube_map | GL_EXT_texture_env_combine | GL_EXT_fog_coord |
GL_EXT_texture_edge_clamp | GL_EXT_texture_env_dot3 | GL_EXT_packed_pixels |
GL_EXT_texture_env_add | GL_EXT_texture_cube_map | GL_EXT_point_parameters |
GL_EXT_texture_filter_anisotropic | GL_EXT_texture_filter_anisotropic | GL_ARB_point_parameters |
GL_EXT_texture_lod_bias | GL_EXT_texture_lod | GL_EXT_rescale_normal |
GL_EXT_vertex_array | GL_EXT_texture_lod_bias | GL_EXT_secondary_color |
GL_EXT_vertex_array_object | GL_EXT_texture_object | GL_EXT_separate_specular_color |
GL_EXT_vertex_shader | GL_EXT_vertex_array | GL_EXT_stencil_wrap |
GL_EXT_texture_env_combine | GL_EXT_vertex_weighting | GL_EXT_texgen_reflection |
GL_EXT_texture_env_dot3 | GL_HP_occlusion_test | GL_EXT_texture_env_add |
GL_KTX_buffer_region | GL_IBM_texture_mirrored_repeat | GL_EXT_texture3D |
GL_MTX_fragment_shader | GL_KTX_buffer_region | GL_EXT_texture_compression_s3tc |
GL_NV_texgen_reflection | GL_NV_blend_square | GL_EXT_texture_cube_map |
GL_SGIS_multitexture | GL_NV_copy_depth_to_color | GL_EXT_texture_edge_clamp |
GL_SGIS_texture_lod | GL_NV_evaluators | GL_EXT_texture_env_combine |
WGL_EXT_swap_control | GL_NV_fence | GL_EXT_texture_env_dot3 |
- | GL_NV_fog_distance | GL_EXT_texture_lod_bias |
- | GL_NV_light_max_exponent | GL_EXT_texture_filter_anisotropic |
- | GL_NV_multisample_filter_hint | GL_EXT_texture_object |
- | GL_NV_occlusion_query | GL_EXT_vertex_array |
- | GL_NV_packed_depth_stencil | GL_EXT_vertex_shader |
- | GL_NV_point_sprite | GL_KTX_buffer_region |
- | GL_NV_register_combiners | GL_NV_texgen_reflection |
- | GL_NV_register_combiners2 | GL_NV_blend_square |
- | GL_NV_texgen_reflection | GL_SGI_texture_edge_clamp |
- | GL_NV_texture_compression_vtc | GL_SGIS_texture_border_clamp |
- | GL_NV_texture_env_combine4 | GL_SGIS_texture_lod |
- | GL_NV_texture_rectangle | GL_SGIS_generate_mipmap |
- | GL_NV_texture_shader | GL_SGIS_multitexture |
- | GL_NV_texture_shader2 | GL_WIN_swap_hint |
- | GL_NV_texture_shader3 | WGL_EXT_extensions_string |
- | GL_NV_vertex_array_range | WGL_EXT_swap_control |
- | GL_NV_vertex_array_range2 | - |
- | GL_NV_vertex_program | - |
- | GL_NV_vertex_program1_1 | - |
- | GL_SGIS_generate_mipmap | - |
- | GL_SGIS_multitexture | - |
- | GL_SGIS_texture_lod | - |
- | GL_SGIX_depth_texture | - |
- | GL_SGIX_shadow | - |
- | GL_WIN_swap_hint | - |
- | WGL_EXT_swap_control | - |
Подводя итог, хочется отметить двойственность оценки нового продукта. По сравнению с ранее имевшимися на рынке продуктами от Matrox, это супер-революция! Даже нет смысла приводить старые спецификации G400/450/550, чтобы оценить. И так все очевидно. Но по сравнению с ныне имеющимися продуктами последнего поколения от ATI (RADEON 8500) и NVIDIA (GeForce4 Ti) Parhelia выглядит уже довольно скромно. Да, разумеется, наличие 16-ти текстурников ставит этот чип как бы на ступень выше, но, как покажут наши исследования, на данном этапе формула 4 конвейера × 4 текстурника невостребована, практически ни одно (за редким исключением) приложение не умеет работать с таким режимом мультитекстурирования. Да, такие "богатства" текстурных блоков дают шанс на получение быстрых билинейной и анизотропной фильтраций. Но теоретический. Судите сами: каждый текстурник умеет производить выборку 4-х сэмплов для формирования билинейки. Это уже стандарт. Четыре текстурника — 16, 4 конвейера — 64. Именно отсюда маркетологи Matrox и взяли пресловутые 64 отсчета текстур, выбираемых за такт. Да, при этом мы получаем либо четыре билинейно фильтрованных, либо две трилинейно или анизотропно (8 отсчетов) либо одну анизотропно (16 отсчетов) текстуры за такт. Соответственно, для старых (а таковых 99,9%) «двутекстурных» приложений анизотропная фильтрация на базе 8 отсчетов должна проходить без потери скорости. Но на практике это не так, и ниже вы в этом убедитесь.
По сути получается, что ныне Parhelia обладает только одной функцией из набора DirectX 9.0 - технологией Displacement Mapping, которая позволяет существенно увеличить степень реалистичности и детальности рельефных поверхностей. В отличие от привычных уже разновидностей рельефа, наносимого на поверхности треугольников при закраске и не влияющего на видимость тех или иных точек (картой рельефа моделируется только освещенность точки, а не ее реальное положение в пространстве) карты смещения позволяют создавать геометрически корректные рельефы, пересечение которых в пространстве не будет выглядеть идеальной прямой. Я приведу яркий пример:
В данной demo-программе не только работают все 16 текстурников, но и виден эффект от карт смещения. С картами будет поставляться и другая, более шикарная демо-программа, эмулирующая кусочек живой природы рифа. Разумеется, и тут можно заметить использование карт смещения.
Надо сказать все же, что появление Vertex Shaders 2.0 мы ожидаем с выходом DirectX 9.0. Возможно, что четыре блока этих шейдеров заработают в полную силу опять же только при условии наличия DX 9.0.
Ну что ж, перейдем к рассмотрению непосредственно самой карты.