Brütal Legend Material/Texture Standards
Overview: This document defines standards for texture and material creation. Our key visual goals for the textures and materials are: • • • • •
To provide visual variation while also maximizing texture re-use for memory reasons. To ensure that our surfaces look both crisp up close and not overly-tiled from a distance. To ensure that placed flavor mesh and props “gel” with the terrain. To ensure that our materials work well with real-time lighting and the day/night cycle. To re-use textures and materials as much as possible. This not only saves memory, but production time.
This document is confidential and copyrighted 2008 Double Fine Productions.
Glossary Flavor Mesh: Flavor Mesh is defined as non-terrain mesh that is intended to seamlessly blend with the terrain. Flavor Mesh usually is made of materials that use non-unique tiled textures. Most of the non-terrain mesh in Brütal Legend is flavor mesh. Prop: In Brütal Legend, a prop is defined as non-terrain mesh that is either dynamic in some way (it moves or breaks), or it is not intended to visually blend seamlessly with the terrain. Because props often have a unique diffuse texture (but not always), their UVs are laid out slightly differently than Flavor Mesh. See the UV Guidelines section of this document for details. Foliage: Foliage includes bushes and trees. Foliage is very similar to a Prop or Flavor Mesh, but its color sets are handled differently. In the case of Foliage, it uses the tint set to determine how the leaves move, leaving only the blend colorset for material work. Foliage setup is not covered in this document. Hero Piece: A Hero Piece is usually a large, landmark Flavor Mesh that requires a little extra fidelity to look good. Hero Pieces have custom ZBrush-generated normal maps and a diffuse AO map that is generated from high order Mesh. Hero Pieces always have custom materials. For more details on Hero Pieces, see the Brütal Legend Hero Piece document. Terrain: Terrain makes up the majority of the landscape in Brütal Legend. Terrain is a heightmap-based system created in a custom tool called the MUE. Although this document will cover texture and material standards for the terrain, it does not go into detail about how to author terrain or the MUE itself. Layers: All non-terrain mesh supports two layers of texture blending. Both layers are defined using vertex colors located in the “blend” colorset in Maya. Layer 1 always uses Cyan (red) and Layer 2 always uses Pink (green). These colors can be subtractively mixed to enable both layers to show up on the same vertices. Tinting: Non-terrain and non-foliage mesh supports color tinting through the use of a “tint” colorset in Maya. Tinting can be combined with the Layer blending. DO: Short for Directional Occlusion. Directional Occlusion is a form of ambient occlusion that takes into consideration the sun direction. Directional Occlusion is baked on all of the vertices of our Maya models (Props, Flavor Mesh, Foliage, Hero Pieces, and Characters). DO is stored in its own colorset in Maya. Terrain DO: Terrain Directional Occlusion is computed at munge time for an individual terrain tile. Since terrain does not self-shadow, terrain DO is key to the shapes holding up and looking believable in the changing time of day lighting. Placed flavor mesh can
This document is confidential and copyrighted 2008 Double Fine Productions.
influence terrain D.O. by enabling properties on the set dressing in the MUE. This feature really helps tie the set dressing in with the terrain and should be enabled on all nonmoving flavor mesh that is roughly human sized or bigger. Macro Texture: The Macro Texture is a new feature for Terrain. It’s basically a grayscale map (512x512) that is multiplied 2x (meaning that 127, 127, 127 gray is no change) over the entire tile. This texture gives an additional level of control to break up repetition. It can be used to emphasize certain mesh areas, or just to create some soft noise. It’s best used when it’s derived off a cavity map (this can be generated in ZBrush by importing the Terrain mesh), and then hand-tweaked by the material artists. Damage Texture: The Damage Texture refers to the texture that characters and vehicles swap in when they take damage. The system works by using layer 2 of the layers system (the pink (green) vertex colors) to blend in where this texture goes. This means that characters and vehicles only have on available layer to use for non-damaged material work. Vertex Alpha: If needed, vertex alpha can be used on the tint color set. This alpha blend the mesh in-game.
This document is confidential and copyrighted 2008 Double Fine Productions.
Brütal Material Artist/World Builder Workflow Summary This section summarizes the various workflows between the World Builder and Material Artist, and indicates who is responsible for what aspect of production. Props / Flavor Mesh (including Foliage): 1. 2. 3. 4. 5. 6. 7. 8. 9.
WB Model WB UV WB Initial LOD Creation WB DO Baking MA Create Unique Base Texture ( if needed, and for props only) MA Adjust UV’s as needed ( if needed) MA Material Creation MA Blends/Tint Painting MA regenerate LOD’s (if needed, to account for any UV changes)
Terrain: 10. WB Sculpt HeightMap 11. WB Rough Paint using existing Terrain Materials 12. WB Create Rough Macro Texture from Cavity Data and Apply 13. MA Create New Rough Terrain Materials 14. WB Replace Old Materials with New Rough Terrain Materials 15. WB Refine Terrain Painting 16. MA Tune and Polish Terrain Materials 17. MA Tune and Polish Macro Texture Hero Pieces: 1. 2. 3. 4. 5. 6. 7. 8. 9.
WB Low Poly Model WB UV WB ZBrush Model WB Normal & Diffuse AO Map Generation WB initial LOD Creation WB DO Baking MA Material Creation MA Blends/Tint Painting MA regenerate LOD’s (to account for any UV changes)
This document is confidential and copyrighted 2008 Double Fine Productions.
Brütal Standard Texture Sizes The following is a list of our average texture sizes. There is some variation in these standards, but the majority of our textures should fall into these categories.. Props/Flavor Mesh: • • • • •
Diffuse: 512x512 or 256x256 (including layer textures) Normal:512x512 Detail Normal: 256x256 Detail: 256x256 or 128x128 Gloss: 256x256 or 128x128
Terrain: • • • • • •
Diffuse: 512x512 (on rare occasions a 1024x1024 is possible) Normal:512x512 (on rare occasions a 1024x1024 is possible) Detail: 256x256 Gloss: 256x256 Macro: 512x512(monochrome) Note that terrain textures are packed at munge time for memory savings: a utility texture is created that is based on the size of the normal map (detail and gloss textures are scaled up if needed, so the sizes don’t have to match), and looks like the following: o R channel: Normal Map R o G channel: Normal Map G o B Channel: Detail texture o A Channel: Gloss texture
Characters (average): • • • • • • •
Diffuse: 1024x1024 (hero), or 512x512 (soldier) Normal: 1024x1024 (hero), or 512x512 (soldier) Detail Normal: 256x256 Gloss: 512x512 (not tiled) or 256x256 (tiled) Detail: 256x256 Optional Translucence texture: 512x512 (hero) or 256x256 (soldier) Layer Textures : 256x256 (there can be many of these per character, depending on the number of surface types a character has, but these are usually shared between characters)
Note that the above numbers do not account for accessories or texture required for variation across large groups. Those will add additional textures.
This document is confidential and copyrighted 2008 Double Fine Productions.
Brütal Texture Naming Conventions Environments: [ObjectName]_[SurfaceType]_[Descriptor]_[Increment(##)]_[MungeType]
Characters: [CharacterName]_[Descriptor]_[Increment(##)]_[MungeType]
•
ObjectName is optional, and only used if a texture is intended to be unique.
•
Surfacetype should be one of the following categories: o Bone o Chrome o Dirt o Fur o Grass o Ice o Light o Marble o Metal o Misc o Rock o Stone o Tire o Vinyl o Wood
•
Descriptor can be anything that helps define the context of the texture a bit more. Please keep this area brief so as not to exceed our maximum file name length (38 characters).
•
Increment is a two digit number when there are multiple variations of a similar texture. Note that the first version does not need a number (there is no “_00” version) – start the increments at “_01”.
This document is confidential and copyrighted 2008 Double Fine Productions.
•
MungeType is a short text description of the type of texture that it is. This is used for platform-specific compression. Note that the diffuse texture does not have a munge type. The following is a list of valid MungeTypes: o Gloss maps: _Gloss o Detail maps: _Detail o Normal maps: _Norm o Incandescence: _Inc o Transparency: _Trans (Note this has been phased out, as this is packed into Diffuse alpha now) o o o o
Translucence: _Trans Directional Occlusion: _Dir Terrain Blend: _Blend Environment Maps: _Env
There are some other naming conventions that aren't munge flags, but are still important to maintain. • • • • •
Diffuse textures with embedded alpha: _Decal Standard utility textures: _Utility Hair utility textures: _UtilityHair Fur utility textures: _UtilityFur Hair ramp textures: _SpecularColorRamp, _EdgeAlphaRamp, _DiffuseColorRamp
Example Environment Texture Names: •
Stone_OldYellow_01_Norm
•
Chrome_Eroded_Gloss
•
GuardTower_Metal_Blue
Example Character Texture Names: •
A01_Avatar_Skin_Norm
•
A21_Lars_Pants_Gloss
•
D01_Avatar_Horn_01_Detail
This document is confidential and copyrighted 2008 Double Fine Productions.
Brütal Texture Directory Structure Environment: Environments/Textures …
(This is where all of the environment textures for the whole game
go) (DO NOT PUT ANY TEXTURES IN THE ROOT OF THIS FOLDER)
/AmbientMesh
(All of our ambient mesh textures belong in here (grass,
rocks, etc)
/Foliage
(All Foliage textures belong here (trees, bushes, etc)
/General
(This is the default folder for most textures if they don’t fit
elsewhere)
/Hero /Props
(This folder is for all of the hero piece textures) (Unique Prop specific textures go here – although many Props will also pull some of their textures from the “General” folder)
/Special
(This folder is resolved for textures with special shaders – like water
/Test
(This folder is for all of our “gray” and “tile test” textures)
or lava)
/Temp_Single
(This is a temporary folder that will eventually go away. Do not put anything in here. It currently holds textures that are only used once in the entire game (this will probably be consolidated))
Character: Shared character textures: Characters/Textures …
(These are typically detail, tile, or damage textures that many
character can reuse)
Unique character textures: Characters/Biped (Character Type)/Avatar_A01(Character Name)/Textures … (These are where the texture that are unique to the character go. These are typically at least a diffuse, normal, and gloss texture set)
This document is confidential and copyrighted 2008 Double Fine Productions.
Brütal Photoshop Notes All of our textures should be stored as layered Photoshop files. This section briefly details conventions for .psd files and the scripts that we use to generate our textures. Note that there are many more scripts than this section covers – just the standards specific ones are touched on here. The scripts are available under the File=>Scripts menu. Alpha sets: You have an option of creating a layer set in your .psd file named “Alpha” which will tell the scripts what to use as the alpha channel for the final texture. Otherwise, the scripts will use whatever alpha is in the first alpha slot, and the scripts will make you remove all other alphas. So, if you want to have multiple alphas in your document9to use as selection sets create an alpha layer set. How to do 1 bit vs. full alpha: There is no setting that is needed to differentiate between 1bit and 8bit (full) alpha. Just paint in 1 bit mode, and the texture munger will detect this when creating the platform specific munged version and it will show up correctly. Background layer convention: In order for the Photoshop scripts to work properly, this must be a background layer in your Photoshop file. If you’ve deleted your background layer, you can recreate it by selecting the new layer you want to be the background and selecting the Layer=>New=>Background from Layer menu item. Df Save: Df Save is the most commonly used Photoshop script. It will check out the intermediate data version of the texture (if necessary), select the appropriate compression settings for that type of texture, and save out the file. This script relies on the mungetype part of the texture naming convention to know how to compress the texture, so it’s important that the mungetype is used.
This document is confidential and copyrighted 2008 Double Fine Productions.
Brütal Texture Creation Guidelines •
•
•
•
•
•
•
•
Keep textures crisp in Photoshop. As obvious as this seems, people sometimes blur or soften things, but the next- gen hardware already does that aggressively. In fact, sometimes it can look better to use an unsharp mask filter or two on the final texture. Note that even though it’s good to have crisp textures in Photoshop, we want to avoid any “jaggies” or posterization because that will not look good regardless of texture filtering. Split frequencies of noise into different textures whenever possible. Instead of making a big concrete texture with a soft rippling pattern and a tight noisy pattern, split them into two textures. That way they can be tiled at different rates in-game, re-used more often across multiple materials, and blended together with layers in a more natural way. Some “fake occlusion” in the diffuse texture can really help. But putting a little fake ambient occlusion in the diffuse maps, this can help hold the normal map detail. This doesn’t work as well on textures that are tiled a lot, but is especially useful in the cases where a specific diffuse texture is paired with a specific normal map. “Fake Occlusion” can be generated in many ways – one of the easiest is to load the normal map into Crazy Bump, extract the occlusion and/or displacement textures, and then put them on a multiply layer above the base diffuse map, adjusting the opacity as necessary. Work at double resolution. In the near feature, we will be able to use munge files to reduce the size of textures in-game without having to manually size the textures in Photoshop. Save memory by reusing textures as much as possible. Gloss textures, for example, don’t have to be unique most of time. As long as there is specular change across a surface that is usually adequate. Before creating a new, unique normal or diffuse map, try and see if an existing one will do the job. Although sometimes matching a specific diffuse, normal, and gloss map is needed for a surface, many other times that is not the case. Reduce the size of secondary textures as much as possible. Reduce textures such as gloss and detail textures whenever possible because they don’t need to be a full resolution (keeping in mind how textures are packed/combined at munge time in the case of terrain). Don’t over-saturate diffuse textures. In most cases, this fights with the lighting, and since we have a dramatic dynamic lighting scheme, it’s best to let the lighting push the saturation. Watch the value of diffuse textures. Putting pure white in your textures will cause them to bloom at all times in our game, and pure black will never be affected by lighting in any meaningful way. Although textures should be crisp and have nice
This document is confidential and copyrighted 2008 Double Fine Productions.
•
contrast, be sure that there is a nice range of values in the textures to ensure the best light response. Even distribution of detail for Terrain textures. Textures used on the Terrain should have a very even distribution of detail, to minimize tiling. Variation in texture detail will be achieved through mixing multiple terrain materials, not by making a single diffuse texture have a lot of variation
A good example of terrain textures with even distribution of detail to minimize tiling
This document is confidential and copyrighted 2008 Double Fine Productions.
Brütal Material Naming Conventions Environment: All Environment Materials should be named in the following format: [ObjectName]_[SurfaceType]_[Descriptor]_[Increment(##)] • •
ObjectName is optional, and only used if a material is intended to be unique. Surfacetype should be one of the following categories: o Bone o Chrome o Dirt o Fur o Grass o Ice o Light o Marble o Metal o Misc o Rock o Stone o Tire o Vinyl o Wood
•
Descriptor can be anything that helps define the context of the material a bit more. Please keep this area brief so as not to exceed our maximum file name length (38 characters). Increment is a two digit number when there are multiple variations of a similar material. Note that the first version does not need a number (there is no “_00” version) – start the increments at “_01”.
•
Character: All Character Materials should be named in the following format: [CharacterName]_[Descriptor]_[Increment(##)] Example Environment Material Names: •
Stone_OldYellow_01
•
Chrome_Eroded
•
GuardTower_Metal_Blue
This document is confidential and copyrighted 2008 Double Fine Productions.
Brütal Material Directory Structure Environments: Environments/Materials …
(This is where all of the non-terrain environment materials go for all
Islands) (DO NOT PUT ANY MATERIALS IN THE ROOT OF THIS FOLDER)
/AmbientMesh
(All of our ambient mesh materials belong in here (grass,
rocks, etc)
/Foliage
(AllFfoliage materials belong here (trees, bushes, etc)
/General
(This is the default folder for most materials if they don’t fit
elsewhere)
/Hero /Props
(This folder is for all of the Hero Piece materials) (Unique Prop specific materials go here – although many Props will also pull some of their materials from the “General” folder)
/Special
(This folder is resolved for materials with special shaders – like
/Test
(This folder is for all of our “gray” and “ready for texturing” style
water or lava)
materials)
/Temp_Single
(This is a temporary folder that will eventually go away. Do not put anything in here. It currently holds materials that are only used once in the entire game (this will probably be consolidated))
Environments/TerrainMaterials … (This is where all of the Terrain environment materials go for all Islands) (DO NOT PUT ANY MATERIALS IN THE ROOT OF THIS FOLDER)
/General
(Currently this is where all of Terrain materials belong)
Characters: Characters/Biped(Character Type)/A01_Avatar(Character Name)/Materials… (This is where all of the materials for a particular character would go, since they are all unique to that character)
This document is confidential and copyrighted 2008 Double Fine Productions.
Brütal Prop/Flavor Mesh Material Guidelines •
•
•
Always make normal maps strong in texture. Although it is possible to make a normal too strong by using the “overlay” mode in Photoshop abusively, normal maps should generally be made strong in the texture. They can be softened in the material with the normal scale attribute, which is much more flexible than softening the texture itself. Generally speaking, a subtle normal map isn’t noticeable with our lighting, so it’s not worth even doing (with few exceptions like characters’ faces). Always try to breakup repetition and add interest first by using layers and vertex color blends before adding new, unique textures or doing elaborate UV work. If you can make it work by using the material, it is much faster and usually better on memory. A good material will have both high and low frequency texture detail. This allows the material to read from multiple distances. The base textures will often be the mid/low frequency, with the layers bringing in the higher frequency tile rates. Also keep in mind that detail normal maps, layer diffuse maps, and gloss maps can all be tiled at higher rates to increase pixel density, too. The exact solution will depend on the material involved. The important part is just to have a mix.
This rock material has good high and low frequency detail
This document is confidential and copyrighted 2008 Double Fine Productions.
• •
•
•
Layers are key. Always use Layers. We’re paying for them at all times anyways, and the correct use of Layers is what enables a material to look “next-gen”. Don’t make the Layers subtle. In most cases, if a layer’s influence on the material is subtle, it will go largely un-noticed and just make things slightly noisier. Make Layers less subtle by using stronger Layer blend values, or by ensuring that the textures the Layers are bringing in are different enough from the base textures they are blending with. Subtle color changes should be done with tints, instead of layer textures, as this is much more memory effective. Make Layers regional. One of the biggest strengths of Layers is to tie the material to the geometry detail without requiring a custom texture to be created. Paint layers in areas on the geometry where unique detail would be highlighted if a custom texture was being created. For example, a layer blend could be run along all of the outside edges of a metal object to bring in a higher frequency scratch and ding set of textures. Multiple Layers should mix. Don’t make the Layers only blend on different areas of the model separately; make sure that they also blend on top of each other. This will give the appearance of a much more complex and natural surface. To do this correctly, you have to use some method to multiply the layer 1 and layer 2 colors together. There are multiple ways to do this – the simplest is to just paint with an R 0 G 0 B 1 color. Otherwise, if you paint one layer color on another, you will just be erasing the original one.
This image shows the layer breakdown of the rock. Note the strength of the layers, the intermixing of the layers in several spots, and the regional use of layer 2 to create a convincing surface.
This document is confidential and copyrighted 2008 Double Fine Productions.
•
Use the Layer’s ability to influence the specular strength. One of the newest material features is the ability to let the layer texture either increase or decrease the influence of the gloss map across the surface. This is a really powerful feature that lets you create the illusion of more complex specular interactions with the layers. For example, a dirty layer 1 texture may be combined with a base metal surface, which has a high gloss setting. Without adjusting the dirt layer 1 specular intensity, the dirt will look shiny, like the metal and not be convincing.
This mine cart material uses the layers ability to influence the specularity of the surface to create the illusion of a unique gloss map.
•
•
•
Specularity. As mentioned in texture guidelines, unique specular detail is often not necessary. What people perceive is usually just change across a surface. Instead of making a big gloss texture, you can also use a small tiled gloss texture, and then use the layer system to change it in those areas, saving a lot of memory and time. Standardized Layer blend colors. On anything new you create, use the red channel (cyan) for layer 1 blends and the green channel (pink) for layer 2 blends. The alpha and blue channels are no longer supported for layer blends. At times, you may have to divide an object up into multiple materials, and share some common texture between the materials across the transition edge. This will give the illusion that you have many more blends and normal maps to work with. An example might be moss-covered rock sitting in snow. The rock would be divided half way up into two materials. Both materials would contain the same diffuse, gloss, and normal map, but each one would have separate detail
This document is confidential and copyrighted 2008 Double Fine Productions.
•
normal maps and layer textures so that a moss diffuse and detail normal could be integrated as well as a snow detail normal map and diffuse. Vertex color tinting. We now have the ability to tint models using vertex colors without interfering with the layer blend colors. This can be used to add interest to the model and break up repetition. There is also some potential benefit in using vertex colors to help “ground” an object to the terrain by slightly darkening the parts of the model near the ground, and slightly brightening the parts of the model facing the sky.
This image shows the tint colors for the rock. Subtle color modulation has been used to create variation.
This document is confidential and copyrighted 2008 Double Fine Productions.
Vertex tint has been used on these otherwise identical rocks to achieve some quick visual variation.
This document is confidential and copyrighted 2008 Double Fine Productions.
Brütal UV / Pixel Density Guidelines •
•
•
•
•
Initial UV’s should be created by World Builders while modeling. It is the World Builders responsibility to deliver a clean model with good UV’s that follow the guidelines described here. Material Artists can modify these UV’s as needed when working on the materials, but should have a clean base from which to start their work. No stretching allowed. Although small amounts of distortion are acceptable when laying out an unfolded set of UV’s, it is not ok to have obviously stretched UV’s. Once normal maps are applied to these objects, any stretching will become painfully obvious. Place your seams wisely. Plan your UV seam so that they are not in an obvious place on the model. Also, look at the model and think about how someone might want to texture it. If there is a column shape, for example, it should be cylindrically unwrapped so that textures will flow naturally across its surface. Auto-mapping a cylindrical shape will wind up with a bunch of separate UV shells that will have to be cleaned up. Clean up your auto-mapping! UV’s should not have seams everywhere. UV shells should be attached and kept clean. Although we should minimize seams, do not introduce a lot of distortion into the UV’s to do so, instead try and introduce a seam break in a non obvious place on the model. A second UV set only needs to be created if it is needed as part of the material work. This is generally an unwrapped set (but not always). This will be the responsibility of the material artists.
This document is confidential and copyrighted 2008 Double Fine Productions.
This image shows our example rock before and after it has been cleaned up to be consistent with our UV standards. The number of UV shells has been reduced, and the seams hidden in “valleys” in the model, the UV’s have less stretching, and the pixel density is more consistent.
This document is confidential and copyrighted 2008 Double Fine Productions.
•
Base Pixel Density : o Flavor Mesh A base diffuse of 512x512 should tile once every 6 meters. o Props Props will typically have their UV’s laid out to fit within the 0 to 1 range. This will result in a lower pixel density than the flavor mesh or terrain, but the visual disconnect can be made up for by the careful use of blends and tiling detail, spec, and layer textures at a higher rate. o Hero Pieces For the purposes of pixel density and UV’s, hero pieces have their own standards. Details can be found in the Brütal Legend Hero Piece document. o Terrain The Standard terrain material, using 512x512 textures, should be set to a tiling rate of 12 in the MUE. Depending on the material, this number may need to change. Generally, if the player is only seeing the terrain material in the distance, it’s acceptable to tile it differently.
This document is confidential and copyrighted 2008 Double Fine Productions.
BRÜTAL Terrain Material Guidelines
•
•
Tiling Rate: Our base tile rate for terrain materials should be set to 12 in the MUE to maintain a consistent pixel density. This will cause some obvious repeat in many materials, which is why really good terrain painting that breaks up patterning needs to be employed (see terrain painting guidelines later). Terrain materials in the distance can be tiled less to avoid repetition. Represent all Frequencies of Detail o Tile Main Diffuse tightly enough to not look pixilated up close even if it introduces some repletion in mid/background o Main Diffuse can have a subtle amount of “fake AO” baked in it to help hold normal map detail. This is often especially important for terrain materials because normal maps can be quite subtle. o Try to keep terrain normal maps mid to low frequency. High frequency detail will just look pixilated in most cases. o Use Detail textures with enough contrast tiled tighter for very close pixel density. Remember that mid gray in a detail texture is “nothing”, white brightens the diffuse, and black darkens it. o Use Gloss maps for additional layers of good detail. There is no need to make unique gloss maps most of the time – use the libraries of shared noisy gloss maps instead. o Don’t forget to manipulate the specular roughness, which can vary per terrain material for additional visual interest.
This document is confidential and copyrighted 2008 Double Fine Productions.