Register for your free account! | Forgot your password?

You last visited: Today at 08:58

  • Please register to post and access all features, it's quick, easy and FREE!

Advertisement



[How-TO] DDS Dateien richtig verstehen

Discussion on [How-TO] DDS Dateien richtig verstehen within the Metin2 PServer Guides & Strategies forum part of the Metin2 Private Server category.

Reply
 
Old   #1
 
ebert.tonna's Avatar
 
elite*gold: 50
Join Date: Nov 2009
Posts: 865
Received Thanks: 1,228
[How-TO] DDS Dateien richtig verstehen

Dieser Text ist für alle die gedacht die garkeine Ahnung über DDS Dateien haben.
Bitte Aufmerksam lesen und wem es gefällt kann es verlinken.
Der Aufarbeitung dieses Textes stammt nicht von mir alle Quellen wurden unten abgegeben.

Original Quelle:





=====DirectDrawSurfaces=====

**Direct Draw Surfaces** ist ein von Microsoft entwickeltes Grafikformat entwickelt fur Echtzeit-3D-Anwendungen und implementiert in DirectX. Es ermöglicht gute Kompression von Texturdaten, Speicherung von Mipmaps, Volumentexturen und viele weitere Features. Es erfuhr sehr große Akzeptanz und hat heute eine sehr weite Verbreitung.

====Hintergrund====

Lange Zeit wurde in Spielen BMP\- und TGA-Dateien zum Speichern von Texturen benutzt. Die Formate waren gut dokumentiert und haben sich schon viele Jahre bewehrt und wurden gut unterstützt. Für die spezielle Anwendung in der Echtzeitgrafik hatten sie jedoch einige Nachteile.

In beiden Formaten lagen die Bilddaten unkomprimiert vor, was zu hohen Dateigrößen führte. Mit steigenden Texturgrößen steigerte sich auch die Dateigröße exponentiell. TGA bot zumindest verlustfreie Lauflangen-Kodierung, die aber bei Oberflächentexturen wenig effizient ist.
Daraus resultierte ebenfalls der Nachteil steigender Ladezeiten für die Texturen.

Damit verbunden war ebenfalls die Berechnung von Mipmaps. Mipmaps sind Größenvarianten der Originaltextur, die in größeren Entfernungen dargestellt werden, wenn nicht mehr die gleiche Detailauflösung auf einer Textur benötigt wird. Diese Mipmaps wurden lange Zeit beim Laden der Textur automatisch vom Spiel erstellt, was ebenfalls eine Verzögerung des Ladeprozesses verursachte.

Um diesen Nachteilen entgegen zu arbeiten stellte Microsoft als Teil seines Multimedia-Frameworks DirectX das Grafikformat "DirectDraw Surfaces" (DDS) vor. DDS wurde erstmals 1999 in DirectX 7 eingesetzt. Ein Jahr später wurde das Format in DirectX 8 um die Unterstützung von Volume-Textures erweitert.

Neu an DirectDrawSurfaces war die native Unterstützung der verlustbehafteten S3TC-Kompression, die fest im Format vorgesehen ist, auf die aber auch verzichtet werden kann. Die Kompression ermöglicht eine Reduktion der Dateigröße auf bis zu 25%.

Dem Problem der Mipmap-Generierung wurde entgegnet, indem die Berechnung der Mipmaps vom Ladevorgang der Textur in das Speichern der Textur verschoben wurde. Die Mipmaps wurden im Dateiformat selbst abgelegt, durch die Kompression war der Speicherplatz verlust maginal. Die Anwendung konnte diese berechneten Mipmaps benutzen und musste keine eigenen mehr berechnen.

Diese Vorteile sorgten für eine gute Verbreitung und DDS wurde bis 2005 quasi das Standardtexturformat im Echtzeit-3D-Bereich.

====Dateistruktur====

Die Struktur der DDS-Datei ist in der Spezifikation von Microsoft festgelegt und wird auch mit wenigen Ausnahmen eingehalten.
* Magic-value
* Header (Formatspezifikation)
* Main surface data (Byte-array)
* Attached surface data (array von Byte-arrays)

