Мегатекстури - как става?

Всичко свързано с Microsoft DirectX. Въпроси относно HLSL.
Потребителски аватар
Hivoyer
Sometimes here
Sometimes here
Мнения: 39
Регистриран на: 24 яну 2012 01:22

Мегатекстури - как става?

Мнение от Hivoyer » 09 мар 2013 11:21

Става въпрос за това:

До колкото знам на първия pass рисува само UV координатите върху render target с 1/10 от реалната резолюция, връща я на CPU-то, анализира я и според UV координатите разбира за кой модел коя текстура с кой LoD да земе и от твърдия диск чете от някаква огромна текстура(май може и по 100 гигабайта текстури да се ползва).Схванах рендерирането, но input/output частта и mapping-а нямам никаква идея как става.Как разбира точно кой модел как от компресираната мегатексутра с точния LoD да я извади.Също така някой има ли идея как става самото зареждане.В смисъл, дори и на отделен thread да е, пак е ограничено от скоростта на твърдия диск.А този на клипа от километри върти камерата и няма никакъв texture popping.Докато примерно дори и да заредя един малък 512x512 DDS и на отделна нишка на свободно CPU ядро да е, пак ми засича за няколко стотни.Не мога да си представя как го правят в real-time и за множество обекти на екрана да им стриймват нон-стоп. :o

EDIT: има малко размазване в началото на клипа под ъгъл, ама това според мен е от липса на filtering, ама иначе мегатекстурите ми работят супер добре.

Потребителски аватар
themean
Power User
Power User
Мнения: 855
Регистриран на: 02 дек 2010 22:51

Re: Мегатекстури - как става?

Мнение от themean » 09 мар 2013 14:19

Братле тва е супер кораво. Мислиш ли, че е реалистично да се ползва за игри ??
Все пак в това демо сцената не е много натоварена.

Потребителски аватар
Hivoyer
Sometimes here
Sometimes here
Мнения: 39
Регистриран на: 24 яну 2012 01:22

Re: Мегатекстури - как става?

Мнение от Hivoyer » 09 мар 2013 14:48

Ползват го в Rage:
Изображение
Ама Id Software поддържат и конзолите, затова им се наложи ултра да ги компресират и на PC версията правеше проблеми с декомпресията.

Потребителски аватар
themean
Power User
Power User
Мнения: 855
Регистриран на: 02 дек 2010 22:51

Re: Мегатекстури - как става?

Мнение от themean » 10 мар 2013 15:51

:o :o :o
Просто изглежда невероятно :)

Потребителски аватар
haho
Power User
Power User
Мнения: 999
Регистриран на: 07 дек 2003 21:52
Местоположение: България
Контакти:

Re: Мегатекстури - как става?

Мнение от haho » 11 мар 2013 12:08

В новите ATI-та > 7xxx има и хардуерен съпорт за това. Хардуера ти казва за всеки Draw какъв мин/макс LOD на текстурата ти трябва и ако му разрешиш може да си я тегли от системната памет във видео паметта.

SuryIIID
Power User
Power User
Мнения: 431
Регистриран на: 01 яну 2004 21:03
Местоположение: София
Контакти:

Re: Мегатекстури - как става?

Мнение от SuryIIID » 11 апр 2013 22:20

Hivoyer написа:Схванах рендерирането, но input/output частта и mapping-а нямам никаква идея как става.Как разбира точно кой модел как от компресираната мегатексутра с точния LoD да я извади.
Доколкото съм наясно, прави следното :
Unwrap-ваш сцената и получаваш всеки вертекс с уникална двойка текстурни координати, както обикновено се пристъпва с някакъв обект преди да бъде текстуриран във Фотошоп да речем. Получената текстура съдържа unwrap-ната карта на света. Правиш я детайлна и огромна, колкото трябва, разделяш я на тайлове и генерираш мип нивата. Рендираш сцената със специален пиксел шейдър, който в зависимост от UV координатите на изобразените пиксели и разстоянието им до камерата намира кои тайлове от мегатексурата трябва да се заредят в паметта и от какво мип ниво. Така може да се рендерира цял (статичен) свят с много материали само с един draw call, но динамични обекти също могат да се поддържат, понеже те да речем ще си имат свое кътче в мегатекстурата и по време на първия пас, ще изобразят своите уникални текстурни координати.

Потребителски аватар
Hivoyer
Sometimes here
Sometimes here
Мнения: 39
Регистриран на: 24 яну 2012 01:22

Re: Мегатекстури - как става?

Мнение от Hivoyer » 15 апр 2013 09:50

А ъпдействането на текстурата става с Map/Unmap нали?

Потребителски аватар
KosSiO
Power User
Power User
Мнения: 316
Регистриран на: 20 окт 2008 19:29
Местоположение: Targovishte,Sofia

Re: Мегатекстури - как става?

Мнение от KosSiO » 15 апр 2013 20:03

Hivoyer написа:А ъпдействането на текстурата става с Map/Unmap нали?
със map можеш само да промениш съдържанието на буфера, не може да променяш размера.(кво значение има всъщност технологията!?). Също така не е добра играя да държиш текстура в dynamic buffer.
Не. Освобождаваш('кешираш и тнт') старата, и качваш нова.

Отговори

Кой е на линия

Потребители, разглеждащи този форум: Няма регистрирани потребители и 1 гост