{"id":25265003,"url":"https://github.com/craftablescience/maretf","last_synced_at":"2025-04-06T02:14:15.325Z","repository":{"id":276818976,"uuid":"930411415","full_name":"craftablescience/MareTF","owner":"craftablescience","description":"A work in progress command-line utility to work with VTF files.","archived":false,"fork":false,"pushed_at":"2025-03-28T03:42:45.000Z","size":1132,"stargazers_count":6,"open_issues_count":1,"forks_count":0,"subscribers_count":1,"default_branch":"mane","last_synced_at":"2025-03-28T04:31:03.462Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"","language":"C++","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/craftablescience.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":".github/FUNDING.yml","license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null},"funding":{"ko_fi":"craftablescience"}},"created_at":"2025-02-10T15:38:32.000Z","updated_at":"2025-03-07T07:54:27.000Z","dependencies_parsed_at":"2025-03-28T04:25:29.939Z","dependency_job_id":"3d3268f0-4cfb-4190-8997-1a384000de7d","html_url":"https://github.com/craftablescience/MareTF","commit_stats":null,"previous_names":["craftablescience/maretf"],"tags_count":8,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/craftablescience%2FMareTF","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/craftablescience%2FMareTF/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/craftablescience%2FMareTF/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/craftablescience%2FMareTF/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/craftablescience","download_url":"https://codeload.github.com/craftablescience/MareTF/tar.gz/refs/heads/mane","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":247423519,"owners_count":20936626,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2025-02-12T07:52:05.943Z","updated_at":"2025-04-06T02:14:15.318Z","avatar_url":"https://github.com/craftablescience.png","language":"C++","funding_links":["https://ko-fi.com/craftablescience"],"categories":[],"sub_categories":[],"readme":"\u003cdiv\u003e\n  \u003cimg align=\"left\" width=\"40px\" src=\"https://github.com/craftablescience/MareTF/blob/mane/res/logo.png?raw=true\" alt=\"MareTF Logo\" /\u003e\n  \u003ch1\u003eMareTF\u003c/h1\u003e\n\u003c/div\u003e\n\n\u003cdiv\u003e\n  \u003ca href=\"https://github.com/craftablescience/MareTF/blob/mane/LICENSE\" target=\"_blank\" rel=\"noopener noreferrer\"\u003e\u003cimg src=\"https://img.shields.io/github/license/craftablescience/MareTF?branch=mane\u0026label=license\" alt=\"License\" /\u003e\u003c/a\u003e\n  \u003ca href=\"https://github.com/craftablescience/MareTF/actions\" target=\"_blank\" rel=\"noopener noreferrer\"\u003e\u003cimg src=\"https://img.shields.io/github/actions/workflow/status/craftablescience/MareTF/build.yml?branch=mane\u0026label=builds\" alt=\"Workflow Status\" /\u003e\u003c/a\u003e\n  \u003ca href=\"https://discord.gg/ASgHFkX\" target=\"_blank\" rel=\"noopener noreferrer\"\u003e\u003cimg src=\"https://img.shields.io/discord/678074864346857482?label=discord\u0026logo=Discord\u0026logoColor=%23FFFFFF\" alt=\"Discord\" /\u003e\u003c/a\u003e\n  \u003ca href=\"https://ko-fi.com/craftablescience\" target=\"_blank\" rel=\"noopener noreferrer\"\u003e\u003cimg src=\"https://img.shields.io/badge/donate-006dae?label=ko-fi\u0026logo=ko-fi\" alt=\"Ko-Fi\" /\u003e\u003c/a\u003e\n\u003c/div\u003e\n\nA utility to create, edit, and display every type of VTF file ever made.\n\n###### *See also: [VTF Thumbnailer](https://github.com/craftablescience/vtf-thumbnailer)*\n\n## Features\n\n- Create Mode\n  - Directly convert animated images (APNG/GIF)\n  - Directly convert floating point images (EXR/HDR)\n  - Kaiser mipmap filtering selected by default\n  - Create non-power of two textures\n  - Create console VTFs\n    - Xbox 360\n    - PlayStation 3\n  - Supports new Strata Source VTF version\n    - New formats (BC7 / BC6H)\n    - New CPU compression (Deflate / Zstandard)\n- Edit Mode\n  - Edit existing VTFs\n  - Change VTF version, format, platform, etc.\n  - Recompute mipmaps, thumbnail, reflectivity vector\n  - Add, overwrite, or remove resources\n- Info Mode\n  - Print out all VTF metadata and non-image resource data\n  - Parse compiled particle sheet resource to plaintext\n  - Print data as colored human-readable text or as plain KeyValues\n- More to come!\n\n\u003cimg src=\"https://github.com/craftablescience/MareTF/blob/mane/res/olive_shade_wink.png?raw=true\" alt=\"The same olive-skinned and red-haired kirin as from the MareTF logo, winking.\" /\u003e\n\n## Example Usage\n\n```shell\nmaretf create input.png --version 7.4 --format UNCHANGED --filter KAISER\n```\n- Creates a new VTF from `input.png`...\n- ...with version 7.4 (supported by most Source engine games)...\n- ...with the same format as the input file...\n- ...and mipmaps will be computed with the Kaiser filtering algorithm.\n\n---\n\n```shell\nmaretf edit input.360.vtf -o input.vtf --set-platform PC --set-version 7.6 --recompute-mips\n```\n- Edits an existing VTF at `input.360.vtf`...\n- ...sets the output file to `input.vtf`...\n- ...sets the VTF platform to PC...\n- ...changes the version to 7.6 (supported by Strata Source engine games)...\n- ...and mipmaps will be recomputed with the default filtering algorithm (Kaiser).\n\n---\n\n```shell\nmaretf info input.vtf\n```\n- Prints the VTF's metadata to the console.\n\n## Credits\n\n- Assets:\n  - The kirin in the program logo (Olive Shade) was created with [pony.town](https://pony.town)'s character creator\n- CLI Dependencies:\n  - [argparse](https://github.com/p-ranav/argparse)\n  - [sourcepp](https://github.com/craftablescience/sourcepp)\n\n## Full Help Text\n\n```\nUsage: maretf [--help] [--output PATH] [-y] [--no-pretty-formatting] [--version X.Y] [--format IMAGE_FORMAT] [--filter R\nESIZE_FILTER] [--flag FLAG]... [--no-automatic-transparency-flags] [--no-mips] [--no-thumbnail] [--platform PLATFORM] [-\n-compression-method COMPRESSION_METHOD] [--compression-level LEVEL] [--start-frame FRAME_INDEX] [--bumpmap-scale SCALE]\n[--width-resize-method RESIZE_METHOD] [--height-resize-method RESIZE_METHOD] [--set-version X.Y] [--set-format IMAGE_FOR\nMAT] [--set-width WIDTH] [--set-height HEIGHT] [--edit-filter RESIZE_FILTER] [--add-flag FLAG]... [--remove-flag FLAG]..\n. [--recompute-transparency-flags] [--recompute-mips] [--remove-mips] [--recompute-thumbnail] [--remove-thumbnail] [--re\ncompute-reflectivity] [--set-platform PLATFORM] [--set-compression-method COMPRESSION_METHOD] [--set-compression-level L\nEVEL] [--set-start-frame FRAME_INDEX] [--set-bumpmap-scale SCALE] [--set-particle-sheet-resource PATH] [--remove-particl\ne-sheet-resource] [--set-crc-resource CRC] [--remove-crc-resource] [--set-lod-resource U.V] [--remove-lod-resource] [--s\net-tso-resource COMBINED_FLAGS] [--remove-tso-resource] [--set-kvd-resource PATH] [--remove-kvd-resource] [--info-output\n-mode VAR] MODE PATH\n\nPositional arguments:\n  MODE                                         The mode to run the program in. This determines what arguments are proces\nsed. Valid options: \"create\", \"edit\", and \"info\". [required]\n  PATH                                         The path to the input file. [required]\n\nOptional arguments:\n  -h, --help                                   shows help message and exits\n  -o, --output PATH                            The path to the output file, if the current mode outputs a file.\n  -y                                           Automatically say yes to any prompts.\n  --no-pretty-formatting                       Disables printing ANSI color codes and emojis.\n\n\"create\" mode (detailed usage):\n  -v, --version                                Major and minor version, split by a period. Ignored if platform is specif\nied as anything other than PC. [nargs=0..1] [default: \"7.4\"]\n  -f, --format                                 Output format. [nargs=0..1] [default: \"DEFAULT\"]\n  -r, --filter                                 The resize filter used to generate mipmaps and when resizing the base tex\nture to match a power of 2 (if necessary). [nargs=0..1] [default: \"KAISER\"]\n  --flag FLAG                                  Extra flags to add. ENVMAP, ONE_BIT_ALPHA, MULTI_BIT_ALPHA, NO_MIP, and N\nO_LOD flags are applied automatically based on the VTF properties. [may be repeated]\n  --no-automatic-transparency-flags            Disable adding ONE_BIT_ALPHA and MULTI_BIT_ALPHA flags by default dependi\nng on the output image format.\n  --no-mips                                    Disable mipmap generation.\n  --no-thumbnail                               Disable thumbnail generation.\n  -p, --platform                               Set the platform (PC/console) to build for. [nargs=0..1] [default: \"PC\"]\n  -m, --compression-method                     Set the compression method. Deflate is supported on all Strata Source gam\nes for VTF v7.6. Zstd is supported on all Strata Source games for VTF v7.6 besides Portal: Revolution. LZMA is supported\n for console VTFs. [nargs=0..1] [default: \"ZSTD\"]\n  -c, --compression-level                      Set the compression level. -1 to 9 for Deflate and LZMA, -1 to 22 for Zst\nd. [nargs=0..1] [default: 6]\n  --start-frame                                The start frame used in animations, counting from zero. Ignored when crea\nting console VTFs. [nargs=0..1] [default: 0]\n  --bumpmap-scale                              The bumpmap scale. It can have a decimal point. [nargs=0..1] [default: 1]\n\n  --width-resize-method                        How to resize the texture's width to match a power of 2. [nargs=0..1] [de\nfault: \"BIGGER\"]\n  --height-resize-method                       How to resize the texture's height to match a power of 2. [nargs=0..1] [d\nefault: \"BIGGER\"]\n\n\"edit\" mode (detailed usage):\n  --set-version X.Y                            Set the version.\n  --set-format IMAGE_FORMAT                    Set the image format. Keep in mind converting to a lossy format like DXTn\n means irreversibly losing information. Recommended to pair this with the recompute transparency flags argument.\n  --set-width WIDTH                            Set the lowest mip's width. Ignores power of two resize rule.\n  --set-height HEIGHT                          Set the lowest mip's height. Ignores power of two resize rule.\n  --edit-filter                                Use this resize filter for all resizing operations that accept a filter p\narameter, including mipmap generation. [nargs=0..1] [default: \"KAISER\"]\n  --add-flag FLAG                              Flags to add. ENVMAP and NO_MIP flags are ignored. [may be repeated]\n  --remove-flag FLAG                           Flags to remove. ENVMAP and NO_MIP flags are ignored. [may be repeated]\n  --recompute-transparency-flags               Recomputes transparency flags based on the image format.\n  --recompute-mips                             Recomputes mipmaps with the specified edit resize filter.\n  --remove-mips                                Remove mipmaps. If recompute mips is specified, this argument is ignored.\n\n  --recompute-thumbnail                        Recompute the thumbnail.\n  --remove-thumbnail                           Remove the thumbnail. If recompute thumbnail is specified, this argument\nis ignored.\n  --recompute-reflectivity                     Recompute the reflectivity vector.\n  --set-platform PLATFORM                      Set the VTF platform.\n  --set-compression-method COMPRESSION_METHOD  Set the compression method. Deflate is supported on all Strata Source gam\nes for VTF v7.6. Zstd is supported on all Strata Source games for VTF v7.6 besides Portal: Revolution. LZMA is supported\n for console VTFs.\n  --set-compression-level LEVEL                Set the compression level. -1 to 9 for Deflate and LZMA, -1 to 22 for Zst\nd.\n  --set-start-frame FRAME_INDEX                Set the start frame.\n  --set-bumpmap-scale SCALE                    Set the bumpmap scale. It can have a decimal point.\n  --set-particle-sheet-resource PATH           Set the particle sheet resource. Path should point to a valid particle sh\neet file.\n  --remove-particle-sheet-resource             Remove the particle sheet resource. If set particle sheet resource is spe\ncified, this argument is ignored.\n  --set-crc-resource CRC                       Set the CRC resource.\n  --remove-crc-resource                        Remove the CRC resource. If set CRC resource is specified, this argument\nis ignored.\n  --set-lod-resource U.V                       Set the LOD resource. U and V values should be separated by a period.\n  --remove-lod-resource                        Remove the LOD resource. If set LOD resource is specified, this argument\nis ignored.\n  --set-tso-resource COMBINED_FLAGS            Set the TSO (extended flags) resource. You'll have to do the math to comb\nine the flags into one integer yourself.\n  --remove-tso-resource                        Remove the TSO (extended flags) resource. If set TSO resource is specifie\nd, this argument is ignored.\n  --set-kvd-resource PATH                      Set the nonstandard KVD (KeyValues Data) resource. Path should point to a\n text file.\n  --remove-kvd-resource                        Remove the nonstandard KVD (KeyValues Data) resource. If set KVD resource\n is specified, this argument is ignored.\n\n\"info\" mode (detailed usage):\n  --info-output-mode                           The mode to output information in. Can be \"human\" or \"kv1\". [nargs=0..1]\n[default: \"human\"]\n\nEnumerations:\n\nIMAGE_FORMAT\n • UNCHANGED\n • DEFAULT\n • RGBA8888\n • ABGR8888\n • RGB888\n • BGR888\n • RGB565\n • I8\n • IA88\n • P8\n • A8\n • RGB888_BLUESCREEN\n • BGR888_BLUESCREEN\n • ARGB8888\n • BGRA8888\n • DXT1\n • DXT3\n • DXT5\n • BGRX8888\n • BGR565\n • BGRX5551\n • BGRA4444\n • DXT1_ONE_BIT_ALPHA\n • BGRA5551\n • UV88\n • UVWQ8888\n • RGBA16161616F\n • RGBA16161616\n • UVLX8888\n • R32F\n • RGB323232F\n • RGBA32323232F\n • RG1616F\n • RG3232F\n • RGBX8888\n • EMPTY\n • ATI2N\n • ATI1N\n • RGBA1010102\n • BGRA1010102\n • R16F\n • CONSOLE_BGRX8888_LINEAR\n • CONSOLE_RGBA8888_LINEAR\n • CONSOLE_ABGR8888_LINEAR\n • CONSOLE_ARGB8888_LINEAR\n • CONSOLE_BGRA8888_LINEAR\n • CONSOLE_RGB888_LINEAR\n • CONSOLE_BGR888_LINEAR\n • CONSOLE_BGRX5551_LINEAR\n • CONSOLE_I8_LINEAR\n • CONSOLE_RGBA16161616_LINEAR\n • CONSOLE_BGRX8888_LE\n • CONSOLE_BGRA8888_LE\n • R8\n • BC7\n • BC6H\n\nRESIZE_FILTER\n • DEFAULT\n • BOX\n • BILINEAR\n • CUBIC_BSPLINE\n • CATMULL_ROM\n • MITCHELL\n • POINT_SAMPLE\n • KAISER\n\nFLAG\n • POINT_SAMPLE\n • TRILINEAR\n • CLAMP_S\n • CLAMP_T\n • ANISOTROPIC\n • HINT_DXT5\n • PWL_CORRECTED\n • NORMAL\n • NO_MIP\n • NO_LOD\n • LOAD_ALL_MIPS\n • PROCEDURAL\n • ONE_BIT_ALPHA\n • MULTI_BIT_ALPHA\n • ENVMAP\n • RENDERTARGET\n • DEPTH_RENDERTARGET\n • NO_DEBUG_OVERRIDE\n • SINGLE_COPY\n • SRGB\n • DEFAULT_POOL\n • COMBINED\n • ASYNC_DOWNLOAD\n • NO_DEPTH_BUFFER\n • SKIP_INITIAL_DOWNLOAD\n • CLAMP_U\n • VERTEX_TEXTURE\n • XBOX_PRESWIZZLED\n • SSBUMP\n • XBOX_CACHEABLE\n • LOAD_MOST_MIPS\n • BORDER\n • YCOCG\n • ASYNC_SKIP_INITIAL_LOW_RES\n\nPLATFORM\n • PC\n • PS3_PORTAL2\n • PS3_ORANGEBOX\n • X360\n\nCOMPRESSION_METHOD\n • DEFLATE\n • ZSTD\n • CONSOLE_LZMA\n\nRESIZE_METHOD\n • NONE\n • BIGGER\n • SMALLER\n • NEAREST\n```\n\n\u003cimg src=\"https://github.com/craftablescience/MareTF/blob/mane/res/olive_shade_sleep.png?raw=true\" alt=\"The same olive-skinned and red-haired kirin as from the MareTF logo, sleeping.\" /\u003e\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcraftablescience%2Fmaretf","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fcraftablescience%2Fmaretf","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcraftablescience%2Fmaretf/lists"}