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

Как вы делали стримминг текстур без sparse ?

Страницы: 1 2 3 4 Следующая »
#0
9:48, 6 янв 2026

Какие ваши варианты ?

#1
14:12, 6 янв 2026

В одной из 100500 итераций разработки с нуля своего вдижка/игры делал через sparse binding/residency. Сейчас я решил, что у меня будет камера сверху вниз с ограничением приближения и отдаления. Поэтому мне будет достаточно текстур разрешением до 2к с блочной компрессией, которые можно загружать сразу полностью.

#2
14:45, 6 янв 2026

Допустим, что нету спарсе :)

#3
14:53, 6 янв 2026

innuendo
> Допустим, что нету спарсе :)
Создаешь новую текстуру в 2 раза больше старой. Копируешь в нее содержимое старой. Догружаешь недостающее. Удаляешь старую. =)

#4
15:09, 6 янв 2026

nullptr
Гениально :)

#5
15:12, 6 янв 2026

innuendo
> nullptr
> Гениально :)
Обращайся :)
Сам то как делал? Не томи.

#6
15:17, 6 янв 2026

nullptr
На каждую логическую две физические...
Дальше подожду :)

#7
15:23, 6 янв 2026

innuendo
> nullptr
> На каждую логическую две физические...
То же самое по сути.

#8
15:29, 6 янв 2026

nullptr
Разница есть очень даже ... Но лучше про потоки

#9
17:35, 6 янв 2026

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

ЗЫ. А действительно? Во вселенной звездных войн упоминается расса Йоды? Я его всегда гремлином считал...

#10
(Правка: 18:09) 18:04, 6 янв 2026

mingw
Забавно, только пару часов читал про Йоду;)
Лучше про потоки  давай :(

#11
19:58, 7 янв 2026

nullptr
> Копируешь в нее содержимое старой. Догружаешь недостающее. Удаляешь страрую.
А загрузка с диска асинхронная? Или синхронно в другом потоке? Или просто синхронно в render thread? Интересует про простои при загрузке.

#12
22:39, 7 янв 2026

Andrey
> nullptr
> > Копируешь в нее содержимое старой. Догружаешь недостающее. Удаляешь страрую.
> А загрузка с диска асинхронная? Или синхронно в другом потоке? Или просто синхронно в render thread? Интересует про простои при загрузке.
Ну, я бы в основном рендер потоке создавал (брал из пула) текстуру и заливал ее тем, что уже и так есть в памяти. А недостающие мипы грузил бы в staging буфер в другом потоке. Потом дозаливал бы опять же в основном потоке. Пока грузится с диска юзаешь старую текстуру. Какие тут простои?

#13
0:04, 8 янв 2026

Предположим, текстуры организованы в индексируемый в GLSL массив.
Основной потребитель id текстур - материалы - доступный в шейдере SSBO.
Можно устроить жонглирование id текстур в материалах, выгружая-загружая их. Нужно заморочиться синхронизацией, чтобы не было глюков с неатомарным доступом посреди выгрузки-загрузки, ну либо будут видны кратковременные глитчи.

#14
0:09, 8 янв 2026

Если спарсинга не "нет", а с ним не хочется возиться, реализуя полноценную страничную организацию, то можно сильно упростить реализацию.
Атомарной единицей является миплевел, а не страница в 64к.
Выгружать-загружать миплевелы намного менее громоздко, чем высчитывать текущую видимость куска текстуры в терминах страниц, и делая своп индивидуальным страницам.
Загрубляем гранулярность, упрощаем реализацию, немного теряем в эффективности.
Улучшаем гранулярность, усложняем реализацию, достигаем максимально возможного совершенства по использованию памяти.

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