[info]SWBF MSH Forensics

Started by tirpider, February 17, 2013, 03:26:33 PM

Previous topic - Next topic
February 17, 2013, 03:26:33 PM Last Edit: February 17, 2013, 04:39:25 PM by tirpider
[info]SWBF MSH Forensics


Here is a fun one.  I'm revising the code for the SWBF_MSH_INFO tool and have developed a method of selectively or recursivly editing or scanning all files in a directory and sub-directories.  This thread will contain the results of scanning the collective assets for SWBF and SWBF2. As a bonus, I will also be looking into the "The Clone Wars" assets, as they share the same MSH format with different conventions.

The intent behind releasing this information is promote research on this format.  A lot has been done already, but there are still big gaps in information. I can only uncover one piece at a time and hope that if anyone else is exploring it, that this info will help.

Other reports may follow. If you have an idea of what may be usefull, let me know.


SWBF MSH Materials
This first report(in the zip attached to the end of this post) is simply a list of every material used in every msh that shipped with the mod tools distributions for BF1 and 2.

I intend to use this information to identify render type indexes and further requirements for those render types.  I though it might come in handy for others that may be researching these materials.

The report is an OpenOffice spreadsheet, and I will be happy to export it to a cvs, or html file if needed, though I recomend keeping it in spereadsheet format so the columns and rows can be manipulated for analysis.

Each row is a full material.
Every material in every msh is listed, even the animations, so there is a ton of irrelevant and redundant data. It's all included for completeness.

The columns are:
[spoiler]
filename                 - the name of the file containing the material
NAME                     - the materials name as it appears in the MSH

-material colors-
-I may have the specular and ambient swapped. Only way to know is to test.
-the color values are derived by multiplying the floating point in the
-msh by 255.

diffuse_red              - the red component of the diffuse color
diffuse_blue             - the blue component of the diffuse color
diffuse_green            - the green component of the diffuse color
unk_1                    - used to think this was diffuse alpha, but it's
                           either "1" or "107374176", so an BF2 has some
                           diferent values more suited to actually be alpha,
                           so I don't know.
specular_red             - the red component of the specular color
specular_blue            - the blue component of the specular color
specular_green           - the green component of the specular color
unk_2                    - this may be specular alpha, but have not found out
                           for sure.
ambient_red              - the red component of the ambient color
ambient_blue             - the blue component of the ambient color
ambient_green            - the green component of the ambient color
unk_3                    - this may be ambient alpha, but have not found out
                           for sure.
specular_decay           - specular decay value

-render flags-
-These are encoded into the first byte of the ATRB field. simply having a value
-in this column indicate that it's flag is set.

Emissive                 -
Glow                     -
Singlesided Transparency -
Doublesided Transparency -
Hardedged Transparency   -
Per-Pixel Lighting       -
Additive Transparency    -
Specular                 -

-render type-
-this is what I am currently trying to figure out. The indexes are diferent
-from BF1 to BF2.

Render Type              - Method used to render the material indicated by an index.
data1                    - the data fields contain extra information as required
data2                    - by the render type

-textures-
-Not every material has a texture.

TX0D                     - primary, 'diffuse' texture
TX1D                     - special purpose texture
TX2D                     - special purpose texture
TX3D                     - special purpose texture
[/spoiler]