Die Datei beginnt mit einem Magic-Value, der bereits das Format der vorliegenden Daten bestimmt. Ob komprimiert (und wenn ja wie komprimiert) oder unkomprimiert.

Der Header enthält Metadaten über die Datei. Darunter sind Standards wie Höhe, Breite, Pixelformat, aber auch spezielle Angaben wie die Tiefe der Datei (bei Volumentexturen) und die Anzahl von MipMaps. Das Pixelformat enthält verschiedene Angaben über die Kanalmasken, ob Komprimierung verwendet wird und welche Farbtiefe die Farbkanäle haben. Das Format unterstützt bis zu 32bit pro Kanal, was jedoch nicht von jedem Programm, dass DDS-Dateien lesen oder schreiben kann unterstützt wird.

Je nach Texturtyp (2D-Textur, Cube-Texture oder Volumentextur) liegen die Texturdaten unterschiedlich in der Datei. Bei einer 2D-Textur kommt zunächst die Haupttextur als byte-Array und anschließend absteigend die Mipmaps bis zur Mipmap-Größe 1x1.
Bei Cube-Texturen kommt zunächst die erste von acht Seitenflächen, darauf hin deren MipMaps, anschließend die nächste Seitenfläche mit MipMaps und so weiter.
Bei Volumentexturen kommen zunächst die Hauptexturen, danach die Mipmaps jeder MipMap-Stufe.

====Kompression====

Die Pixeldaten können in DDS-Files auf verschiedene Art und Weisen kodiert werden. Zu unterscheiden sind unkomprimierte und komprimierte Verfahren.

Unkomprimiert liegen die Daten als volle Pixelwerte vor. Diese können unterschiedlich kodiert sein. Zum Beispiel A8R8G8B8, was einem normalen 8bit-je-Kanal Pixel mit 8bit-Alpha-Kanal entspricht. A1R8G8B8 ist fur 24bit Farbe mit nur 1bit Alpha. A1R5G6B5 ist fur 16bit Farbe.

Neben der unkomprimierten Kodierung ist es möglich die Pixeldaten kodiert in der Datei abzulegen. Dabei ist vom Dateiformat der S3TC-Komprimierungsalgorithmus vorgesehen. Im Zusammenhang mit DirectDrawSurfaces spricht man oft auch vom DXT-Komprimierungsverfahren.

Der S3-Texture-Compression-Algorithmus wurde von S3D Graphics speziell fur die Anwendung im 3D-Bereich entwickelt. Der Algorithmus wurde für die Anwendung in Hardwarekomponenten optimiert. S3TC-Komprimierte Texturdaten brauchen dadurch nicht von der Software dekomprimiert, sondern können performance-sparend in der Hardware verarbeitet werden. Im Video-RAM der Grafikkarten werden die dekomprimierten Texturdaten in Reinform abgelegt und von der Anwendung verwendet. S3TC ist ein verlustbehafteter Kompressionsalgorithmus. Eine 32bit-ARGB-Bitmapgrafik kann auf 4:1 ihrer Originalgröße verringert werden. Vom Algorithmus spezifiziert ist lediglich die Dekompression, was es ermöglicht Entwicklern eine effiziente Wege der Komprimierung zu beschreiten. So gibt es von S3D, von nVidia und Ati eigene Implementationen der Codecs, die sich in ihrer Kompressionsperformance und Qualitat unterscheiden.

Vom S3TC-Verfahren gibt es mehrere Codecs. Die Codecs unterscheiden sich in der Art und Weise wie die Pixel komprimiert werden und werden je nach gewünschten Zweck eingesetzt. Es gibt fünf Codecs: DXT1, DXT2, DXT3, DXT4 und DXT5.
DXT1, DXT3 und DXT 5 komprimieren die Farbkanäle in Blöcken von 64bit (DXT1) oder 128bit (DXT3 und DXT5).
Dagegen DXT2 und DXT4 verrechnen den Alpha-Wert mit den Pixelwerten(premultiplied). Diese Codecs finden seltener praktische Anwendung.
Die meiste Verbreitung haben DXT1 und DXT5. DXT1 eignet sich besonders für Texturen, die eigentlich keinen oder nur einen weißen Alpha-Kanal benötigen. DXT5 speichert Texturen mit vollem 8bit Alpha, ist dadurch etwas größer in der Dateigröße.

