IPB

Добро пожаловать, гость ( Вход | Регистрация )

> .DDS DirectX 10, converter/viewer
-=CHE@TER=-
Nov 1 2008, 19:50
Сообщение #1


Walter Sullivan
***

Группа: Root Admin
Сообщений: 1,353
Регистрация: 4-February 08
Пользователь №: 3
Спасибо сказали: 311 раз(а)



Недалее как вчера пришло письмо с жалобой, на то что 3DMark2005 / 3DMark2006 unpacker криво распаковывает некоторые .DDS файлы из 3DMarkVista: Vantage. Оказывается он распаковывает нормально, просто у большинства .DDS файлов теперь формат DX10 и что-то, типа BCU4 (или типа того, не помню - удалил уже, снова распаковывать сейчас лень, однако, если кому-то понадобятся "образцы" - могу сделать).
Скачал последнюю версию XnView, InfraView и даже какую-то прогу из раздела SDK с сайта nVIDIA - ни одно из этих средств справиться с новым форматом не смогло.

Внимание вопрос: кто-нибудь знает софт умеющий работать с этим, новым, форматом .DDS?
User is offlineProfile CardPM
Go to the top of the page
+Quote Post
 
Reply to this topicStart new topic
Ответов
Axsis
Sep 24 2016, 15:39
Сообщение #2


Advanced Member
***

Группа: CTPAX-X
Сообщений: 121
Регистрация: 6-February 08
Пользователь №: 374
Спасибо сказали: 149 раз(а)



Я тогда написал bms для конвертирования в обычный DDS "обычных" текстур, который работал примерно на 90 процентах текстур которые мне попадались.
Под "обычными" я подразумеваю RGBA, DXT1, DXT3, DXT5 текстуры. Это основные форматы, а вообще их там довольно много бывает, и не у всех есть аналоги в DX9, то есть не любую текстуру DX10 можно сконвертировать в DX9

dx10_to_dds.bms
CODE
IDString "DDS "
GoTo 0x54
GetDString FOURCC 4
If FOURCC == "DX10"
Append
Log MEMORY_FILE 0 0x80
Get DATA_SIZE asize
Math DATA_SIZE -= 0x94
Log MEMORY_FILE 0x94 DATA_SIZE
Math DATA_SIZE += 0x80
Append
GoTo 0x80
Get DXGI_FORMAT long
If DXGI_FORMAT == 0x1D
  Set FOURCC long 0x00000000 #RGBA
  PutVarChr MEMORY_FILE 0x50 0x00000041 long
  PutVarChr MEMORY_FILE 0x58 0x00000020 long
  PutVarChr MEMORY_FILE 0x5C 0x000000FF long
  PutVarChr MEMORY_FILE 0x60 0x0000FF00 long
  PutVarChr MEMORY_FILE 0x64 0x00FF0000 long
  PutVarChr MEMORY_FILE 0x68 0xFF000000 long
ElseIf DXGI_FORMAT == 0x48
  Set FOURCC long 0x31545844 #DXT1
ElseIf DXGI_FORMAT == 0x4B
  Set FOURCC long 0x33545844 #DXT3
ElseIf DXGI_FORMAT == 0x4E
  Set FOURCC long 0x35545844 #DXT5
Else
  Print "Unknown DXGI_FORMAT (%DXGI_FORMAT%)"
  CleanExit
EndIf
PutVarChr MEMORY_FILE 0x54 FOURCC long
Get FNAME basename
String FNAME += ".dx9.dds"
Log FNAME 0 DATA_SIZE MEMORY_FILE
Else
Print "Not a DirectX 10 DDS file"
EndIf


dx10_to_dds.cmd
CODE
for /r %%I in (*.dds) do "quickbms.exe" dx10_to_dds.bms %%I %%~dpI >>dx10_to_dds.log


Спасибо сказали:
User is offlineProfile CardPM
Go to the top of the page
+Quote Post

Сообщения в этой теме


Reply to this topicStart new topic
2 чел. читают эту тему (гостей: 2, скрытых пользователей: 0)
Пользователей: 0 -

 



Упрощённая версия Сейчас: 28th March 2024 - 18:39