Here is a short sample of data:
[spoiler]
[0]    6519                               NAME             diffuse_red  diffuse_blue  diffuse_green  unk_1      specular_red  specular_blue  specular_green  unk_2  ambient_red  ambient_blue  ambient_green  unk_3  specular_decay Emissive Glow Singlesided Transparency Doublesided Transparency Hardedged Transparency Per-Pixel Lighting Additive Transparency Specular Render Type data1 data2  TX0D                               TX1D  TX2D  TX3D
[1]    wok_1st_weap_inf_bowcaster.msh     Material0        178          178           178                    1  255           255            255             1       76           76            76            1      50                                                                                                                                                      0           0     0      wok_1st_weap_inf_bowcaster.tga
[2]    wok_inf_wookie.msh                 _1Shirt0         178          178           178                    1  255           255            255             1       76           76            76            1      50                                                                                                                                                      0           0     0
[3]    wok_inf_wookie.msh                 _1Shirt1         178          178           178            107374176    0             0              0             1       76           76            76            1      50                                                                                                                                                      0           0     0      wookie.tga
[4]    wok_inf_wookie.msh                 _1Shirt2         178          178           178            107374176    0             0              0             1       76           76            76            1      50                                       Doublesided Transparency                                                                                       0           0     0      wookie.tga
[5]    wok_inf_wookie.msh                 Material0        178          178           178                    1    0             0              0             1      178          178           178            1      50                                                                                                                                                      0           0     0      wookieface02.tga
[6]    wok_inf_wookie_low1.msh            _1Shirt0         178          178           178                    1  255           255            255             1       76           76            76            1      50                                                                                                                                                      0           0     0
[7]    wok_inf_wookie_low1.msh            Material0        178          178           178                    1    0             0              0             1      178          178           178            1      50                                                                                                                                                      0           0     0      wookieface.tga
[8]    wok_inf_wookie_low1.msh            _1Shirt1         178          178           178            107374176  255           255            255             1       76           76            76            1      50                                                                                                                                                      0           0     0      wookie.tga
[9]    wok_weap_inf_bowcaster.msh         Material0        178          178           178                    1  255           255            255             1       76           76            76            1      50                                                                                                                                                      0           0     0      wok_weap_inf_bowcaster.tga
[10]   wok_weap_inf_bowcaster.msh         Material12       178          178           178                    1  255           255            255             1       76           76            76            1      50                                                                                                                                                      0           0     0      all_1st_weap_inf_bowcaster.tga
[11]   wok_weap_inf_bowcaster.msh         _1Shirt0         178          178           178                    1  255           255            255             1       76           76            76            1      50                                                                                                                                                      0           0     0      noIcon.pic
[12]   wok_weap_inf_fusioncutter.msh      Material0        178          178           178                    1  255           255            255             1       76           76            76            1      50                                                                                                                                                      0           0     0      all_weap_inf_fusioncutter.tga
[13]   wok_weap_inf_fusioncutter.msh      Scene_Material0  178          178           178                    1  255           255            255             1       76           76            76            1      50                                                                                                                                                      0           0     0
[14]   wok_weap_inf_launcher.msh          Material0        178          178           178                    1  255           255            255             1       76           76            76            1      50                                                                                                                                                      0           0     0      all_weap_inf_launcher.tga
[15]   wok_weap_inf_pistol.msh            Material0        178          178           178                    1    0             0              0             1       76           76            76            1      50                                                                                                                                                      0           0     0      all_weap_inf_pistol.tga
[16]   wok_weap_inf_pistol.msh            _1Shirt0         178          178           178                    1  255           255            255             1      178          178           178            1      50                                                                                                                                                      0           0     0      noIcon.pic
[17]   wok_weap_inf_thermaldetonator.msh  _1Shirt0         178          178           178                    1  255           255            255             1      178          178           178            1      50                                                                                                                                                      0           0     0      noIcon.pic
[18]   wok_weap_inf_thermaldetonator.msh  Material1        178          178           178                    1    0             0              0             1       76           76            76            1      50             Emissive                                                                                                                                 0           0     0      all_weap_inf_thermaldetonator.tga
[19]   wok_weap_inf_thermaldetonator.msh  Material3        178          178           178                    1    0             0              0             1       76           76            76            1      50             Emissive                                                                                                                                 0           0     0      com_weap_inf_grenadethermal.tga

The columns get a little wonky on the flags part. That's a byproduct of the way OOo saves fixed width files. The spreadsheet and cvs have it more clearly seperated.[/spoiler]



This is all part of further research and some is speculative.  As always, all my work is geared toward SWBF 1 compatability.
If you have insight, speak up and we'll see how the data likes it.

-edit
The report, in excel xls format is attatched to this post, several posts down.