====Anwendung====

DirectDrawSurfaces haben sich im 3D-Sektor, speziell bei der Spieleproduktion sehr weit verbreitet. Das Texturformat bietet ein flexibles Speicherformat, das durch ein gutes Kompressionsverfahren auch bei hohen Texturdimensionen kompakte Dateigrößen und eine performante Verarbeitung ermöglicht.

Durch das Speichern von Mipmaps wird ermöglicht Berechnungen aus der 3D-Software in den Textur-Exporter zu verlagern. Das Programm hat damit nicht mehr die Aufgabe während der Laufzeit Mipmaps zu erstellen, weil dies bereits während des Exports der Textur erfolgt.

Durch die Möglichkeit auch Volumendaten (z.B Cubemaps) zu speichern wird die Notwendigkeit mit verschiedenen Texturdateien oder Sprites zu arbeiten. Die Art der Nutzung der Textur wird somit gleich im Format definiert und kann optimiert werden.

Letztlich ist auch eine gewisse Zukunftssicherheit gewährleistet. Durch die Möglichkeit auch höhere Farbtiefen als 8bit pro Kanal einzusetzen ist das Format auch bereit fur zukünftige Anwendungen, die feine Farb-Abstufungen erfordern.

====Implementationen==== ===DirectX - DxTool===

Entwickelt von Microsoft bieten das DirectX SDK eine Beispielimplementation des DDS-Formats. Die Quellen liegen zum Teil offen und können weiterbenutzt werden. Ebenfalls ist ein Beispielprogramm Namens DxTool beigelegt wo das Laden und Speichern von DDS-Dateien getestet werden kann. Für die S3TC-Kompression wird eine DLL-Bibliothek mitgeliefert.


===nVidia DDS Tools===

Im Spielesektor sehr beliebt sind die DDS-Tools von des Grafikprozessorherstellers nVidia. Dieses Texture Development Kit beinhaltet verschiedene Plugins fur Photoshop und Windows, die die Vorschau und Veränderung von DDS-Dateien vereinfachen. Für Photoshop bietet es die Möglichkeit DDS-Texturen einzulesen und wieder zu Komprimieren. nVidia bietet dabei ein weites Feld an Einstellungsmöglichkeiten und schöpft in Verbindung mit den Möglichkeiten von Photoshop das DDS-Format voll aus. So zum Beispiel beim Umgang mit DDS-Files mit 32bit pro Farbkanal. Auch Features wie Cubemaps und Mipmap-Generierung wurden implementiert.

===Squish===

Im DirectX-SDK gibt es fur das DDS-Format eine C+\+ Wrapperklasse, die das Funktionsspektrum des Formats abbildet und die es möglich macht DDS in eigene Projekte anzuwenden. Unabhangig von der Formatspezifikation ist jedoch das Kompressionsverfahren S3TC. Um also DDS-Dateien nicht nur einzulesen, sondern auch als Bitmap wiedergeben zu können müssen die komprimierten Daten dekodiert werden. Open Source-Implementationen für diesen Zweck sind eher selten anzufinden. Die Bekannteste ist "Squish", eine C+\+ \-Bibliothek von Simon Brown, die das S3TC de\- und enkodieren ubernimmt.

===JSquish===

Will man für Java Programme zur DDS-Manipulation schreiben steht man vor größeren Problemen. Zwar gibt es ebenfalls Wrapperklassen fur das Format, jedoch sind S3TC-Kompressionsimplementationen weitaus schwerer zu finden. Jsquish ist die einzige Implementation, eine Übertragung von Squish nach Java. Entwickelt wurde JSquish als kleine Library im JavaGaming-Forum und ist daher bis heute relativ unbekannt.

