#1 19.07.2011 10:00:08

Peter-Pascal
Member
Registriert: 26.02.2007
Beiträge: 63

DDS-Format

Hallo,

ich experimentiere gerade mit Texturen und lade JPEG, dann lese ich dass Microsoft dafür das DDS-Format entwickelt hat. Mit DX Tex Tool kann man es umwandeln, aber hat danach keinen Zugriff mehr auf das Image.

Ist es sinnvoll in DDS umzuwandeln?

Gruß Peter


Heute ist nicht alle Tage – ich komm wieder, keine Frage

Offline

 

#2 19.07.2011 13:22:51

Coolcat
ProGuru
Ort: Aachen, NRW
Registriert: 24.01.2005
Beiträge: 2780
Web-Seite

Re: DDS-Format

DDS ist ein Format um DXT-komprimierte Texturdaten zu speichern. Das DXT/S3TC-Verfahren hat im Gegensatz zu JPG eine feste Kompressionsrate bei variabler Qualität. Bei normalen RGB-Daten liegt die Kompression bei exakt 1:6 gegenüber dem unkomprimierten Bild. Die Qualität kann beliebig schlecht sein, im Normalfall ist sie gefühlt etwas schlechter als JPG mit 90%. Der Grund warum man diese eigentlich ziemlich schlechte Kompression benutzt ist der das nicht das komplette Bild entpackt werden muss um einen einzelnen Pixel zu lesen. Es reicht einen 4x4 Pixel Block zu betrachten. Vorteil: Das Dekompressionsverfahren ist extrem simpel und ist allen Grafikkarten der letzten Generationen in Hardware implementiert.
=> Es passen 6mal so viele Texturen in den Grafikspeichers und das bei nur geringfügig langsameren Zugriffszeiten.
=> http://en.wikipedia.org/wiki/S3_Texture_Compression

Das Kompressionsverfahren ist sehr aufwendig. Auf der CPU kann es durchaus mehrere Minuten dauern eine große Textur zu komprimieren! Es ist sinnvoll hier ein Tool mit GPU-Unterstützung zu benutzen. Z.B. Nvidia Texture Tools benutzt CUDA und löst die Aufgabe daher in Sekunden. Es gibt verschiedene Algorithmen, diese liefern jeweils unterschiedliche Bildqualität. Nvidia bietet eine normale und eine "fast"-Kompression.

Wichtig: Es gibt ein Software-Patent auf DXT-Komprimierung! Für die Nutzung von DXT-Kompressionssoftware fallen daher Patentgebühren an, zumindest solange der Softwarehersteller diese Gebühren nicht bereits bezahlt hat. Im Falle der Nvidia Texture Tools hat Nvidia die Gebühren bezahlt...das Tool ist daher kostenlos. Aber Vorsicht bei eigenen Implementierungen...


My software never has bugs. It just develops random features.

Offline

 

#3 19.07.2011 13:48:08

Peter-Pascal
Member
Registriert: 26.02.2007
Beiträge: 63

Re: DDS-Format

Kann es Probleme geben, wenn ich die Texturen vom Jpeg nach DDS mit dem MS Tool DX Tex umwandel?

Leuchtet mit ein was Du schreibst, also beim Entwickeln mit Jpeg, das Bild könnte sich ändern, bzw. das man sieht was geladen wird und das fertige Produkt dann mit DDS-Format.

Wenn die Texturen auf der Harddisk offen liegen auch im DDS-Format, kann die offensichtlich auch jeder sehen. Wie kann ich vermeiden, dass andere die Texturen von der Platte lesen können? Wird eine Ressorcen - Datei nicht zu groß bei vielen Texturen?


Heute ist nicht alle Tage – ich komm wieder, keine Frage

Offline

 

#4 20.07.2011 20:53:07

Coolcat
ProGuru
Ort: Aachen, NRW
Registriert: 24.01.2005
Beiträge: 2780
Web-Seite

Re: DDS-Format

Zitat:

Kann es Probleme geben, wenn ich die Texturen vom Jpeg nach DDS mit dem MS Tool DX Tex umwandel?

