{"id":21459144,"url":"https://github.com/awkwardpolygons/better-texture-array","last_synced_at":"2025-07-15T01:31:49.300Z","repository":{"id":112295757,"uuid":"335187977","full_name":"awkwardpolygons/better-texture-array","owner":"awkwardpolygons","description":"Adds support for saving, viewing and editing TextureArray and Texture3D in Godot 3","archived":false,"fork":false,"pushed_at":"2021-04-06T12:01:43.000Z","size":525,"stargazers_count":21,"open_issues_count":0,"forks_count":0,"subscribers_count":2,"default_branch":"master","last_synced_at":"2024-05-28T14:14:46.004Z","etag":null,"topics":["editing-texturearray","godot","godot-addon","godot-engine","godot-plugin","texture3d","texturearray","tool","ui"],"latest_commit_sha":null,"homepage":"","language":"GDScript","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/awkwardpolygons.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null}},"created_at":"2021-02-02T06:13:57.000Z","updated_at":"2024-03-17T16:31:50.000Z","dependencies_parsed_at":"2023-05-12T17:15:35.885Z","dependency_job_id":null,"html_url":"https://github.com/awkwardpolygons/better-texture-array","commit_stats":{"total_commits":49,"total_committers":1,"mean_commits":49.0,"dds":0.0,"last_synced_commit":"3fc4b572f4ce93046469535e6fddc7c14fd4d57a"},"previous_names":[],"tags_count":1,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/awkwardpolygons%2Fbetter-texture-array","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/awkwardpolygons%2Fbetter-texture-array/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/awkwardpolygons%2Fbetter-texture-array/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/awkwardpolygons%2Fbetter-texture-array/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/awkwardpolygons","download_url":"https://codeload.github.com/awkwardpolygons/better-texture-array/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":226011857,"owners_count":17559601,"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":["editing-texturearray","godot","godot-addon","godot-engine","godot-plugin","texture3d","texturearray","tool","ui"],"created_at":"2024-11-23T06:26:55.282Z","updated_at":"2024-11-23T06:26:55.784Z","avatar_url":"https://github.com/awkwardpolygons.png","language":"GDScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"[screenshot]: https://raw.githubusercontent.com/awkwardpolygons/better-texture-array/master/screenshots/screenshot.png \"BetterTextureArray screenshot\"\n# BetterTextureArray\nAdds support for saving, viewing and editing TextureArray and Texture3D in Godot 3.\n\n![][screenshot]\n\n# Explanation\nGodot 3.x has very buggy behaviour when attempting to save a TextureLayered (TextureArray and Texture3D), it also has poor support for TextureLayered (TextureArray and Texture3D) in the editor.\n\nAttempting to save TextureArray and Texture3D inside the scene or as `.res` or `.tres`, produces errors.\nThis plugin adds support for saving TextureArray and Texture3D as `.texarr` and `.tex3d` files both in the editor and from code.\nThese are the native Godot importer formats for TextureArray and Texture3D.\n\nThis plugin also adds UI so that you can create, view, edit and, save TextureArray and Texture3D in the editor.\nThe editor UI allows you to edit individual layers, and each RGBA channel on a layer as well. This is very useful when trying to merge multiple PBR material textures into one file.\n\n## Extras\nThe plugin also provides a custom importer for TextureArray and Texture3D.\n\nThe builtin importer requires a large single image with each of the layers as a tile in a grid.\n\nWith the BetterTextureArray importer, you can use a simple `JSON` build format to create TextureArray and Texture3D from a list of other image files.\n\n# Guide\n## Installation\n1. To install copy the `better-texture-array` from the `addons` folder to your project's `addons` folder.\n2. Open your project in the edtior and choose Project Settings... -\u003e Plugins from the Project menu and enable BetterTextureArray.\n\n## Editor\n1. To create a new TextureArray or Texture3D click the create new resource icon in the inspector.\n2. Then click the **create** button in the new resource to set the width, height and depth (the number of layers), and choose the image format.\n3. Click the **show** toggle to show or hide the layers.\n4. You should have several new white layers.\n5. **Double click** a layer to set an image for that layer.\n6. Select a channel from the channel buttons to view only that channel for the layers.\n7. With a channel selected, **double click** a layer to set data for that channel only. The file chooser in channel mode will include a drop down to choose the source channel from your selected file.\n8. You can select a layer by **clicking** on it. The index of the selected layer will be set in the metadata of the TextureArray or Texture3D as `layer_selected` and the `changed` signal will be emitted. This is useful if you want to interact with this UI in another editor plugin.\n9. When saving the TextureArray or Texture3D from the Editor, you must choose to save as either a `.texarr` or `.tex3d` file, **DO NOT** save as `.res` or `.tres`, these will error. Also **DO NOT** save the TextureArray or Texture3D in your scene, this will error and bloat your scene file.\n\n## Importer\nCreate a `JSON` file with a `.ta-builder` file extension for TextureArray and `.t3d-builder` extension for Texture3D.\nSelect the file from the importer in the editor to customize import properties.\n\nThe `JSON` object must contain a `size` array property, and a `layers` array property.\n\nThe `size` property must have two values for the width and height the layers.\n\nThe `layers` will contain URLs to each image file or resource to use for each layer. You can use a `res://` or a `file://` reference.\n\nA simple example file:\n```json\n{\n  \"size\": [1024, 1024],\n  \"layers\": [\n    \"res://assets/textures/rock1.jpg\",\n    \"res://assets/textures/rock2.jpg\",\n    \"res://assets/textures/rock3.jpg\",\n    \"file://home/user/assets/snow1.jpg\",\n  ],\n}\n```\n\nThe `layers` property can also contain a more complex blending object instead of a simple URL if you want to mix channels from multiple sources into one layer.\n\nA more complex channel mixing example:\n```json\n{\n  \"size\": [1024, 1024],\n  \"layers\": [\n    {\n      \"rgb\": [\"res://assets/textures/albedo.jpg\", \"rgb\"],\n      \"a\": [\"res://assets/textures/bump.jpg\", \"r\"],\n    },\n  ],\n}\n```\n\nThe blending object property keys are the target channels, represented by `r`, `g`, `b`, and `a`, on their own or in combination.\n\nThe blending object property value is an array of two values, the first is the source file or resource, the second is string with the source channels or channel, again represented by `r`, `g`, `b`, and `a`.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fawkwardpolygons%2Fbetter-texture-array","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fawkwardpolygons%2Fbetter-texture-array","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fawkwardpolygons%2Fbetter-texture-array/lists"}