Data on Materials? SWBF1? *DOWNLOADS*. Wait I don't have OpenOffice, *DOWNLOADS THAT AS WELL*.

Quote from: SleepKiller on February 17, 2013, 03:35:08 PM
Data on Materials? SWBF1? *DOWNLOADS*. Wait I don't have OpenOffice, *DOWNLOADS THAT AS WELL*.
heh
OpenOffice a worth-while download. Big, but worth it.

It's just a flat, 3-sheet,  no-formula, no-macro spreadsheet, so I can save it in another format if you like.

Nice, looks like I need to download open office as well.

Could you save it as excel spreadsheet?

Wait OpenOffice is a big download? lol I didn't even notice I just it the download button and waited a couple minutes. I only bothered to look at the size after you said that.

Now onto the lovely data, looking good. But it is incomplete, you know the byte that transparency goes into? It hold. I'm wondering if we could get that's value added in. Here's an example of why I would like it. It's marked as emissive due to the byte 01 in the slot before renderer type.

1650   bes2_bldg_mall.msh   Material15   178   178   178   1   0   0   0   1   76   76   76   1   50   Emissive    0   0   0   bes2_bldg_interior03.tga   

Well that can't be right http://dictionary.reference.com/browse/Emissive?s=t. Have you ever seen the main hallway on cloud city emitting anything? What it does appear to do though is force the material to be render without shadows or ambient light/sun light effecting it. Hence why I am interested in what else can go there in SWBF1.

February 17, 2013, 04:27:19 PM #5 Last Edit: February 17, 2013, 04:53:59 PM by tirpider
Save in Excel format?, You bet.
Excel xls format attatched to the end of this post.

The render flags are wierd.
I interpereted the flags from Ande's table.
[spoiler]The constants I have set up for them are thus:Global Const $cATRB_RENDER_FLAG_none = 0
Global Const $cATRB_RENDER_FLAG_Emissive = 1
Global Const $cATRB_RENDER_FLAG_Glow = 2
Global Const $cATRB_RENDER_FLAG_SinglesidedTransparency = 4
Global Const $cATRB_RENDER_FLAG_DoublesidedTransparency = 8
Global Const $cATRB_RENDER_FLAG_HardedgedTransparency = 16
Global Const $cATRB_RENDER_FLAG_PerPixelLighting = 32
Global Const $cATRB_RENDER_FLAG_AdditiveTransparency = 64
Global Const $cATRB_RENDER_FLAG_Specular = 128


and the ugly code I use to break the byte up:

Local $iFlag = _hex_to_byte(BinaryMid($bData, 1, 1))
If BitAND($iFlag, 1) = 1 Then $aTagData[1] = "Emissive"
If BitAND($iFlag, 2) = 2 Then $aTagData[2] = "Glow"
If BitAND($iFlag, 4) = 4 Then $aTagData[3] = "Singlesided Transparency"
If BitAND($iFlag, 8) = 8 Then $aTagData[4] = "Doublesided Transparency"
If BitAND($iFlag, 16) = 16 Then $aTagData[5] = "Hardedged Transparency"
If BitAND($iFlag, 32) = 32 Then $aTagData[6] = "Per-Pixel Lighting"
If BitAND($iFlag, 64) = 64 Then $aTagData[7] = "Additive Transparency"
If BitAND($iFlag, 128) = 128 Then $aTagData[8] = "Specular"

Yeah, I actually had to write a "hex to byte" function :/
And I'm just now discovering the usefulness of constants, thats why they arent in the "if BitAnd" lines yet.
[/spoiler]

The way that first byte is supposed to work is you add the value of all the desired flags together. The values are aranged so that the value cannot be more than 255.

So, for instance, if both emmisive and glow wer turned on, the value of the first ATRB byte would be 3 (emmissive[1] + glow[2]). 

So the flag is there, but since each mesh has many pieces, there may be a small piece somewhere that has the emissive feature.

Or... (theory power, activate) the dev's made an emmisive part of the model to avoid adding a light?