====Quellen====

DDS File reference by MSDN|

Wikipedia (International): DirectDraw Surface|DirectDraw Surface - Wikipedia, the free encyclopedia
Wikipedia (Deutschland): Direct Draw Surface|DirectDraw Surface

Wikipedia (International): S3TC|S3 Texture Compression - Wikipedia, the free encyclopedia
Wikipedia (Deutschland): S3TC|S3 Texture Compression


Squish by Simon Brown|
DDSImage-Class im JOGL|
Jsquish Compression Library|

Lesewert:





ebert.tonna is offline  
Thanks
19 Users
Old 05/12/2012, 07:15   #2
 
elite*gold: 0
Join Date: Jun 2011
Posts: 124
Received Thanks: 18
Hört sich Interresant an, danke
hipfl1234 is offline  
Old 05/12/2012, 10:26   #3
 
elite*gold: 5
Join Date: Oct 2010
Posts: 1,692
Received Thanks: 1,772
Hat leider nichts mit Metin2 zutun.
Sicherlich wirst du sagen Metin2 benutzt .dds Datein allerdings hat dein tut nichts direktes mit Metin2 zutun.
DasKuchen is offline  
Old 05/12/2012, 10:53   #4
 
Anohros's Avatar
 
elite*gold: 0
Join Date: Dec 2008
Posts: 288
Received Thanks: 1,170
morgen,

ja gut kopiert .

Du könntest wenigstens die Quelle angegeben dann wäre es ok, aber so geht es ja mal gar nicht.

Die Zusammenfassung vom Autor Dahie ist sicherlich interessant und bietet einige informative Aspekte, die meisten werden damit aber nicht wirklich was anfangen können.

mfg.
Anohros
Anohros is offline  
Thanks
2 Users
Old 05/12/2012, 11:45   #5
 
ebert.tonna's Avatar
 
elite*gold: 50
Join Date: Nov 2009
Posts: 865
Received Thanks: 1,228
Stimmt Anohros habs oben mit vermerkt, dieser Text hat sehr weitreichende Folgen für Metin2 und betrifft leider jeden der seinen Clienten modden will.

Ben (Pheeno) hat dazu mal einen interessanten Text geschrieben der globale Auswirkungen auf Windows 7 und den aktuellen Metin2 Clienten hat.
Es geht dabei um Header Informationen der DSS Dateien und wie Windows 7 sie verarbeitet bzw. ausliest. Die Pack Dateien sind das Problem.
Ich denke TIM könnte mit neuen Packern für die epk,s das Problem beheben.

Quote:
der Dateiheader wird bei win 7 und win xp ganz anders ausgelesen das wäre schonmal der erste Unterschied

windows xp liest in 8 schritten eine datei aus und win7 in 16 schritten wobei jegliche schritte gleich sind win7 jedoch jeden schritt einmal nach kontrolliert

und was ganz bemerkenswert mal wäre zu erwähnen ....
win7 ist nicht für platzsparende komprimierte und gepresste datein entwickelt wurden
win7 ist ausgelegt für großflächige datein die einfahc gelesen und verarbeitet werden können es wurde damit gerechnet vom hersteller das dieses betriebsystem, auf eine rplatte von wenigstens 250GB läuft bei laptops!
Der klassische Fehler in jedem Fehler 2010 Clienten ist der "abnormal Program termination". Der weitere Fehler ist der "GRANNY: r:/granny/rt/granny_memory.cpp(142): Unable to allocate 465183 bytes (465148 requested by r:/granny/rt/granny_oodle1_compression.cpp:246)"

Dieser steht in direkten Zusammenhang mit dem Fehler "CreateDDSTexture: Cannot creatre texture".
Ich bezweifel das jemand den jemand den Zusammenhang erkennen wird da ich schon mehrfach diese Frage hier im Forum gestellt habe und nur durch Zufall auf die Lösung gestossen bin.

