CS:GO skins use a pseudo random value generator in order to create random offset/rotation values for different seeds.
These random values are used to position the weapon template over the texture. There can be 3 values generated for every skin seed, but not every skin uses these values.
- Offset X
- The offset of the template on the X-Axis
- Offset Y
- The offset of the template on the Y-Axis
- Rotation
- The rotation of the template
Some skins might only use one of these values, for example the Glock | Moonrise only changes the Offset X for each seed. This results in the pattern sliding across the template. If we sort the values by this offset value we are able to find specific seeds and quickly view all possible patterns.
Skins with none of these values keep the same texture pattern across every seed.
X & Y Offsets
The X and Y offset values control which part of the texture the skin uses when texturing the model. The values represent a percentage of the size of the texture. For example if a texture is 100 pixels wide and the offset is 0.5, the offset will be 50 pixels.
Some skins only have X/Y offsets without rotation. Here are a few examples of the karambit slaughter skin. The red line shows the X offset while the green line shows the Y offset.
Pattern Rotation
The rotation value of a skin is used to rotate the template around the texture pattern. Each skin has a set range of rotation that seeds will have. For example the Karambit Marble Fade has a range of -70 to -50 degrees. This range is set for the marble fade because only a small area of the texture should be used. Other skins such as any of the case hardened skins allow a full range of rotation 0 to 360 degrees.
The template is not simply rotated around the origin point using the rotation value. It uses a basic equation to make the distribution more random around the texture. As you can see in the example image bellow, all rotation values have been calculated 0-360, and they are shown as the yellow line in the image. For this example the x and y offsets have been forced to 0. The white square in the image is the base texture outlined.
Next are some examples of real skin seeds with the yellow overlay showing the rotation. Also shown in these images are red and green lines which represent the X and Y offsets.
For a full example of how the transform is done for templates, view the template transforms page