Таки я узнал что такое Megatexture.
На одном буржуинском сайте сказано, что на самом деле это когда на объекты сцены накладываются разные текстуры как обычно. Но в процессе игры все эти текстуры кэшируются в одну огромную текстуру, что позволяет избежать переключения состояний и улучшить кэш попадания. И Кармак не первый кто использовал такой прием. Однако квейк-гуру решил запихать все это дело в огромнейшую текстуру. Ну пожать соответственно. Разжимать видимо будет шейдер. Потому и выходит такое большое разрешение.
Spartan
Это - ж Texture Atlas. Только сжатие шейдером - это действительно ново.
Spartan
это уже уже похоже на технологию, я про шейдер, который будет разжимать..
ну значится поживем увидим..)
vap
точно, а если это еще совместить с чем-то типа вейвлет-преобразований (по качеству распаковки) то вообще будет красота
Spartan
> На одном буржуинском сайте сказано, что на самом деле это когда на объекты
> сцены накладываются разные текстуры как обычно. Но в процессе игры все эти
> текстуры кэшируются в одну огромную текстуру, что позволяет избежать
> переключения состояний и улучшить кэш попадания.
Это только догадка, причем судя по всему неправильная.
Из всех прочих источников видно что мегатекстура накладывается только на ландшафт.
Так же из них слышно что при отрисовке в памяти сам размер текстурного блока будет занимать только 8 мег.
Можете себе представить чтобы все текстуры сцены уложились в 8 мег? =) Я что то слабо в это верю.
Предположение -=AG=- мне кажется наиболее вроятным.
Меня больше волнуют ТТХ такого подхода при заявленных характеристиках.
Допустим что мегатекстура будет иметь обозначенный размер 32k на 32k пикселей.
В несжатом RGB (24bit) формате это будет занимать на диске 3Гб.
Предположим что её некисло пожмут чем то навроде JPEG (примерно десятикратное сжатие при допустимом качестве).
Это образует где то 300Мб пожатой уже мегатекстуры! И это только для того чтобы покрыть ландшафт!
20 уровней с разными ландшафтами => 6 гиг одних только мегатекстур.
Ну да ладно, винт большой, он всё простит. Но не будет ли диких подкачек по мере разгуливания по уровню?
С этим взаимосвязан другой вопрос: интересно прикинуть насколько всё таки большими будут эти самые открытые пространства. Пусть допустим виртуальный рост игрока 2м. На земле, мне кажется текстура должна иметь где то пикселей 50 как минимум на таком протяжении, чтобы создать что то приличное, радующее глаз. 25 пикселей на метр дает где то 1200 метров вдоль и поперек у карты. В принципе нормально.
I it have read through all ...
=A=L=X=
Только одна текстура 32к на 32к будет занимать 3 Гига!! А нормали? А прочие карты для современных техник шейдинга?
Пожать JPEGом. Нет таких видеокарт, которые работают с JPEG. Где взять видеокарту с таким количеством памяти? Остается только разжимать текстуру "на лету" - даешь рывки в изображении и тормоза общие!
Еще скажи как мгновенно считать 8 мегабайт текстуры, чтобы не было видимого рывка. А ведь такие подгрузки будут постоянно.
>Еще скажи как мгновенно считать 8 мегабайт текстуры
4 всего
и необязятельно моментально
Spartan
Если не в курсе - JPEG жмет блоками по 8x8 пикселей. Время на разжатие блока - фиксированное (т.к. основное время жрет обратный DCT), так что никаких рывков.
P.S. А это мысль - написать JPEG-декодер с использованием шейдеров :)
Opx
Выкинь эту мысль! Я так понимаю, целочисленными данными там не обойтись, а дробные значения в шейдере вроде как накладывают ограничение на версию оных (не уверен, поправьте). И вообще, такая гама не будет работать на еще строевых картах типа радиков ниже 9500 (мне-то щас уже пофигу, но за людей обидно). Или будешь делать два варианта, в одном анпак на камне, в другом на шейдере? Но на камне такая мега-пупер-текстурка распакуется в те самые 4 гига, и толку от неё немного... в общем, давайте что-нить попроще. А то скоро будете игровую логику на шейдерах писать, изврасченцы праативные! =))
ShTiRLiC
Вообще-то часть распаковки все равно на проце придется делать (я слабо себе представляю, как на шейдере эффективно сделать хаффмановское декодирование), насчет тормозов - ну это понятно, что желательно видюху не ниже FX6600. И вообще, это шутка была :)
Я думал что идеал - несколько текстур по 4096х4096, а не одна под 2 гига видюхи...
Тут такие требования должны быть:
Проц любой
4096ГБ ОЗУ
2ГБ видеокарты
Или как-то вот так...
Имею я, братие, сказать вам пренеприятнейшее известие.
Как правило, левел имеет топологию, несовместимую с топологией 2Д-плоскости. (Простейший вариант - внутреннее пространство куба, имеет топологию, аналогичную поверхности сферы). В связи с этим, развёртку уровня на текстуру не получится сделать без разрывов, в более общем случае - без искажений, а в ещё более общем случае - ещё и без того, чтобы на текстуре не осталось неиспользуемого места (которое, при таких масштабах, может приключиться весьма значительным).
Поэтому идея о том, чтобы обтянуть весь левел одной текстурой, чем избавиться от швов и достигнуть уникальности в каждой точке, изначально порочна, прожективна, спекулятивна и математически сомнительна.
Плачьте, товарищи! %)
>Простейший вариант - внутреннее пространство куба
речь идет об открытых пространствах, ибо нет смысла парится с такой текстурой в закрытых - там тайлинг не особо глаз режет ибо логичен - выложенный кафелем пол например везде выглядит одинаково, каких то отличий можно добиться декалями.
>Поэтому идея о том, чтобы обтянуть весь левел одной текстурой, чем избавиться от швов и достигнуть уникальности в каждой точке, изначально порочна, >прожективна, спекулятивна и математически сомнительна.
т.е.?
этим вовсю пользуются уже давно. на геометрию ландшафта кладут одну квадратную текстуру, практически полностью используюмую по пространству. единственная проблема - нельзя делать очень большие уровни, в виду того что нельзя увеличить размер текстуры более разумных пределов 2048-4096 (которые бы умещались в памяти видеокарточки и не жрали бы слишком много места там), если увеличивать уровень без увеличения текстуры - детализация страдает - растягивается.
Альтернатива - это тайлинговая система текстурирования ландшафта. Когда текстуры рисуются тайлами с альфо-блендингом. (в 2Д были специальные наборы тайлсеты) - у такой системы есть проблема - ТАЙЛЫ. Они заметны и режут глаз, хотя детализация высокая, но она часто повторяется.
Вот тут то Кармак и выходит на сцену со своей технологией.
Одна детализированная и в каждой точке уникальная текстура, большого разрешения И без загрузки ее целиком в память.
Тема в архиве.