<< keine Antwort warum nur ^^

<< auch keine Antwort

Diese beiden Themen zeigen mir wie wenig die User eigendlich davon verstehen.
Ich habe dieses Thema gestern erst wieder mit BULL diskudiert und auch ihm ist klar geworden das Metin2 nun an seine Grenzen stösst und alle Releases eingeschlossen meine alle diese Fehler enthalten, selbst Mester hat diese Grenzen erkannt.
Fraglich ist nur ob überhaupt jemand diesen Text versteht und die folgen für zukünftige Veränderungen im Clienten.
Vor längerer Zeit hat der Padmak mal gesagt das der TIM an einer neuen Kompression für DSS Dateien arbeitet, somit ist TIM wieder mal allen (mich eingeschlossen) weit vorraus.
Das was im Moment an veränderten Clienten auf dem Markt ist wird sich nicht sonderlich weiter verbessern, den der Fehler wird sich so einfach nicht beheben lassen.
Wie gesagt der Fehler tritt auch nicht auf wenn ihr nur alleine auf dem Server seit, der kommt erst wenn über 100 Leute spielen. Deswegen ist es auch so noch nicht aufgefallen.
ebert.tonna is offline  
Thanks
6 Users
Old 05/12/2012, 12:31   #6
 
xF4ke :þ's Avatar
 
elite*gold: 0
Join Date: Dec 2009
Posts: 1,273
Received Thanks: 1,268
danke, hab das mit den fehlern bzw das mit der kompression was du da grad erklärt hast nicht verstanden, hast trotzdem ein thx
xF4ke :þ is offline  
Old 05/12/2012, 12:36   #7

 
Ocelot2606's Avatar
 
elite*gold: 0
Join Date: Oct 2009
Posts: 4,086
Received Thanks: 3,786
Könnten dadurch auch die Runtime Error ausgelöst werden?

PHP Code:
0411 17:53:33546 :: CInstanceBase::PushTCPState Ç÷¹À̾î Àڽſ¡°Ô À̵¿ÆÐŶÀº ¿À¸é ¾ÈµÈ´Ù!
0411 17:54:51266 :: CMapOutdoor::Load LoadMonsterAreaInfo ERROR
0411 17
:55:53022 :: ELTimer_GetMSec() - m_dwEmoticonTime 
Ocelot2606 is offline  
Thanks
1 User
Old 05/21/2012, 17:49   #8
 
■Light■'s Avatar
 
elite*gold: 0
Join Date: Jan 2012
Posts: 39
Received Thanks: 8
nein
■Light■ is offline  
Thanks
1 User
Old 05/21/2012, 17:52   #9
 
elite*gold: 0
Join Date: Apr 2012
Posts: 74
Received Thanks: 23
Vielen Dank für die Mühe ist wirklich sehr interressant!
[SA]Mentras is offline  
Thanks
1 User
Old 05/21/2012, 18:06   #10
 
.M3nTal0™'s Avatar
 
elite*gold: 30
Join Date: Jan 2010
Posts: 922
Received Thanks: 210
Ich winds ziemlich unnötig und es ist ein ganz einfaches Grafikformat, man muss die Geschichte, herkunft, etc. einer Datei nicht wissen, ansonsten mach ich gleich ein Thread über .txt-Datein, .py-Datein und was es sonst so im Client gibt.
.M3nTal0™ is offline  
Old 05/22/2012, 11:14   #11
 
elite*gold: 5575
The Black Market: 120/0/0
Join Date: Apr 2011
Posts: 5,569
Received Thanks: 581
sehr gut erklärt. Danke
FbFunnY is offline  
Old 01/17/2013, 16:32   #12
 
elite*gold: 0
Join Date: Jan 2009
Posts: 815
Received Thanks: 199
DDS

ja ganz nett das Thema mit DDS Dateien und Win7 ...

aber was heißt das nun in der Praxis?