There is a possibility that the flags for bf2 and bf1 are different, but the sequence of the string appearance in the mod tool exe's is consistant across both games.


Hm this calls for testing. I shall report back later.

February 17, 2013, 04:42:11 PM #7 Last Edit: February 17, 2013, 05:00:13 PM by tirpider
It's worth noting, that even though specular is listed in the flags, most all the models that have specular have the render type 04 and a TX0D with an alpha channel.

So when it comes down to use a flag, or use a render type, I'm flat lost.

-edit
I thought that the render flag might be depreciated, but since transperancy works that can't be.
Perhaps some of the flags themselves are unused by the engine? (yay, more theories..)

And this is why we should not take tables designed for SWBFII into account in SWBF1.

These models are exactly the same save the texture and another important difference. One has the 01 flag the other does not. The one on the left doesn't in the first image and the one on the right does. Then in the second image both of them have the flag. Which now begs the question what other flags does SWBF1 have?

February 17, 2013, 05:53:13 PM #9 Last Edit: February 17, 2013, 05:56:10 PM by tirpider
I agree.
It's worse with the render types as the munger throws "invalid render type" errors on many bf2 types.

The images seem like what emmisive would do.  Sort of brighten it up without casting huge amounts of light. I'm going to guess the emmisive power is controlled by either an alpha channel in the texture and/or the ambient color and the unk_* value after it. (I still think I have ambient and specular switched.)

I suspect the list of types and thier order is accurate. The main argument for this is the presence of this list in the same sequence in the ModelMunge.exe. (It's where I took the names from after consulting Ande's page.)
In order for there to be more flags, there would need to be another byte somewhere to store it.

This calls for even more testing. Adding an Alpha channel resulted in no change. Edited the Ambient Colour in the msh no change. Edited the Diffuse Colour no change. So none of those control it.

February 17, 2013, 07:33:31 PM #11 Last Edit: February 17, 2013, 07:46:42 PM by tirpider
Ok. I'm down with super testing.

We need a baseline msh to test on.  Preferably with only one material to eliminate possible interfering effects.

Then we need to establish a base set of values for each of the fields.

I'd say set all the colors and unk_* fields to zero and go from there.

Of course the render type would need to be set to zero as well as the data1 and data2.

I would replace the texture with a solid white or at least very non detailed image.

Then, the test area.  How about the default map created by selecting "new" in bfbuilder.
That would eliminate crazy lighting and possible bleed over from ambiant or emmisive features in the environment.

The texture may need to be varied through testing as some flags may require the alpha channel... (Alphas in Paint.net always give me siezures.) And I suppose a range of alpha would be needed.  Perhaps if a grey scale of a zebra print could be used as the alpha channel the pattern would illuminate itself so we could see what high, low and mid settings do.

Also, some effects may be easier to see with no texture applied.

Once everything is zeroed (heh.. Zeroed...) then procedure.

Probably best to do this with all video settings on and set to high as low video settings might block some of the effects.

I'd make several copies of the msh, then edit each in different ways. Place them in zero in a recognizable pattern, munge and screenshot away.

Get out of the game, and organize the screenshots, record findings, and move on to the next test.

...
A potential gotcha.. not all video cards are equal.  Some may simply not render the effect, and some may render incorrectly.  I think we've seen this before in maps where certain things show up black.

Ok.. I'm gonna play around with this.  I needed to do the same to line up the list of render types anyway, but this gets a good test arena set up for it.

