{"id":28497627,"url":"https://github.com/antzgames/godot-compatibility-decal-node","last_synced_at":"2026-02-06T07:06:38.200Z","repository":{"id":297551259,"uuid":"992960761","full_name":"antzGames/Godot-Compatibility-Decal-Node","owner":"antzGames","description":"This plugin provides both instanced and non-instanced decal node functionality for the Compatibility Renderer in Godot 4.5, packaged as an easy-to-use plugin.","archived":false,"fork":false,"pushed_at":"2025-11-08T02:54:47.000Z","size":15026,"stargazers_count":19,"open_issues_count":0,"forks_count":2,"subscribers_count":2,"default_branch":"main","last_synced_at":"2025-11-08T03:27:29.098Z","etag":null,"topics":[],"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/antzGames.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,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2025-05-30T01:39:20.000Z","updated_at":"2025-11-08T02:54:51.000Z","dependencies_parsed_at":"2025-07-25T20:43:43.224Z","dependency_job_id":"f2ecaca2-500b-4ffb-a067-33292741e2b4","html_url":"https://github.com/antzGames/Godot-Compatibility-Decal-Node","commit_stats":null,"previous_names":["antzgames/godot-compatibility-decal-node"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/antzGames/Godot-Compatibility-Decal-Node","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/antzGames%2FGodot-Compatibility-Decal-Node","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/antzGames%2FGodot-Compatibility-Decal-Node/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/antzGames%2FGodot-Compatibility-Decal-Node/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/antzGames%2FGodot-Compatibility-Decal-Node/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/antzGames","download_url":"https://codeload.github.com/antzGames/Godot-Compatibility-Decal-Node/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/antzGames%2FGodot-Compatibility-Decal-Node/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":29153899,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-02-06T02:39:25.012Z","status":"ssl_error","status_checked_at":"2026-02-06T02:37:22.784Z","response_time":59,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.5:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"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-06-08T13:06:28.397Z","updated_at":"2026-02-06T07:06:38.194Z","avatar_url":"https://github.com/antzGames.png","language":"GDScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Compatibility Decal Node Plugin for Godot 4.5\nThis plugin provides both instanced and non-instanced decal node functionality for the Compatibility Renderer in Godot 4.5, packaged as an easy-to-use plugin.\n\nIncluded Demo scene:\n\n![stencil00](https://github.com/user-attachments/assets/d6378894-f7c8-4d6e-b886-b40d4e918829)\n\n1000 instanced decal bullet holes:\n\n![stencil0](https://github.com/user-attachments/assets/ed0e4cd9-2a2e-4e97-bb2a-eb97605ce32e)\n\n## YouTube Tutorial and Examples\n\nSee the first tutorial at: https://youtu.be/8_vL1B_J56I\n\nSee the demos in action and more information: https://youtu.be/8XnH3mT1C-c\n\nExample game using this plugin: https://antzgames.itch.io/little-mage\n\n![example1](https://github.com/user-attachments/assets/31d0e9cb-f94a-4bd3-972d-3032c1ed8136)\n\n## Limitations\n\n- No support for normal maps, ambient occlusion, roughness, metallic, or emission textures.\n\n- Decals are unshaded (no lighting interaction).\n\n- No support for fading curves (start/end with curvature). Only basic start, end, and power levels are available and **only fades upward**.\n\nThe nodes do not work with the Forward+ or Mobile renderers. Use Godot's built-in `Decal` node when targeting those renderers.\n\nTested on Godot 4.4.1 to 4.5.1.\n\n## Features\n- Projects decals onto uneven surfaces (e.g., terrain or complex geometry).\n- Stencil support, which allows you to exclude specific geometry from recieving decal (such as the player).\n- Decals can be projected onto both floors and walls.\n- Adds two new nodes to Godot:\n  - `DecalCompatibility` extends MeshInstance3D, which should be used when only one decal is needed.\n  - `DecalInstanceCompatibility` extends MultiMeshInstance3D, which should be used when you need large amounts of the same decal, like bullet holes.\n- No need to modify shaders—fully usable via the Godot editor Inspector.\n- Full transparency support.\n- Easy fading controls with start, end, and power parameters.\n- Individual decal alpha control when using the `DecalInstanceCompatibility` node.\n- Fully documented code.\n- Includes two demo scenes:\n  - `Demo.tscn` shows moving, rotating, fading, distance culling, transparency, color modulating, instancing decal examples.\n  - `Instanced.tscn` shows 1000 instanced bullets rendering with just **ONE** draw call.\n\n## Installing\n\n**Option 1**: Use as a project template:\n- Download this repository as a ZIP file.\n- Extract the ZIP file.\n- Import the project from the Godot's project selection screen.\n\n**Option 2**: Add plugin to existing project:\n- Download this repository as a ZIP file.\n- Extract the ZIP file.\n- Copy the `addons` directory from the extracted ZIP file into your Godot project's `res://` filesystem.\n- Go to `Project \u003e Project Settings \u003e Plugins` and enable `Decal Compatibility Nodes` plugin as shown below.\n\n![4](https://github.com/user-attachments/assets/8ed3637e-0325-4e5a-adcc-efd98d95bec3)\n\n## New Nodes\n\n### DecalCompatibility\n\nUse this node if you just need one or two decals.\n\n![2](https://github.com/user-attachments/assets/51fead47-2c6b-4484-aaee-68eceb4aef87)\n\n### DecalInstanceCompatibility\n\nUse this node if you plan to use many copies of the same decal, such as bullet holes.  This allows thousands of decals to be drawn using one draw call. \n\n`custom_data` is enabled to control the alpha channel per instance, which allows you to control fading of individual decal instances. `custom_data.a` is reserved, but the remaining 3 floats for RGB are available to you.\n\n![1](https://github.com/user-attachments/assets/f3a42b19-b25a-406d-8861-ee7369c639ed)\n\n## Using new nodes in your projects\n\nThe new nodes are automatically added to Godot.  Just search `Decal` as shown below:\n\n![3](https://github.com/user-attachments/assets/48d924db-f160-4368-bb03-8f06fa275552)\n\n### How to use\n\nMake sure you assign a texture to the decal.  Decal nodes in scenes will have warnings until you assign a texture to it.\n\nMake sure the geometry of the decal size intersects the ground/wall geometry or else you will see nothing. Watch the tutorial video if \nunsure what this means. Video: https://youtu.be/8_vL1B_J56I\n\nBy default both projection of the decal and fading happen on the Y-AXIS, which works great on the ground.\n\nIf you need to use the decals on walls (like for the bullet holes), then you will need to rotate the decal.  It is up to you to find the normal of the wall, and rotate the decal to the proper rotation.  Watch the tutorial video if unsure what this means. Video: https://youtu.be/8_vL1B_J56I\n\n### Stencil Support \n\nIf you want specific geometry to not receive the decal projection, all you need to do is enable Stencil in the `StandardMaterial3D` of your player or any other object you don't want decals to be projected.\n\nYou set up the stencil in the editor as you see below:\n\n\u003cimg width=\"781\" height=\"551\" alt=\"stencil1\" src=\"https://github.com/user-attachments/assets/7ec173e3-f1e2-4d86-8326-5fd58c003940\" /\u003e\n\nThe demos show the result below:\n\n\u003cimg width=\"1237\" height=\"1252\" alt=\"stencil3\" src=\"https://github.com/user-attachments/assets/e9cb770b-1afc-4bb4-bb55-598400e790ed\" /\u003e\n\u003cimg width=\"2617\" height=\"918\" alt=\"stencil2\" src=\"https://github.com/user-attachments/assets/8f7618dd-b1e0-4df6-9108-bd926cc32ec2\" /\u003e\n\n## Planned Features\n\n- Flipbook animation support for animated decals.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fantzgames%2Fgodot-compatibility-decal-node","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fantzgames%2Fgodot-compatibility-decal-node","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fantzgames%2Fgodot-compatibility-decal-node/lists"}