May 16th, 2022 Pattern Offsets & Rotation

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.

...
Karambit Slaughter - Seed 160

X: 0.309 Y: 0.651

...
Karambit Slaughter - Seed 198

X: 0.836 Y: 0.845

...
Karambit Slaughter - Seed 234

X: 0.003 Y: 0.489

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.

...
Karambit Case Hardened - Rotation from 0 to 360 degrees
...
Karambit Marble Fade - Rotation from -70 to -50 degrees

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.

...
Karambit Case Hardened - Seed 387

X: 0.067 Y: 0.731 Rotation: 264.532

...
Karambit Case Hardened - Seed 73

X: 0.989 Y: 0.589 Rotation: 48.387

...
Karambit Case Hardened - Seed 442

X: 0.006 Y: 0.480 Rotation: 68.828

For a full example of how the transform is done for templates, view the template transforms page