Jump to content

Reverse enigneering Textures using Raw Texture Cooker


Recommended Posts

  • Members
Posted (edited)

Today I am gonna show you how to reverse engineer any texture using Raw Texture Cooker, this process is by far the easiest and requires almost zero effort and just poor clicks and a little bit of inspection. (Uncompressed and Un-encrypted textures obviously).

 

+==== TUTORIAL SECTION ====+

=| INTRODUCTION |=
But how do those textures store their data?
Well, aside from properly skipping the header and parsing the width and the height values from here there is one extra step in here.
Because unlike the traditional images, textures are often scale in sizes ranging from 128x128 to 4096x4096 on average so all of them  as you can see aredividale by 2 and even 4.
Because of this difference textures relly and get a very special compression methods: DXT1, DXT3, DXT5, BC6, BC7.

=| TEXTURE COMPRESSION |=
Like any other Block Compression method (BC),
The size of each compressed block is fixed, it's eighter 8 or 16 byts, representing a 4:1 or 8:1 compression ratio if the source image is in 8 bit RGBA format
DXT1:
Splits the image into tiny 4x4 pixel blocks
Compression stores exactly two colours, 16 bits each
Two in beetween colours can be interpolated from these
The 4x4 block is recreated using only these 4 colours, requiring 2 bits per pixel
In total, block uses 64 bits: 16 pixels * 2 colours * 16 bits per colour


    Type Of Data                    Data Rate    Palette Size            Line Segments         Use For
BC1    RGB + optional 1-bit alpha    0.5 byte/px    4                    1                 Color maps, Cutout color maps (1-bit alpha), Normal maps, if memory is tight
BC2    RGB + 4-bit alpha            1 byte/px    4                    1                 n/a
BC3    RGBA                            1 byte/px    4 color + 8 alpha    1 color + 1 alpha    Color maps with full alpha, Packing color and mono maps together
BC4    Grayscale                    0.5 byte/px    8                    1                 Height maps, Gloss maps, Font atlases, Any grayscale image
BC5    2 × grayscale                    1 byte/px    8 per channel            1 per channel         Tangent-space normal maps
BC6    RGB, floating-point            1 byte/px    8–16                    1–2                 HDR images
BC7    RGB or RGBA                    1 byte/px    4–16                    1–3                 High-quality color maps, Color maps with full alpha

Edited by user3678

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...