Win 7 will große Strukturen... ! heißt das nun das man die DDS datein am besten mit ner größe von 1024 x 1024 speichern soll die dann ca 1,3 MB aufweisen.... der Client dadurch ca 2GB groß ist

oder:

heißt das im Rückschluss das je mehr DDS Files wir durch 100e neue Waffen, Rüstungen etc. einbauen das wir zuviel DDS Dateien haben und
der Client soviel nicht verarbeiten kann und abstürzt.

oder:

wir alle DDS Dateien möglichst klein halten sollen 256x256 das die nur noch geschätzte 65KB verbrauchen somit ca. 150MB einsparen und der Client dadurch stabiler läuft ?

was willst du uns mit der Info mit Win 7 etc. schlussendlich sagen ?
troll1981 is offline  
Old 07/24/2014, 13:55   #13
 
Shine_Walker's Avatar
 
elite*gold: 0
Join Date: Dec 2009
Posts: 103
Received Thanks: 36
Es fehlt nur, dass wie man es richtig einstellt, dass die Rüsungen die man bearbeitet hat InGame nicht so diesen Chrome Effekt haben, man muss ja irgendwie die Alpha Kanäle auswählen aber beim speichern der .dds gibt es soviele Optionen. Wär cool wenn jemand ein Screen von den richtigen Einstellungen posten könnte und NEIN der Wert von 0- 100 in der Itemproto ist richtig es geht nur um das abspeichern der Rüstung.
Danke im Vorraus
Shine_Walker is offline  
Old 07/24/2014, 21:08   #14
Trade Restricted
 
elite*gold: 9
Join Date: Jul 2014
Posts: 818
Received Thanks: 677
Morgen folgt meine historische Ergänzung zum Dateiformat ".jpg" sowie ".txt"
grαyfox is offline  
Reply


Similar Threads Similar Threads
.bat-Dateien für verschiedene nutzen richtig (!) erstellen.
10/16/2010 - Metin2 Guides & Templates - 9 Replies
Schönen guten Tag. Da ich bereits unzählige Threads über das erstellen bzw. umgehen des Patchers etc.etc.etc gelesen habe,also will ich hier mal etwas klar stellen : dies bezieht sich jetzt auf die meisten Win7-User, die durch das ändern der Endung .txt in .bat eines Texdokumentes kein Ergebnis erzielen konnten. Wozu das gut ist ? Nunja , viele können nicht den SkillDmgHackverwenden, weil der Ordner gepatcht wird. Dieses kleine TuT hilft darüberhinaus , .bat-dateien für andere...
[TuT].gr2 dateien richtig exportieren!!!
05/21/2010 - Metin2 Guides & Templates - 15 Replies
So da ich jetzt endlich rausgefunden hab wie man die Dateien richtig Exportiert mach ich nun ein Tutorial dazu für die wo es auch noch nich rausgefunden haben. ;) Also als erstes Modeliert ihr eure waffe, zb ihr macht ein Cylinder als Griff und eine Box als Hammer oder sonst was bsp: Imageshack - form1r.jpg dann markiert ihr zuerst eine Mesh und convertiert sie zu editable Mesh (rechtsklick -> Convert to -> editable Mesh) das macht ihr jetzt bei beiden Formen. dann markiert ihr...
[HILFE]FileZilla dateien richtig hochladen
03/24/2010 - Metin2 Private Server - 4 Replies
Wie es der Titel schon sagt: ich will wissen wie man wenn man z.B den Willkommenstext ändert den in FileZilla hochladet und das dann nicht mehr der alte text kommt sondern der neue... Bis jezt kam bei mir immer wieder der alte.. BITTE HELFT MIR



All times are GMT +1. The time now is 08:59.


Powered by vBulletin®
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
SEO by vBSEO ©2011, Crawlability, Inc.
This site is protected by reCAPTCHA and the Google Privacy Policy and Terms of Service apply.

Support | Contact Us | FAQ | Advertising | Privacy Policy | Terms of Service | Abuse
Copyright ©2025 elitepvpers All Rights Reserved.