Welcome to Open Carnage

A resource for Halo Custom Edition and MCC modding, with unique means of rewarding content creation and support. Have a wander to see why we're worth the time! - EST. 2012

Zatarita

Tex Mod - Custom textures

Tex Mod is the second public release proof of concept tool from SeT. The process is still slightly complicated; however, due to how much I've seen people wanting custom textures. I decided to rush the build.

BACK THINGS UP, USE AT YOUR OWN RISK. The program is still incomplete, things will get easier with time. I also can't guarantee it will work as intended every time.

As of now this is a slightly more advanced example. Some things still required hex editing, though minimal.

Let's go over how to use it:

 

EDIT:

Update has enabled "load from dds" and fixed some minor bugs. making a lot of this null. You can now just load the ipak, bind the imeta, and overwrite the original texture if you desire.

 

Note** overwriting a texture means you'll need to rebuilt every imeta that uses that texture. Since the file size might change. This will be addressed in the next update

 

19.PNG

open the ipak that holds the texture (alphabetical split at "p")

20.PNG

bind the imeta for the level

17.PNG

find the texture you wish to replace. Click "load from DDS" (Click save to dds for a reference texture to edit)

18.PNG

load custom texture
23.PNG

build the imeta (since there may be more mip maps and such, or changes in dimensions)
22.PNG

Save the changes

wtf.PNG

Our final result.

 

Sorry for the rushed tutorial. I had like 30 mins to make these screenshots, build the project, upload, and fix post.

 

for custom template textures follow original tutorial:

Spoiler

For this example I will be using both Tex Mod and SMI together. You can use SuP if you prefer instead. You will also need a hex editor, and a graphics design program 

 

SMI:

 

Nvidia photoshop plugin for dds:

https://developer.nvidia.com/nvidia-texture-tools-exporter


1.PNG

For this example, we're going to be creating a custom texture for the cryotube in a10, Since it's one of the first things you see. I'm going to load up the a10.s3dpak with SMI (see above for usage/download), select the cryotube template, and extract the template (either recursive, or regular. I did recursive to have the working folder)

2.PNG

We're going to navigate to the extracted folder, and find the .tpl file inside. We're going to need to hex edit this file to adjust the referenced textures

3.PNG

 

at the top of the file, there is a list of dependencies. Since there are offsets in the file, we cant change the names length; however, we can change some characters to give it a unique name. This will save us from over writing the original. This makes it so only this one map gets the custom textures, and it also lets you be able to revert to the original if desired (also over writing textures is still broken for some reason, but don't mind that)

4.PNG

Here, we're changing "a10_cryo_capsule" to "a10_cryo_capsulf" (It's usually nicer if the texture is numbered, cause you can just add one; however, not the case here)

5.PNG

We're going to save our changes to the file, and inject the template into the s3dpak (non-recursive)

6.PNG


Next we're going save and close SMI, and open Tex Mod

7.PNG

open the ipak containing the file. (ipak1/ipak2 are alphabetical split at "p")
***NOTE: The Ipak is HUGE, it will take some time to load, and save the file. It has to decompress, parse on load, and recompile, and recompress on save. This will be threaded once I git good at python.***

 

one the file loads, we're going to bind the imeta to the ipak for the level. In this case, a10:
8.PNG

9.PNG
Once that is done, you'll see the items that will be rebuilt to the imeta checked. Everything else isn't in this level. I'm going to double click the texture I wish to edit, and it will populate the data on the right. We can confirm the right name is loaded, and click "save to dds"
10.PNG
I'm going to rename the texture to the new name I gave it, and save it to the folder i saved the template to earlier (just to keep it more clean, and keep all project files together.) Taking note of the "type" when I save. This is dxt5.

 

11.PNG

Next I'm going to load the texture in any editor of choice. Sadly I'm stuck with paint.net since I cant seem to find my photoshop stuff. I make a pretty simple edit here, just overlay a slightly transparent red.

12.PNG
Then I save the texture, making sure to save it as the type I extracted it as. In this case DXT5.

 

13.PNG
Going back to tex mod I go to edit>import DDS and import the edited file

14.PNG
The new file shows up at the bottom, and the imeta checkbox is automatically checked.

15.PNG

Next I will build the modified imeta, and finally save my changes with file>save as
(Again this will take some time, for me it takes ~min with 8 cores and 16gb ram. The file is huge, and it has to recompress. I am working on threading the compression)

Our final result:
16.PNG

 

THERE IS STILL A LOT OF WORK NEEDED TO GET THIS WORKING RIGHT.
Please please post bugs, this has been a long time coming, and a few months of work. I want to get this working perfectly. There are a few ui bugs here and there that need to be fixed, but I wont have much time to dedicate to it this week coming. Hopefully this should give people some time to play with it, and I can get an idea what direction to take things before I dump too much work into "my way" and have to move back on some progress. The final source hasn't been pushed to the github repo yet.

 

tex_mod.rar

Edited by Zatarita
load from dds update
Vuthakral, Sceny, Tucker933 and 1 other like this

Specifications:

S3dpak - format - Imeta/ipak - format - Fmeta - format

Programs:

H2a-inflate - SuP

Share this post


Link to post
Share on other sites

Tiddy-bits:

Whew. That's a lot of work if I wanted to AI upscale a single texture. I'd be more than happy to do the texture work but maybe not the rest of it.
Also curious if 343 modified the Blam engine in any way to accept the newer BC7 format. And if it's the same as Halo 1 where the game apparently carries the uncompressed textures.


