Textures#

Textures are the foundation of some RPak asset types. They cannot be used directly by the game, but are instead referenced by other asset types which the game can use by itself.

The image used by a texture must be in the .dds format and must be in one of the following compression types:

  • BC1 SRGB

  • BC2 SRGB

  • BC3 SRGB

  • BC7

  • BC7 SRGB

  • DXT1

  • DXT3

  • DXT5

  • BC4U

  • BC5U UNORM

Warning

SRGB DDS compression types are preferred, as they can prevent the texture’s colour from looking “washed out”

Examples:#

1. Basic Texture Asset - No streaming#

{
    "$type": "txtr",
    "path": "textures/models/humans/test_texture",
    "disableStreaming": true
}

Note

The image file in this texture asset will be called test_texture.dds and will be at <ASSETSDIR>/textures/models/humans/test_texture.dds

Note

Because disableStreaming is true, this texture will not be stored in a .starpak file, and all mip levels will be stored in the .rpak file

2. Streamed Texture Asset#

{
    "$type": "txtr",
    "path": "textures/models/humans/test_texture_2",
    "starpakPath": "test_texture_2.starpak"
}

Note

The image file in this texture asset will be called test_texture_2.dds and will be at <ASSETSDIR>/textures/models/humans/test_texture_2.dds

Note

Because disableStreaming is not present, this texture will have it’s higher resolution mip levels stored in test_texture_2.starpak, as defined by the starpakPath. It will not use the default starpakPath if one is defined outside of the files array

Asset Structure:#

$type#

For an asset to be a texture asset, the $type field must be "txtr".

path#

The path field of a texture asset is used to determine the location in the RPak’s assetsDir that the image file is in.

It is also used as the asset’s unique identifier, allowing other assets to reference and use it.

The path field must start with textures/ and must not end with a file extension.

Error

If RePak is unable to locate a file at the given path, it will output the following error to the console:

Failed to find texture source file %s. Exiting... where %s is the path field of the texture.

Error

If the file at the given path is not a .dds file, RePak will output the following error to the console:

Attempted to add txtr asset '%s' that was not a valid DDS file (invalid magic). where %s is the path field of the texture.

Error

If an unsupported .dds compression type is used, RePak will output the following error to the console:

Attempted to add txtr asset '%s' that was not using a supported DDS type. Exiting... where %s is the path field of the texture.

starpakPath#

The starpakPath field of a texture asset determines the path of the starpak in which the higher resolution mip levels should be stored.

If no starpakPath value is specified, RePak will default to using the default starpakPath, defined at file scope in the map file.

The starpakPath field should be a string, and importantly, should end in .starpak.

Note

If the starpak name ends in _hotswap.starpak (e.g. my_thing_hotswap.starpak) then Titanfall 2 will view it as optional. This allows the starpak to be moved, removed, or replaced while the game is running and streaming the texture. This can be useful for debugging.

Error

If the starpakPath is not present, and no starpakPath is defined at file scope, RePak will output the following error to the console.

attempted to add asset '%s' as a streaming asset, but no starpak files were available. to fix: add 'starpakPath' as an rpak-wide variable or: add 'starpakPath' as an asset specific variable where %s is the path of the texture asset

disableStreaming#

The disableStreaming field of a texture asset determines if the texture should use a starpak to store the higher resolution mip levels.

It should be a boolean value, with true disabling the use of a starpak,

disableStreaming defaults to false if it is not present.