Буквально вчера, после очередной утечки, которую очевидно устроил лично Фил Спенсер, Microsoft официально анонсировали младшую некстген-консоль Xbox Series S под лозунгом "Next-gen performance in the smallest Xbox ever". С ценником в 26 990₽.
Звучит заманчиво, а где подвох? Официальная цена на старшую версию составляет 45 590₽. Разница в 18 600 деревянных достигается за счет удешевления железа. В младшей коробке не будет привода для дисков, SSD 512GB вместо 1TB, меньше памяти и, самое главное, GPU в три раза слабее чем в XSX.
Интереснее всего, что производительность GPU в Xbox Series S 4 терафлопс против 6-ти в текущем флагмане от Microsoft - Xbox One X. Что же это получается? Next-gen который слабее текущего поколения? Обман?
Не совсем. Сейчас разберемся.
Как нарисовать прямоугольник?
Давайте для начала разберемся в производительности GPU. Не буду сильно углубляться в графический конвейер (хоть и хотел бы) тут я все сильно упрощу.
Любая геометрия, прежде чем отобразиться на экране, проходит несколько этапов, из важных: вершинный шейдер, растеризатор, пиксельный шейдер. Шейдер это маленький скрипт, а что в нем?
Вершинный шейдер (Vertex shader, VS)
На этом этапе геометрия (Mesh) проходит несколько трансформаций и проецируется на "экран". Каждая вершина - это вектор, умножая его на три матрицы (world, view и projection) можно расположить его в координатах экрана.
Первая, world, позиционирует объект в мире. Изначально вся геометрия расположена относительно центра мировых координат. Если наш объект имеет масштаб x2 повернут на 45 градусов относительно оси Y и сдвинут на 10 чего то там по оси X, нам нужно умножить каждый вектор вершин на 2, помножить на матрицу поворота и сдвинуть. Так мы расположим объект в мире. Далее, аналогично, мы позиционируем вершины относительно камеры и располагаем их в 2D координатах экрана, умножив на матрицу проекции.
Не зависимо от разрешения, в котором ты рисуем геометрию, вершинный шейдер обрабатывает одинаковое количество вершин
Растеризатор (Rasterizer, RS)
На этом этапе векторная геометрия преобразуется в растровую, каждый занимаемый мешем пиксель на экране получает информацию о положении в мире, нормали и т.д. и т.п. Потом это все передается в пиксельный шейдер.
Пиксельный шейдер (Pixel Shader, PS)
Он же фрагментный. Вот тут происходит рисование каждого пикселя в текстуру, которая потом выводится на экран или повторно обрабатывается другими шейдерами. Этот шейдер, пожалуй, самый важный - он определяет как все будет выглядеть, включая постпроцессинг и различные эффекты.
Главное, что скрипт PS выполняется столько раз, сколько пикселей на экране. Предположим, что мы рисуем прямоугольник во весь экран. Это 6 вершин, а значит VS будет отрабатывать 6 раз не зависимо от разрешения. А вот пиксельный шейдер...
Для 1080p - это 1080x1920 = 2073600 выполнений, а для 4к он же - 2160p будет уже 8294400, в 4 раза больше.
Получается, что для отрисовки одной и той же сцены, на этапе PixelShader, в 4К требуется, соответственно, в 4 раза больше мощностей, чем при FullHD.
Тут-то все и становится на свои места. Как мы помним Xbox One X позиционировался как True 4k console, а не Full HD. Xbox Series X в два раза мощнее чем Xbox One X при работе в 2160p, а Xbox Series S (кто-нибудь покажите майкам как пользоваться цифрами) нацелен на работу в 1080p. В этом разрешении приставка сможет рисовать сцену с таким же FPS с которым XSX будет рисовать ее в 4k (плюс минус). Вот и все.
Что в итоге? Некстген?
Однозначно. Младшая приставка, как и старшая, нафарширована крутыми технологиями: кастомный NVME SSD, аппаратный декомпрессор, трассировка лучей, Xbox Velocity Architecture, обратная совместимость и всем, что есть в XSX. При этом, кто-то ведь играет на обычном FullHD мониторе и ему не нужны эти ваши 4k.