Wenn du ein JPEG-Bild nimmst hat dieses natürlich Kompressions-Artefakte von JPEG. DDS fügt nochmal eigene Artefakte hinzu, insbesondere die Anzahl der Farben wird reduziert. Am Ende hast du also JPEG und DDS-Artefakte! Verwende also nach Möglichkeit irgendwas verlustfreies als Ausgangsformat, z.B. PNG.

Zitat:

Wie kann ich vermeiden, dass andere die Texturen von der Platte lesen können?

Da deine Anwendung die Daten lesen können muss kannst du das kaum verhindern. Du kannst es aber natürlich zumindest erschweren. Du könntest etwa dein eigenes Bildformat verwenden, etwa ein eigener Container der alle Texturen (als DDS) enthält. Z.B. einfach am Anfang der Datei immer Dateiname/Begin/Größe für jede enthaltene Textur speichern. Dann muss man sich zumindest schon mal länger damit beschäftigten. Um es schwerer zu machen könntest du eine einfache XOR-"Verschlüsselung" bauen. Einfach jedes Byte bit-weise XOR 42 nehmen. Wenn du nochmal XOR 42 machst bekommst du wieder Klartext. Eine richtige Verschlüsselung (AES, Blowfish, oder so) ist natürlich besser, nutzt aber auch nur begrenzt viel da du schließlich irgendwo den Schlüssel dafür speichern musst. Wenn du den eigenen Quellcode nicht herausrückst hast du aber gute Chancen das niemand Lust hat deinen Code durch einen Disassembler zu jagen nur um an den Schlüssel für deine Texturen zu kommen.

Zitat:

Wird eine Ressorcen - Datei nicht zu groß bei vielen Texturen?

Du kannst die Texturen mit in die EXE compilieren, aber es gibt Tools um sie da wieder raus zu lesen...das nutzt nichts.


My software never has bugs. It just develops random features.

Offline

 

#5 21.07.2011 11:17:35

Peter-Pascal
Member
Registriert: 26.02.2007
Beiträge: 63

Re: DDS-Format

Danke Coolcat für die umfangreiche Antwort.

Statt png wird bmp auch gehen, oder? Ich kenne png offengestanden garnicht (hat das Vorteile) und weiß nicht, wieviele Programme dies lesen können oder speichern. Ich habe zum Erstellen von Texturen ua Corel Painter 11.

Die Texturen vor fremden Zugriffen zu schützen ist offensichtlich nicht so ganz einfach. Da habe ich immer die Speicherung in einer Datenbank bevorzugt. Nur nicht alle DB können Blobs und bei Paradox ist bei 2 GB Ende, habe ich jetzt gelesen. WEiß jemand, ob das immer noch so ist?

Gruß Peter


Heute ist nicht alle Tage – ich komm wieder, keine Frage

Offline

 

#6 23.07.2011 10:46:28

Lotipats
UltraMember
Registriert: 17.05.2005
Beiträge: 395

Re: DDS-Format

[quote=Peter-Pascal]Statt png wird bmp auch gehen, oder? Ich kenne png offengestanden garnicht (hat das Vorteile) und weiß nicht, wieviele Programme dies lesen können oder speichern. Ich habe zum Erstellen von Texturen ua Corel Painter 11.

PNG - http://de.wikipedia.org/wiki/Portable_Network_Graphics - speichert die Bilder i.d.R. verlustfrei ab. Während BMP i.d.R. die Bilder unkomprimiert lässt, werden sie bei PNG komprimiert gespeichert. Ein Bild nimmt in PNG daher weniger Speicherplatz weg als BMP.
Von den Bits pro Farbkanal nehmen sich beide nichts, i.d.R. verwenden beide bis zu 8 Bit pro Farbkanal. Bei PNG wird jedoch oft auch Transparenz verwendet, was bei BMP i.d.R. nicht der Fall ist, genau wie bei JPEG. Die Transparenz in PNG-Bilder wird auch von quasi jedem Programm umgesetzt. Bei Internet Explorer 6 war dies noch nicht der Fall, da musste man tricksen. Bei Version 7, welche immerhin im Jahre 2006 heraus kam, also vor fast 5 Jahren(!), war die Transparenz allerdings kein Problem mehr.
Zusammenfassend ist also zu sagen, dass PNG gegenüber BMP verschiedene Vorteile hat, aber quasi keine Nachteile.

