Riva TNT
1998 год. Третье поколение 3D акселераторов. Обязательные условия:поддержка мультитекстурирования, трилинейной фильтрации, высокая скоростьзаполнения, поддержка больших разрешений.
Специалисты nVidia прекрасно понимали, что выиграть на рынке 3D акселераторов третьего поколения сможет только действительно качественный продукт. И чтобы выиграть, нужно будет хорошо побороться за звание лучшего. А бороться было с кем. По скорости на рынке господствует конфигурация из двух Voodoo2 в SLI режиме. По качеству в Direct3D - Matrox G200. Другие продукты, как, например, Permedia 2, Verite 2x00 имеют хорошую поддержку OpenGL. Кроме того, фирмы 3dfx, ATI Technologies Inc. и 3Dlabs анонсируют свои продукты, претендующие на звание акселераторов третьего поколения.Именно такая ситуация складывалась в мире 3D акселераторов. Но nVidia нашла правильное решение. RivaTNT - вот каким был её ответ.Технология TwinTexel, обеспечивающая присутствие двух текстурных модулей в одном чипе, 128 битный доступ к памяти, 128 битный конвейер рендеринга, поддержка AGP2x, OpenGL ICD, Direct3D версии 6.0
Наименование | Riva TNT |
Ядро | NV4 |
Техпроцесс (мкм) | 0,35 |
Транзисторов (млн) | 7 |
Частота работы ядра | 90 |
Частота работы памяти (DDR) | 110 |
Шина и тип памяти | SDR-128 bit |
ПСП (Гб/с) | 1,76 |
Пиксельных конвейеров | 2 |
TMU на конвейер | 1 |
Текстур за такт | 2 |
Текстур за проход | ? |
Вершинных конвейеров | нет |
Pixel Shaders | нет |
Vertex Shaders | нет |
Fill Rate (Mpix/s) | 180 |
Fill Rate (Mtex/s) | 180 |
DirectX | 6.0 |
Anti-Aliasing (Max) | нет (?) |
Анизотропная фильтрация (Max) | нет (?) |
Объем памяти | 16 MB |
Интерфейс | AGP 2x / PCI |
RAMDAC | 250 MHz |
Riva TNT - это абсолютно новый чип, а не доработка старого (как Riva 128ZX).
Новая технология Twin-Texel позволяла накладывать две текстуры на один пиксел за такт в режиме мультитекстурирования. Таким образом, можно было накладывать на пиксел текстуру и карту освещённости без потери скорости. Если приложение не использовало мультитекстурирование, Riva TNT накладывала одну текстуру на два пиксела за такт. Это означает, что в режиме мультитекстурирования скорость заполнения (fillrate) должна почти в два раза быть меньше, чем в обычном режиме. Однако, на практике при применении мультитекстурирования в приложениях скорость возрастает в среднем от 10 до 40 процентов. Так что возможность накладывать две текстуры за такт - лакомый кусочек, реализованый в TNT.
8-битный буфер шаблонов. С помощью этой функции можно было получать вполне реальные тени. По-настоящему пригодилась в играх Unreal и Quake III Arena. В последней игре засчёт 8-битного буфера шаблонов получались самые реальные тени из тех, что я видел в играх.
Z-Buffer разрядностью 16 и 24 бит. По сравнению с Riva 128ZX, где Z-Buffer был только 16 разрядный, значительно повышалось качество картинки.
Поддержка до 16 Мегабайт памяти. Позволяла устанавливать разрешения вплоть до 1920х1200.
32-битный рендеринг улучшал качество выводимой картинки
Пополигонный мипмаппинг в некоторых случаях улучшал качество картинки
Поддержка процедурных текстур. Достаточно новая возможность. Процедурные текстуры можно увидеть в Unreal, Quake 3 Arena. Они использовались для создания воды, энергетических полей и так далее. Довольно полезная вещь.
Поддержка Strips. Полигоны могут располагаться беспорядочно, а могут быть отсортированы в полосы. В этом случае у каждого полигона передаются данные только по одной вершине вместо трёх. Засчёт этого производительность обработки 25-пиксельных полигонов увеличивается почти в три(!) раза. Riva TNT поддерживала три типа фильтрации: Билинейная, Трилинейная и Анизотропная. Вот здесь нужно остановиться более подробно.
Билинейную фильтрацию поддерживают все 3D чипы на сегодняшний день, так же было и в 1998 году. А вот с трилинейной фильтрацией у Riva TNT были проблемы. В то время было очень важно включать аппаратную поддержку трилинейной фильтрации в новые 3D чипы. Вот поэтому некоторые производители обманывали покупателей при помощи так называемой "аппроксимации", что в переводе означало приближение. Суть её заключалась в том, что фильтрации подвергаются только области перехода между MIP уровнями. Этот метод был очень эффективен по скорости, но никак не годился по качеству. Качество картинки при использовании трилинейной аппроксимации падало и выглядело хуже, чем при билинейной фильтрации. Но аппроксимация была не такой ресурсоёмкой, как честная трилинейка, поэтому при её включении скорость практически не падала. Так вот. В Riva TNT была реализована именно аппроксимация. Зачем? Чтобы можно было спокойно говорить о поддержке трилинейки в играх, предъявляя результаты и умалчивая о том, что это - аппроксимация. Честную трилинейную фильтрацию можно получить, отключив мультитекстурирование.
Что касается поддержки DiME. Riva TNT не могла нормально работать с текстурами, хранящимися в системной памяти. До конца 1999 года большинству пользователей было невозможно это проверить, так как не было игр, поддерживающих большой объём текстур. В конце 1999 года в свет вышла игра Quake 3 Arena. Здесь на каждый уровень приходилось от 27 мегабайт текстур и больше. При включении максимальной детализации текстур, они не вмещались в локальную память видеокарты и подгружались из системной памяти. Вот здесь Riva TNT и показала свою немощность по работе с большими текстурами.
Что касается 2D части. Riva TNT унаследовала от Riva 128ZX 250 мегагерцовый RAMDAC. Следовательно, качество в 2D не должно было возрасти. Кроме того, в разрешениях выше 1024х768 было "замыливание" - то есть нечёткое изображение. Для тех, кто использовал Riva TNT для игр это было несущественно, но для офисных приложений - неприемлемо.
Riva TNT не имеет функции обратного преобразования рядов Фурье. Эта функция используется для декодирования DVD видео файлов. При этом разгружается центральный процессор и увеличивается качество. Но nVidia посчитала эту функцию лишней для своего продукта.
Что касается TV in/out, то Riva TNT имела NTSC и PAL TV выход, CCIR-656 порт видеозахвата, поддерживала все те же функции, что и Riva 128 ZX.
Поэтому покупать Riva TNT для 2D приложений и видео было невыгодно.
Тут, в отличие от Riva 128, придраться было не к чему. Riva TNT поставлялась с отличными драйверами, в зависимости от производителя, имеющими разные настройки. nVidia выпускала референсные драйвера для своего продукта с такой частотой, что вскоре "родные" драйверы от производителей видеокарт становились неактуальными и быстро устаревали. Почти все видеокарты на Riva TNT могли работать с референсными драйверами. В драйверах Detonator была увеличена производительность видеокарт. А начиная с версии 2.08 было заметно улучшено качество рендеринга. А вот что действительно интересно, так это тот факт, что в одной из версий драйверов nVidia отключила мультитекстурирование в 16 битном цвете, чтобы работу в этом режиме более медленной. Тогда на этом фоне переход в 32 битный цвет, где мультитекстурирование включено, сопровождался небольшим падением скорости, что было использовано nVidia в рекламной кампании. К счастью для пользователей, мультитекстурирование можно было включить, немного покопавшись в системном реестре. В последующих драйверах nVidia исправила всё на место.
Что касается Direct3D, то Riva TNT поддерживала этот стандарт на высшем уровне. Никаких ошибок и сбоев. После разработки Riva TNT компания nVidia вошла в так называемый OpenGL клуб. Название точно не скажу, но туда принимают тех разработчиков, кто создаёт OpenGL хард и софт. Стоит ли после этого говорить о качественной поддержке OpenGL? Riva TNT могла быть использована не только для игр, но и для работы в OpenGL приложениях, таких как 3D Studio MAX.iva TNT, несомненно, стала лидером гонки 3-го поколения 3D акселераторов. Но одна особенность не давала спокойно спать многим пользователям, купившим себе Riva TNT. Дело в том, что заявленные первоначально характеристики Riva TNT были выше, чем у тех карт, которые продавались. Например, первоначально Fillrate обещали 250 MTexels/sec. Да и максимальную скорость обработки - 8 MPolys/sec. И памяти - 32 Мегабайта.