What does this program do? Vanity allows you to quickly preview a final-armor set while giving you a clear path of how to get there.



How does the program work? The functionality behind it is simple. We render every component that is customizable in every colour available in Halo: Reach. After this is done, we "stack" the layers to give the representation of a composite render.



Why did you: Make this? Unlike Halo 3, the images on bungie.net are not encoded URLs that allow for simple variable changes to alter the image being rendered. This is wholly the foundation on which the previous 'armor generators' were based off of. Bungie changed this in Halo Reach to be a hashed base64 using a custom key. Whether Bungie changed this system for security purposes, or simply because it made more sense due to the increased level of customization, we don't know.

Not render this in DirectX? Unfortunately not everyone's GPU is the same. Though some people may have a machine that could comfortably render our shaders and meshes at 30fps without a problem, many people are on integrated graphics controllers still and couldn't even process some of the most fundamental of our shaders properties. Because of this, we decided to even the playing field and composite stacked images.

If you rendered every component in every colour, wouldn't that be thousands of images? Absolutely. 3,659 render passes were run across 241 folders in our current hierarchy system.

Why not just apply the colour in the program after the render is done? Unfortunately, it isn't that simple. The long answer: If you apply a colour and try any method of blending, it won't look accurate. The reflection channel for the base metal shaders is masked using a fresnel method, and within the masked reflection is a composite material that uses RGB instances of the selected colours for Primary or Secondary. This is blended over the base alpha channel of the diffuse map as a further mask, and within this is masked area is our actual raytraced reflection for our HDRI environment. This is all only 1/7th of the shader components. It simply couldn't be achieved in Photoshop on a dynamic basis.

How long did this take to make? 130 hours were spent developing a rendering system to handle thousands of rendering passes with consistent naming patterns to assist in exception-based situations for our source code. After this was done, 35 hours were spent drafting GUI concepts and discussing core functionality approaches for the coding segment of the program. Once everything was decided, programming took an additional 40 hours of work to finish the functionality and polish it for final release. This was done by two people in one month.

How were thousands of images rendered in a few days? I developed a system surrounded around the 'composite' shader type in 3ds Max. I created 30 layers, each containing an 'RGB Tint' shader dictating each of the ingame colour options. This allowed me to quickly enable or disable each colour value used by the game. This material was then animated to a different value on every frame. After having the program output each frame to a .PNG, we had in place a nicely organized file system.





This colour enum was consistent across all remaining 219 components, making organization of our source much cleaner.



Because we needed to quickly mask objects out with minimum impact on file size, I developed my process to have alpha masks able to provide 3 functions. This was conceived by making the alpha pass channel-based rather than monochromatic.





In this picture we can dynamically mask any of these base render passes based off of the green channel (Kat's arm), the red channel (the DMR), or the blue channel (our base armor layer). This was able to cut our file requirements in a third.







An overview of the ~167 shaders that were generated by my script.



Vanity was constructed in WPF XAML with C# backend, with resources created in Photoshop and 3ds Max 2011.

12,625 lines of code were used for the compositing.

Credits:s

Bungie - Raw assets

Zteam - Extraction

Mike Davis - Engineering

Nate Hawbaker - Project Director/Artist/UI Design









600,000+ downloads!

Thanks Bungie!

Mirror [1]