Anmerkung wegen der vielen "i.d.R.": Beide Formate haben versch. Parameter, können also ganz unterschiedlich aussehen. Ich habe hier aufgeführt, was meiner Meinung nach "Standard" ist, also sehr oft verwendet wird. Aber beispielsweise kann BMP auch die Bilder komprimieren und einen Alpha-Wert pro Bit haben. Dies wird allerdings nur selten verwendet, meines Wissens nach ist dies sogar nur selten implementiert, so dass nur wenige Programme damit umgehen können.


[quote=Peter-Pascal]Die Texturen vor fremden Zugriffen zu schützen ist offensichtlich nicht so ganz einfach. Da habe ich immer die Speicherung in einer Datenbank bevorzugt.

Wieso denkst du, dass Datenbanken vor fremden Zugriff schützen?

Offline

 

#7 23.07.2011 14:20:05

Peter-Pascal
Member
Registriert: 26.02.2007
Beiträge: 63

Re: DDS-Format

Erstmal Danke Lotipats für Deine Antwort, PNG hört sich gut an. Mit Transparenz meinst Du den Alpha-Wert? Dann wäre schon mal ein weiteres Problem gelöst, wie ich den Alpha-Wert in das DDS-Format bekomme. Übernimmt es doch?

Zitat:

Wieso denkst du, dass Datenbanken vor fremden Zugriff schützen?

Wenn du mich so direkt fragst, ....

Zumindest erschwert es (wie es hier auch schon mal hieß), aber ob es sinnvoll ist, ...

Weiß jemand, wie es die Spieleprogrammierer machen?

Gruß Peter


Heute ist nicht alle Tage – ich komm wieder, keine Frage

Offline

 

#8 23.07.2011 19:45:24

Gnietschow
ProMember
Ort: Berlin
Registriert: 20.06.2007
Beiträge: 237

Re: DDS-Format

Zitat:

Weiß jemand, wie es die Spieleprogrammierer machen?

Bei den älteren Spielen liegen meist die ganzen Dateien frei in irgendwelche Ordnern. Je weiter man in der Zeit geht, desto mehr versuchten die Entwickler ihre Dateien zu packen oder verschlüsseln. Aber ich kenn meist nur die Fälle, dass es dadurch erschwert wurde, aber verhindern konnten sie es meist nicht. Zum Beispiel hatte Warcraft 2, Sims 1,2 und Age of Empires 3 riesige gepackte (vll auch geschützte) Dateien, wo sie alles hineingetan haben. Aber im Internet kursierten ganz schnell Entpackprogramme, womit man an die Daten rankam. Vor allem bei Spielen, wo es umfangreiche Editoren gibt wird es immer schwieriger die Dateien zu verstecken, da sie ja im Editor verfügbar sind.

Manche Hersteller verstecken die Dateien auch ganz bewusst nicht, damit die Community Mods basteln kann, wo es z.B. höher aufgelöste Texturen oder detailliertere Modell gibt.

Wenn es um Dateien geht die im Spielablauf wichtig sind muss man sie vor Veränderung schützen (z.B. mit MD5-Summen), aber alles zu verstecken ist denke mal ähnlich zu Kopierschützen. Es wird eigentlich fast alles geknackt und je ausgefeilter es ist, umso aufmerksamer werden die richtigen Profis und der User muss leiden (wie bei den Online-Kopierschützen, wo die Server down waren und somit niemand mit dem Original spielen konnte).

Daher denke ich ein einfacher Schutz gegen Laien, wie z.B. Coolcat mit den zusammengepackten Dateien meinte, ist gut, aber man sollte nicht übertreiben. Zum Beispiel eine komplexe Verschlüsselung mag zwar die Dateien schützen, aber dafür dauert das Laden auch länger, da es ja erst entschlüsselt werden muss. Und lange Ladezeiten mag keiner gern smile

Beitrag geändert von Gnietschow (23.07.2011 19:45:46)


Es gibt 10 Gruppen von Menschen - die die das Binärsystem verstehen und die anderen.  :-)
Vegetarier essen meinem Essen das Essen weg ;)
-------------------------------------------------------------------------------------------------------------------
Der Community-Hub für Videospiele: gameloop.io

