GPU Tilemap

An asset by FabianLC
The page banner background of a mountain and forest
GPU Tilemap hero image

Quick Information

0 ratings
GPU Tilemap icon image
FabianLC
GPU Tilemap

This an alternative to the built in tilemap node for games that don't need all of it's features or need better performance when drawing a lot of tiles, the tilemap is rendered with a shader and performance depends on the resolution and the GPU, so the amount of tiles on the screen doesn't affect performance.How to use: https://github.com/MightyPrinny/godot-gputilemap/wikiFeatures:-The editor supports basic things such as undo/redo, paint, erase and has a rectangle selection tool, brushes are made selecting things on the tileset view or from the selection on the map.-Node instance generation via custom scripts.-Autotiling-Flip tiles vertically and horizontally-Import maps from Tiled exported as json with csv tile data, the importer will ask you about which layer you want to import and what tileset you want to use.-Save and load brushes from filesSave and load maps from filesNotes:-Maps are stored as ImageTexture, if you are targeting mobile and low end devices don't use maps larger than 1024x1024 tiles( 2048x2048 should be fine but I'm not sure if that's good for low end mobile phones).-Tilesets can have a maximum size of 256x256 tiles.-Unfolding the image property of the ImageTexture that stores the map crashes the editor, this is a Godot editor bug.-Only one tileset can be used on a single GPUTilemap node, this is because shaders don't support sampler2d array uniforms on GLES2.

Supported Engine Version
3.1
Version String
0.9.8
License Version
MIT
Support Level
community
Modified Date
4 years ago
Git URL
Issue URL

This is a shader based tilemap alternative, maps are stored as image textures, for now the maps are saved in the scene, but be careful, the editor crashes if you expand the image resource on the map property of a GPUTilemap node see https://github.com/godotengine/godot/issues/34482.

This does not work on old mobile GPUs with bad floating point accuracy such as the Mali 400 and Mali 450(https://www.youi.tv/mobile-gpu-floating-point-accuracy-variances/)

To use it you need an ImageTexture as a base for your map, the image data from the original image won't be modified, it will only change on the image texture resource.

The maximum map size should be 1024x1024 tiles, this is because older devices might not support bigger textures, however you can add another tilemap node if you need more.

The maximum tileset size is 256x256(65536) tiles, this should be enough in most cases.

Performance

The main benefit you get with this addon is that because the zoom level doesn't affect performance(without changing the resolution of course) it doesn't lag the editor as much as the built in tilemap node and you can show a lot of tiles on screen in-game without getting a performance hit and removes the CPU overhead.

Here's a comparison between two low end laptops, an Intel pentium 3540 and a BayTrail GPU vs an Intel i5 m540 and an Ironlake GPU (better gpu vs better cpu),the game is using the 2D stretch mode and is running at 768x720 without vsync and there are no empty tiles on the screen.

Intel pentium 3540 with BayTrail GPU.

FPS Map Type N° of maps
415 GPUTilemap 1
232 Tilemap 1
300 GPUTilemap 2
160 Tilemap 2
245 GPUTilemap 3
124 Tilemap 3

Intel i5 m450 with Ironlake GPU

FPS Map Type N° of maps
260 GPUTilemap 1
287 Tilemap 1
198 GPUTilemap 2
232 Tilemap 2
160 GPUTilemap 3
195 Tilemap 3

As you can see on BayTrail GPUTilemap is faster but on Ironlake Tilemap is faster, however at a resolution of 256x240 GPUTilemap is faster on the Intel i5 m450 because the Ironlake can handle that very easily and the Intel pentium 3540 is a slower CPU.

This an alternative to the built in tilemap node for games that don't need all of it's features or need better performance when drawing a lot of tiles, the tilemap is rendered with a shader and performance depends on the resolution and the GPU, so the amount of tiles on the screen doesn't affect performance.
How to use: https://github.com/MightyPrinny/godot-gputilemap/wiki

Features:
-The editor supports basic things such as undo/redo, paint, erase and has a rectangle selection tool, brushes are made selecting things on the tileset view or from the selection on the map.
-Node instance generation via custom scripts.
-Autotiling
-Flip tiles vertically and horizontally
-Import maps from Tiled exported as json with csv tile data, the importer will ask you about which layer you want to import and what tileset you want to use.
-Save and load brushes from files
Save and load maps from files

Notes:
-Maps are stored as ImageTexture, if you are targeting mobile and low end devices don't use maps larger than 1024x1024 tiles( 2048x2048 should be fine but I'm not sure if that's good for low end mobile phones).
-Tilesets can have a maximum size of 256x256 tiles.
-Unfolding the image property of the ImageTexture that stores the map crashes the editor, this is a Godot editor bug.
-Only one tileset can be used on a single GPUTilemap node, this is because shaders don't support sampler2d array uniforms on GLES2.

Reviews

0 ratings

Your Rating

Headline must be at least 3 characters but not more than 50
Review must be at least 5 characters but not more than 500
Please sign in to add a review

Quick Information

0 ratings
GPU Tilemap icon image
FabianLC
GPU Tilemap

This an alternative to the built in tilemap node for games that don't need all of it's features or need better performance when drawing a lot of tiles, the tilemap is rendered with a shader and performance depends on the resolution and the GPU, so the amount of tiles on the screen doesn't affect performance.How to use: https://github.com/MightyPrinny/godot-gputilemap/wikiFeatures:-The editor supports basic things such as undo/redo, paint, erase and has a rectangle selection tool, brushes are made selecting things on the tileset view or from the selection on the map.-Node instance generation via custom scripts.-Autotiling-Flip tiles vertically and horizontally-Import maps from Tiled exported as json with csv tile data, the importer will ask you about which layer you want to import and what tileset you want to use.-Save and load brushes from filesSave and load maps from filesNotes:-Maps are stored as ImageTexture, if you are targeting mobile and low end devices don't use maps larger than 1024x1024 tiles( 2048x2048 should be fine but I'm not sure if that's good for low end mobile phones).-Tilesets can have a maximum size of 256x256 tiles.-Unfolding the image property of the ImageTexture that stores the map crashes the editor, this is a Godot editor bug.-Only one tileset can be used on a single GPUTilemap node, this is because shaders don't support sampler2d array uniforms on GLES2.

Supported Engine Version
3.1
Version String
0.9.8
License Version
MIT
Support Level
community
Modified Date
4 years ago
Git URL
Issue URL

Open Source

Released under the AGPLv3 license

Plug and Play

Browse assets directly from Godot

Community Driven

Created by developers for developers