-edit
I'm going with yav_bldg_column.msh.
It has 3 materials and a bump map, but I will hex the crazy stuff out, only use one material and not use the .option files.
(I've been playing on Yavin temple lately and have a new appreciation for the obelisks.)


February 18, 2013, 06:57:17 PM #12 Last Edit: February 22, 2013, 08:50:44 PM by tirpider
revised tests and method.

Here are my render flag tests. (v2)

There are lots of settings in the msh that can affect how it looks in-game. I'll get to them all eventually, for now, I need to nail down just how much influence the DATA chunk has on the render flag.  After that, I need to identify the order and number of render types, then I'll do a small amount of testing on the extents and properties of those types. Then I'll need to know how the DATA chunk affects the render types. By doing this, I'll know how to make my program handle materials instead of guessing or ignoring the DATA colors, like we've been doing for years.

Previously this spot was occupied by some tests where I was comparing the color values in the msh material's DATA chunk.  I had encoded the color values incorrectly so I'm re-doing the tests with correct values.

Befor getting to the results, I ran a bunch through with the varied colors with the same results as before in that Zero saw the colors, but the game didn't. Perhaps there is more to it, but since this particular battery is about render flags, I'll design the tests to ignore DATA color values for the now.

I also ommited the sets of models with no alpha channel. They weren't doing anything before and I don't expect then to now.

For each test the columns each have identical settings, except for the render flag.
The color settings are all a nice neutral 128,128,128.
All tests are done with a texture that does have an alpha channel.
Any changes will be indicated.



flag_testing_v2_a  baseline
[spoiler]Material Settings:Diffuse Color = 128,128,128
unk_1 = 1
Ambient Color = 128,128,128
unk_2 = 1
Specular Color = 128,128,128
unk_3 = 1
Specular Decay = 50


level - flag_testing_v2_a.rar
src folder - flag_testing_v2_a_src.rar[/spoiler]
notes:
- nothing spectacular. Emissive is emissing, glow isn't doing anything, and specular is very un-specular.
- Shadows don't appear on the surface of the emmisive column. That's interesting. ::)



flag_testing_v2_b  unk_1 field
There are 6 discrete values for unk_1 across all the msh materials. (0.4929999709, 0.5419999957, 0.6159999967, 0.6579999924, 1, and 107374176)
Since 4 of them are simularly small and 1 is already in the baseline, I'll do 2 tests (0.4929999709 and 107374176) against all the flags to see what they do.

flag_testing_v2_b1  unk_1 field = 0.4929999709
[spoiler]Material Settings:Diffuse Color = 128,128,128
unk_1 = 0.4929999709
Ambient Color = 128,128,128
unk_2 = 1
Specular Color = 128,128,128
unk_3 = 1
Specular Decay = 50


level - flag_testing_v2_b1.rar
src folder - flag_testing_v2_b1_src.rar[/spoiler]

flag_testing_v2_b2  unk_1 field = 107374176
[spoiler]Material Settings:Diffuse Color = 128,128,128
unk_1 = 107374176
Ambient Color = 128,128,128
unk_2 = 1
Specular Color = 128,128,128
unk_3 = 1
Specular Decay = 50


level - flag_testing_v2_b1.rar
src folder - flag_testing_v2_b1_src.rar[/spoiler]

notes:
- well.. identical to nothing at all being changed.



flag_testing_v2_c  unk_3 field
unk_2 contains a value of 1 in every msh. It's getting skipped.
unk_3 has 3 different values (0, 0.1000000015, and 1) I'll do the 2 smaller values. 1 is covered in the baseline.

flag_testing_v2_c1  unk_3 field = 0
[spoiler]Material Settings:Diffuse Color = 128,128,128
unk_1 = 1
Ambient Color = 128,128,128
unk_2 = 1
Specular Color = 128,128,128
unk_3 = 0
Specular Decay = 50


level - flag_testing_v2_c1.rar
src folder - flag_testing_v2_c1_src.rar[/spoiler]

flag_testing_v2_c2  unk_3 field = 0.1000000015
[spoiler]Material Settings:Diffuse Color = 128,128,128
unk_1 = 1
Ambient Color = 128,128,128
unk_2 = 1
Specular Color = 128,128,128
unk_3 = 0.1000000015
Specular Decay = 50


level - flag_testing_v2_c2.rar
src folder - flag_testing_v2_c2_src.rar[/spoiler]

notes:
- more no effect.



flag_testing_v2_d  specular decay
I hope this one gets interesting. The field contains a range of numbers from 0 to 300, with the most common one being 50. I'll do 3 test of low, mid and high (0, 150, and 300.)