"You're nothing but a thing to me." -Tucker933 2016   

"Mine's not huge, but neither are my hands, so it's a real good fit." -Badga666 2017                

"It's not incest until it's in." -Caesar 2017

"Poison dart frogs aren't poisonous. Mankind is a poison and the dart frogs are the cure."-Somewhere on the internet 

"I felt left out so I added myself to your signature." -Pfhunkie 2020

"Go for the balls!" -ShikuTeshi 2020

Share this post


Link to post
Share on other sites
21 minutes ago, ShikuTeshi said:

Whew. That's a lot of work if I wanted to AI upscale a single texture. I'd be more than happy to do the texture work but maybe not the rest of it.
Also curious if 343 modified the Blam engine in any way to accept the newer BC7 format. And if it's the same as Halo 1 where the game apparently carries the uncompressed textures.

It'll get easier once I figure out what's wrong with overwriting textures. It's just tough now cause we need to create a new texture and link it to the template.

Once I fix over writing it should be just load, import, save Imeta, save ipak.

 

As far as newer textures, I only see support for:

Dxt1/3/5, argb/xrgb8888 (meaning light maps need to be covered from 16 bit), ati1/ati2, and ai88(greyscale)


Specifications:

S3dpak - format - Imeta/ipak - format - Fmeta - format

Programs:

H2a-inflate - SuP

Share this post


Link to post
Share on other sites

Neat. Looking forward to it.
I guess a good question is if you've tried importing an uncompressed texture? It's definitely not an ideal option in any means but I don't think it would hurt that badly if possible. I'll probably follow Skyrim modding logic and not compress normals if it ever gets to that point.


"You're nothing but a thing to me." -Tucker933 2016   

"Mine's not huge, but neither are my hands, so it's a real good fit." -Badga666 2017                

"It's not incest until it's in." -Caesar 2017

"Poison dart frogs aren't poisonous. Mankind is a poison and the dart frogs are the cure."-Somewhere on the internet 

"I felt left out so I added myself to your signature." -Pfhunkie 2020

"Go for the balls!" -ShikuTeshi 2020

Share this post


Link to post
Share on other sites

What do you mean by uncompressed?

The Texture its self is just a headless dds. If you're talking about block compression it does support argb8888 which doesn't have block compression.

The ipak is compressed with zlib, so you COULD compress with 0 compression level. Which would basically look uncompressed with some bloat


Specifications:

S3dpak - format - Imeta/ipak - format - Fmeta - format

Programs:

H2a-inflate - SuP

Share this post


Link to post
Share on other sites

OSgrHBs.png
Just not using any level of DXT or otherwise.
And I can't explicitly say due to ToS at this time but I can probably alleviate compression elements.
I forgot people mentioned that most texture data in MCC has been modernized and kept it it's own shared file.
Sherry and Moses (I think he's left the modding scene?) would have the best information on this since they did pull said uncompressed textures out of Halo PC. I don't know how that works but I imagine the engine just compresses and delivers the textures itself hence the reason it retained the uncompressed versions. I was just hoping that the method wasn't changed in MCC and they just moved them to a new file 'zip' like archive and the uncompressed data is in there somewhere.


"You're nothing but a thing to me." -Tucker933 2016   

"Mine's not huge, but neither are my hands, so it's a real good fit." -Badga666 2017                

"It's not incest until it's in." -Caesar 2017

"Poison dart frogs aren't poisonous. Mankind is a poison and the dart frogs are the cure."-Somewhere on the internet 

"I felt left out so I added myself to your signature." -Pfhunkie 2020

"Go for the balls!" -ShikuTeshi 2020

Share this post


Link to post
Share on other sites

I don't think I understand. It's possible they convert the dds textures to easier to use formats, but these textures are uncompressed. If you add the right header to the file you get texture, no extra tweaking needed. As far as compression goes, they already have the formatting applied. It's not just raw rbga channels like a bitmap (except argb/xrgb.)


Specifications:

S3dpak - format - Imeta/ipak - format - Fmeta - format

Programs:

H2a-inflate - SuP

Share this post


Link to post
Share on other sites

Hm. I guess I'll understand after I play with it then. 


"You're nothing but a thing to me." -Tucker933 2016   

"Mine's not huge, but neither are my hands, so it's a real good fit." -Badga666 2017                

"It's not incest until it's in." -Caesar 2017

"Poison dart frogs aren't poisonous. Mankind is a poison and the dart frogs are the cure."-Somewhere on the internet 

"I felt left out so I added myself to your signature." -Pfhunkie 2020

"Go for the balls!" -ShikuTeshi 2020

Share this post


Link to post
Share on other sites

UPDATE:
Fixed load from dds. May still be slightly buggy. (see original post for updated example. Thank you s3 for letting me use your golden gun) This should maintain bump maps and such for the texture that otherwise wouldn't be referenced correctly with a new texture name.
Fixed crash on canceling save/load

Fixed export function to actually let you designate a location and name.

Fixed autofilling file name

 

known bugs:
Old data still wont clear when you load new data. For some reason it wont clear the list.

Edited by Zatarita
Tucker933 and ShikuTeshi like this

Specifications:

S3dpak - format - Imeta/ipak - format - Fmeta - format

Programs:

H2a-inflate - SuP

Share this post


Link to post
Share on other sites

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
  • Recently Browsing   0 members

    No registered users viewing this page.