Shader Texture Set
Matcap Unit Shader Texture Set — unit shader texture authoring rules

The SH_Unit_Matcap shader uses Color Mask, Normal XY, and Emissive Mask — the data needed for unit rendering — packed into a single texture. In this work, to let the art resource author produce textures by the same rules, I organized the per-channel data usage, the export size, the in-game size, and the naming rule. The goal was to build an input structure that handles color masking, Matcap normal correction, and emissive area control without increasing texture count.
Problem
Managing the color mask, normal correction, and emissive area in the unit shader as separate textures increases texture sample count and resource management cost.
In addition, if channel usage or naming rules vary from author to author, material setup mistakes and export errors become more likely.
Therefore, the input data the shader requires had to be packed into a single texture, and the authoring rules had to be clearly defined.
Goal
The goal was to unify the auxiliary data used by the Matcap unit shader into a single texture set.
- R channel: Color Mask
- G channel: Tangent Space Normal X
- B channel: Emissive Mask
- A channel: Tangent Space Normal Y
- Export standard: 1024px
- In-game standard: 512px
- Texture Type: TGA 8bit + dithering
- Unified naming rule
Implementation
- 01
Packed Texture structure
The SH_Unit_Matcap shader uses the auxiliary data as a single packed texture.
The color mask, normal correction, and emissive mask are not split into separate textures but stored across the RGBA channels.
This simplifies the shader input structure and reduces the number of textures that must be managed in the unit material.
02. Channel Layout
The texture channels are used by the following rule.
Channel Usage Description R Color Mask Distinguish Main / Sub color regions G Normal X Tangent Space Normal X, OpenGL convention B Emissive Mask Mask for emissive regions A Normal Y Tangent Space Normal Y, OpenGL convention The R channel is used as a mask that separates the unit's color-swap regions.
The G / A channels store the Tangent Space Normal XY used in the Matcap computation, and Z is reconstructed in the shader to build the normal direction.
The B channel is used as a mask that controls regions requiring emissive.

- 02
B - Emissive Mask / A - Normal Y


- 03
Texture size
At the authoring stage textures are exported at 1024px, and in the actual game the import size is dropped to 512px.
Going straight from 2048px down to 512px can introduce artifacts in small mask regions or normal information, so the authoring resolution and the in-game resolution were separated.
- Export: 1024px
- In-game: 512px
- 04
Texture naming change
$Textureset — this is the TEXTURE SET LIST naming.
Once the name is changed in the TEXTURE SET LIST, the Texture Name follows that format on export.
Conclusion
Unified the auxiliary data used by the Matcap Unit Shader into a single packed texture.
- Pack Color Mask / Normal XY / Emissive Mask into the RGBA channels - Reduce the number of auxiliary textures managed in the unit material - Standardize Export 1024px / In-game 512px - Standardize TGA 8bit + dithering - Unify the naming rule based on the Texture Set List
This work is not just a texture spec, but a pipeline cleanup that aligns the unit shader input data with the art authoring rules.