flag_testing_v2_d1  specular decay = 0
[spoiler]Material Settings:Diffuse Color = 128,128,128
unk_1 = 1
Ambient Color = 128,128,128
unk_2 = 1
Specular Color = 128,128,128
unk_3 = 1
Specular Decay = 0


level - flag_testing_v2_d1.rar
src folder - flag_testing_v2_d1_src.rar[/spoiler]

flag_testing_v2_d2  specular decay = 150
[spoiler]Material Settings:Diffuse Color = 128,128,128
unk_1 = 1
Ambient Color = 128,128,128
unk_2 = 1
Specular Color = 128,128,128
unk_3 = 150
Specular Decay = 150


level - flag_testing_v2_d2.rar
src folder - flag_testing_v2_d2_src.rar[/spoiler]

flag_testing_v2_d3  specular decay = 300
[spoiler]Material Settings:Diffuse Color = 128,128,128
unk_1 = 1
Ambient Color = 128,128,128
unk_2 = 1
Specular Color = 128,128,128
unk_3 = 1
Specular Decay = 300


level - flag_testing_v2_d3.rar
src folder - flag_testing_v2_d3_src.rar[/spoiler]

notes:
- Nothing. I am dissapointed.



flag_testing_v2_e  TX1D (additional textures)
I know that some of the render types require an additional texture to work right. Like bumpmap, environmentmap, ect. Perhaps some of the flags have a simular requirement.

The format of the additional texture is a guess right now. I'll just add a duplicate entry to the already present TX0D. If anything makes a slight change, I'll dig deeper.

There are 4 texture slots used by all 3 games. From the way the render types use them, I know that their 'meaning' is dependant on what requires them, so I will test all 3 of the TX?Ds besides TX0D.

I hope this will affect glow and specular, but I will be happily surprised if it affects per-pixel-lighting.

flag_testing_v2_e1  TX1D
[spoiler]Material Settings:Diffuse Color = 128,128,128
unk_1 = 1
Ambient Color = 128,128,128
unk_2 = 1
Specular Color = 128,128,128
unk_3 = 1
Specular Decay = 50
Added TX1D chunk


level - flag_testing_v2_e1.rar
src folder - flag_testing_v2_e1_src.rar[/spoiler]

flag_testing_v2_e2  TX2D
[spoiler]Material Settings:Diffuse Color = 128,128,128
unk_1 = 1
Ambient Color = 128,128,128
unk_2 = 1
Specular Color = 128,128,128
unk_3 = 1
Specular Decay = 50
Added TX2D chunk


level - flag_testing_v2_e2.rar
src folder - flag_testing_v2_e2_src.rar[/spoiler]

flag_testing_v2_e3  TX3D
[spoiler]Material Settings:Diffuse Color = 128,128,128
unk_1 = 1
Ambient Color = 128,128,128
unk_2 = 1
Specular Color = 128,128,128
unk_3 = 1
Specular Decay = 50
Added TX3D chunk


level - flag_testing_v2_e3.rar
src folder - flag_testing_v2_e3_src.rar[/spoiler]

notes:
- Big effort for nothing.




This is where I will stop with the general flag testing.
There are 3 that need further investigation (glow, per-pixel lighting, and specular) and I will handle them by digging through existing files that use them.

From this battery of tests, I believe it safe to say the DATA chunk does not affect the render flags, and I will handle them in that way in my program untill something to the contrary pops up.

February 20, 2013, 09:00:04 AM #13 Last Edit: February 22, 2013, 04:03:20 PM by tirpider
-edit  Removed by tirpider due to inacurate test information
I may put more tests here if I need the space.


February 21, 2013, 12:42:09 PM #14 Last Edit: February 22, 2013, 09:38:15 PM by tirpider
While I set up the models to dig deeper into emissive, here is a handy dandy (actually kinda useless) list of all 256 possible render flag settings.

