Войти
ПрограммированиеФорумГрафика

Megatexture (3 стр)

Advanced: Тема повышенной сложности или важная.

Страницы: 1 2 3 4 534 Следующая »
#30
17:00, 1 ноя. 2007

28 пост апдейт...


#31
17:03, 1 ноя. 2007

Executor
по моему автор правильно сделал что не использовал DXT сжатие, иначе трудно было бы резать текстуру на несколько кусков-файлов и опять пережимать их заново... проще сразу в препроцессинге создавать кучу текстур в DXT сжатом виде из одного исходного файла.

craft
Кстати, очень заметно тормозит при заливке текстур в видеопамять, заведи дополнительный поток для их загрузки...

#32
17:05, 1 ноя. 2007

Nikola Tesla
>по моему автор правильно сделал что не использовал DXT сжатие, иначе трудно
>было бы резать текстуру на несколько кусков-файлов и опять пережимать их
>заново...

Пережимать? Не понял тебя...
Сейчас у него куча файлов в tga формате, а то было бы в формате в котором всё лежит в видеопамяти...

craft
Как ты определяешь момент когда надо переключить лоды? Вижу камерой можно летать до определённого момента, потом переступая какуюто грань лоды меняются... Как это определяется?

#33
17:08, 1 ноя. 2007

Executor
Про статью весьма интересно. Что для этого нужно?

Чтобы обеспечить быструю подгрузку, нужно поместить все файлы, что у меня сейчас лежат в textures/mega-8192 в один файл, тогда можно будет открыть его только один раз на старте и потом грузить нужные участки, которые могут быть посжаты кстати. Тут большое поле деятельности для оптимизации.

Лоды меняются по такому алгоритмы: вогрук камеры есть некий радиус для лода 0, радиус в два раза больше - это для лода 1 и т.д. Вот какие куски цепляет радиус, те и оказываются в данном лоде.

Nikola Tesla
Рывки из-за неоптимального механизма подгрузки с диска, а не из-за проблем с закачкой в видео память.

#34
17:10, 1 ноя. 2007

craft
>Про статью весьма интересно. Что для этого нужно?

http://www.gamedev.ru/articles/authors.shtml

#35
17:11, 1 ноя. 2007

Executor
Да, статья на русском языке по Megatexture нужна...
>Пережимать? Не понял тебя...
вот если бы был 1 большой dds в DXT формате а не 1 тарга, как тогда ее разбить на части... в случае с таргой это сделать намного проще... и вобще, проще заранее иметь кучу уже подготовленных dds-ок...

#36
17:15, 1 ноя. 2007

craft
ясно, а что мешает делать подгрузку в отдельном потоке?

#37
17:15, 1 ноя. 2007

Executor
т.к. размер кусков имеет некое дискретное значение, 128 в данном случае, то небольшое движение камеры может не привести на перегенерации лода, это как математическое округление:

0.1 округлится в ноль и 0.2 тоже и т.д., а вот 0.5 округлится уже в 1

Nikola Tesla
подгрузка это большое поле деятельности для оптимизации, полностью согласен

#38
17:18, 1 ноя. 2007

Nikola Tesla
>вот если бы был 1 большой dds в DXT формате а не 1 тарга, как тогда ее разбить
>на части... в случае с таргой это сделать намного проще... и вобще, проще
>заранее иметь кучу уже подготовленных dds-ок...

Я говорю про сжатый не первоначальный большой файл, а про кучу мелких... Ведь загрузка будет проще... Чтото вроде: (можно тут оптимизировать грузя в структуру, но это не важно, суть главное)

Stream.Read(TexWidth, SizeOf(Integer));
Stream.Read(TexHeight, SizeOf(Integer));
Stream.Read(TexInternalFormat, SizeOf(Integer));
Stream.Read(TexImageSize, SizeOf(Integer));
GetMem(P, TexImageSize);
Stream.Read(P^, TexImageSize);
glGenTextures(1, @TexID);
glBindTexture(GL_TEXTURE_2D, TexID);
glCompressedTexImage2D(GL_TEXTURE_2D, 0, TexInternalFormat, TexWidth, TexHeight, 0, TexImageSize, P);
glBindTexture(GL_TEXTURE_2D, 0);
FreeMem(P);

Думаю код загрузки tga приводить ненужно, он намного больше, при этом в несжатом виде, а потом будешь загружать в видеопамять и видеокарта ещё будет тратить время на сжатие и так при каждой загрузке...

#39
17:21, 1 ноя. 2007

во время компиляции прога должна что-нить рисовать?

#40
17:23, 1 ноя. 2007

VileDog(ck.UA)
>во время компиляции прога должна что-нить рисовать?

Если я верно понял автора, то компиляция это просто разбивка текстуры на сектора и лоды, не более того... Такую процедуру можно сделать руками в фотошопе например...

#41
17:25, 1 ноя. 2007

Executor
Да, только нужно учесть, что сам по себе кусок - это только часть финальной текстуры, которая уходит в GPU, т.е. при загрузке куска не создается текстура.

VileDog(ck.UA)
Нет не должна, она создает файлы в textures/mega-8192, их появление говорит и шелест диска говорит о нормальной компиляции. Если не компилит, значит исходный формат не верен, например tga посжат.

Executor
Да, ты понял правильно, можно сделать и самому, только наверное это долго (там 5461 файл) да и сохранить нужно все в определенном формате :) несжатый tga 24 бит.

#42
17:30, 1 ноя. 2007

Executor
согласен на счет мелких - они д.б. в DXT формате и заранее предрассчитаны...

#43
17:33, 1 ноя. 2007

craft
>Да, только нужно учесть, что сам по себе кусок - это только часть финальной
>текстуры, которая уходит в GPU, т.е. при загрузке куска не создается текстура.

Чтото не догнал... Можно поподробнее? Загрузил я изображение определённого сектора, и текстура не создаётся? А старые текстуры не выгружаются? А как тогда?

>можно сделать и самому, только наверное это долго (там 5461 файл) да и
>сохранить нужно все в определенном формате :) несжатый tga 24 бит

Я резал скриптом Фотошоповским и лоды также делал... :) Я растровую карту города делал подобным образом, правда там было 2Д вид сверху и не было плавного зума, а просто переключение между лодами, файлы были в гифах и всё рисовалось без хардварной аксереации... Не думал, что это некая мегатекстура у меня была... :)))

#44
17:38, 1 ноя. 2007

Executor
>Чтото не догнал... Можно поподробнее? Загрузил я изображение определённого сектора, и текстура не создаётся? А старые текстуры не
>выгружаются? А как тогда?
Видимо на место старых текстурных данны пишутся новые... в этом вроде и преимущество техники.

Страницы: 1 2 3 4 534 Следующая »
ПрограммированиеФорумГрафика

Тема в архиве.