Offline

 

#9 24.07.2011 11:16:07

Peter-Pascal
Member
Registriert: 26.02.2007
Beiträge: 63

Re: DDS-Format

Hey Gnietschow,

das klingt einleuchtend. Wie so oft liegt die Wahrheit in der Mitte, bzw. der praktikable Weg ein Mittelding zwischen Effizienz und Verstecken. Beides in Reinkultur ode gar zusammen ist selten zu erreichen.

Ich schreibe auch viel geschäftliche Programme und habe mir immer Gedanken darüber gemacht, wie ich das Programm vor dem Nutzer schütze, dh. vor versehentlichem Löchen oder kopieren wichtiger Daten. Letztendlich ist der Nutzer dafür selber verantwortlich. Auch eine Datenbank schützt nicht vor ungeschicktem oder fahrlässigem oder gar grob fahrlässigen Umgang.

Vielen Dank
Gruß Peter
Ps.: auch wenn ich euer Programm noch nicht spielen kann, gefällt mir die Graphik und die Animation


Heute ist nicht alle Tage – ich komm wieder, keine Frage

Offline

 

#10 10.04.2012 18:08:59

DerPeer
GodlikeMember
Ort: Berlin
Registriert: 04.02.2005
Beiträge: 1291

Re: DDS-Format

Ich dachte, das passt hier so halbwegs rein:

Kennt jemand ein Tool, womit man Volumentexturen (DDS) bearbeiten kann? Bis jetzt muss ich alles selbst schreiben und das nervt so langsam.

DerPeer

Offline

 

#11 10.04.2012 19:19:48

Gnietschow
ProMember
Ort: Berlin
Registriert: 20.06.2007
Beiträge: 237

Re: DDS-Format

Es gibt nen Photoshop Plugin von Nvidia, da gibts auch ne Option Volume Texture. Aber ob und wie es funktioniert hab ich noch nicht ausprobiert.

MfGnietschow


Es gibt 10 Gruppen von Menschen - die die das Binärsystem verstehen und die anderen.  :-)
Vegetarier essen meinem Essen das Essen weg ;)
-------------------------------------------------------------------------------------------------------------------
Der Community-Hub für Videospiele: gameloop.io

Offline

 

#12 11.04.2012 21:25:48

DerPeer
GodlikeMember
Ort: Berlin
Registriert: 04.02.2005
Beiträge: 1291

Re: DDS-Format

Hm nja, hab kein Photoshop. Aber Paint Shop Pro hab ich, und ich hatte gelesen, dass man auch dafür das Plugin zum Laufen kriegen kann.
Obwohl Paint Shop Pro ja SO schon instabil ist - da trau ich mich gar nicht, eine Volumentextur zu laden :-)

DerPeer

Offline

 

#13 11.04.2012 22:16:16

Gnietschow
ProMember
Ort: Berlin
Registriert: 20.06.2007
Beiträge: 237

Re: DDS-Format

Du könntest dir ein Programm schreiben, was die Volumentextur in ihre Slices aufteilt, dann in deinem Programm bearbeiten und dann wieder zusammenpfriemeln. Das wär aber sowas von aufwändig. Was möchtest du denn gern bearbeiten bei deiner Volumentextur? Stell mir es allgemein schwierig vor 3D-Texture per Hand zu editieren.

MfGnietschow


Es gibt 10 Gruppen von Menschen - die die das Binärsystem verstehen und die anderen.  :-)
Vegetarier essen meinem Essen das Essen weg ;)
-------------------------------------------------------------------------------------------------------------------
Der Community-Hub für Videospiele: gameloop.io

Offline

 

#14 12.04.2012 09:49:28

DerPeer
GodlikeMember
Ort: Berlin
Registriert: 04.02.2005
Beiträge: 1291

Re: DDS-Format

Na zum Beispiel musste ich neulich meine Volumentextur glätten (Tiefpass mit Gaussfilter). Oder ich benötige Helligkeits/Kontraständerungen. Klar, kann man alles selbst programmieren, ist aber halt aufwändiger.

DerPeer

Offline

 

Brett Fußzeile

Powered by PunBB
© Copyright 2002–2005 Rickard Andersson