Combined Render Flag Values (sample because the list is longer than the post would allow)
[spoiler]
value=  hex  = added flags                        = flag names                                                                                                                         
    0=  0x00 =                                    = no flags set                                                                                                                       
    1=  0x01 = 1                                  = Emissive                                                                                                                           
    2=  0x02 = 2                                  = Glow                                                                                                                               
    3=  0x03 = 1 + 2                              = Emissive + Glow                                                                                                                     
    4=  0x04 = 4                                  = Singlesided Transparency                                                                                                           
    5=  0x05 = 1 + 4                              = Emissive + Singlesided Transparency                                                                                                 
    6=  0x06 = 2 + 4                              = Glow + Singlesided Transparency                                                                                                     
    7=  0x07 = 1 + 2 + 4                          = Emissive + Glow + Singlesided Transparency                                                                                         
    8=  0x08 = 8                                  = Doublesided Transparency                                                                                                           
    9=  0x09 = 1 + 8                              = Emissive + Doublesided Transparency                                                                                                 
   10=  0x0A = 2 + 8                              = Glow + Doublesided Transparency                                                                                                     
   11=  0x0B = 1 + 2 + 8                          = Emissive + Glow + Doublesided Transparency                                                                                         
   12=  0x0C = 4 + 8                              = Singlesided Transparency + Doublesided Transparency                                                                                 
   13=  0x0D = 1 + 4 + 8                          = Emissive + Singlesided Transparency + Doublesided Transparency                                                                     
   14=  0x0E = 2 + 4 + 8                          = Glow + Singlesided Transparency + Doublesided Transparency                                                                         
   15=  0x0F = 1 + 2 + 4 + 8                      = Emissive + Glow + Singlesided Transparency + Doublesided Transparency                                                               
   16=  0x10 = 16                                 = Hardedged Transparency                                                                                                             
   17=  0x11 = 1 + 16                             = Emissive + Hardedged Transparency                                                                                                   
   18=  0x12 = 2 + 16                             = Glow + Hardedged Transparency                                                                                                       
   19=  0x13 = 1 + 2 + 16                         = Emissive + Glow + Hardedged Transparency                                                                                           
   20=  0x14 = 4 + 16                             = Singlesided Transparency + Hardedged Transparency                                                                                   
   21=  0x15 = 1 + 4 + 16                         = Emissive + Singlesided Transparency + Hardedged Transparency                                                                       
   22=  0x16 = 2 + 4 + 16                         = Glow + Singlesided Transparency + Hardedged Transparency                                                                           
   23=  0x17 = 1 + 2 + 4 + 16                     = Emissive + Glow + Singlesided Transparency + Hardedged Transparency                                                                 
   24=  0x18 = 8 + 16                             = Doublesided Transparency + Hardedged Transparency                                                                                   
   25=  0x19 = 1 + 8 + 16                         = Emissive + Doublesided Transparency + Hardedged Transparency                                                                       
   26=  0x1A = 2 + 8 + 16                         = Glow + Doublesided Transparency + Hardedged Transparency                                                                           
   27=  0x1B = 1 + 2 + 8 + 16                     = Emissive + Glow + Doublesided Transparency + Hardedged Transparency                                                                 
   28=  0x1C = 4 + 8 + 16                         = Singlesided Transparency + Doublesided Transparency + Hardedged Transparency                                                       
   29=  0x1D = 1 + 4 + 8 + 16                     = Emissive + Singlesided Transparency + Doublesided Transparency + Hardedged Transparency                                             
   30=  0x1E = 2 + 4 + 8 + 16                     = Glow + Singlesided Transparency + Doublesided Transparency + Hardedged Transparency                                                 
   31=  0x1F = 1 + 2 + 4 + 8 + 16                 = Emissive + Glow + Singlesided Transparency + Doublesided Transparency + Hardedged Transparency                                     
   32=  0x20 = 32                                 = Per-Pixel Lighting                                                                                                                 

[/spoiler]

Someone else on GT already made a list like this, but thats there and this is here. Enjoy the instant replay of novel data.

Attached is the whole list in Open Office and Excel format.

-edit found the GT post.
It was AceMastermind (link) in the "inside the edit flags" thread.
For Science!!