{"adoption": {"forks": 179, "observed_at": "2026-08-28T04:05:34.026385+00:00", "stars": 1771}, "canonical_url": "https://ross.abutalabs.com/products/awesomebump", "card": {"archived": false, "artifact_type": "application", "description": "AwesomeBump is a free program written using Qt library designed to generate normal, height, specular or ambient occlusion textures from a single image. Since the image processing is done in 99% on GPU  the program runs very fast and all the parameters can be changed in real time. AB was made to be a new alternative to known gimp plugin called Insane Bump. ", "domain": ["graphics", "image-processing"], "enriched": true, "function": ["image-processing", "gpu-computing", "gui"], "health_score": 20, "homepage": null, "language": "C++", "license": "GPL-3.0", "license_family": "copyleft", "maturity": "maintenance", "member_repos": ["kmkolasinski/AwesomeBump"], "name": "kmkolasinski/AwesomeBump", "platform": ["windows", "cross-platform", "cpp"], "pushed_at": "2023-01-11T05:36:43+00:00", "repo": "kmkolasinski/AwesomeBump", "stars": 1771, "tags": ["texture-generation", "normal-map", "height-map", "ambient-occlusion", "pbr-textures", "qt", "opengl", "3d-asset-pipeline", "game-development", "linux", "gpu"], "topics": [], "urls": [], "use_cases": ["generate normal maps from a single image", "convert height maps to normal maps and vice versa", "create PBR textures like roughness and metallic maps", "make seamless tiling textures", "extract ambient occlusion from an image", "free alternative to Crazy Bump for texture generation"], "what_it_is": "AwesomeBump is a free open-source desktop application built with Qt that generates normal, height, specular, ambient occlusion, metallic, and roughness textures from a single image. Image processing runs almost entirely on the GPU, enabling real-time parameter adjustments, and it serves as an alternative to Insane Bump and Crazy Bump.", "when_to_avoid": ["you need a plugin inside GIMP or Photoshop rather than a standalone app", "you require actively maintained software with recent updates", "you need batch/CLI texture processing rather than an interactive GUI"], "when_to_choose": ["you need to derive normal/height/AO/roughness maps from existing images for game or 3D art", "you want real-time GPU-accelerated texture processing", "you want a free alternative to Crazy Bump or Insane Bump"]}, "data_as_of": "2026-08-30T08:39:29.467469+00:00", "members": [{"path": "/products/awesomebump", "repo": "kmkolasinski/AwesomeBump", "role": "main", "score": 23}], "provenance": {"archived": {"kind": "observed", "observed_at": "2026-08-28T04:05:34.026385+00:00", "source": "github"}, "artifact_type": {"confidence": null, "enriched_at": "2026-08-30T03:26:00.494787+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "79311ad073bfa213f953803d90e5bb5a4c8fda65f2f7c26cc688da1613e2b875", "fetched_at": "2026-08-28T04:05:34.026385+00:00", "kind": "readme", "missing": false, "url": "https://github.com/kmkolasinski/AwesomeBump"}], "taxonomy_version": 1}, "description": {"kind": "observed", "observed_at": "2026-08-28T04:05:34.026385+00:00", "source": "github"}, "domain": {"confidence": null, "enriched_at": "2026-08-30T03:26:00.494787+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "79311ad073bfa213f953803d90e5bb5a4c8fda65f2f7c26cc688da1613e2b875", "fetched_at": "2026-08-28T04:05:34.026385+00:00", "kind": "readme", "missing": false, "url": "https://github.com/kmkolasinski/AwesomeBump"}], "taxonomy_version": 1}, "enriched": {"inputs": [], "kind": "computed", "method": "enrichment_status"}, "function": {"confidence": null, "enriched_at": "2026-08-30T03:26:00.494787+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "79311ad073bfa213f953803d90e5bb5a4c8fda65f2f7c26cc688da1613e2b875", "fetched_at": "2026-08-28T04:05:34.026385+00:00", "kind": "readme", "missing": false, "url": "https://github.com/kmkolasinski/AwesomeBump"}], "taxonomy_version": 1}, "health_score": {"inputs": ["days_since_push", "days_since_release", "archived"], "kind": "computed", "method": "health_v1"}, "homepage": {"kind": "observed", "observed_at": "2026-08-28T04:05:34.026385+00:00", "source": "github"}, "language": {"kind": "observed", "observed_at": "2026-08-28T04:05:34.026385+00:00", "source": "github"}, "license": {"kind": "observed", "observed_at": "2026-08-28T04:05:34.026385+00:00", "source": "github"}, "license_family": {"inputs": ["license"], "kind": "computed", "method": "license_family"}, "maturity": {"confidence": null, "enriched_at": "2026-08-30T03:26:00.494787+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "79311ad073bfa213f953803d90e5bb5a4c8fda65f2f7c26cc688da1613e2b875", "fetched_at": "2026-08-28T04:05:34.026385+00:00", "kind": "readme", "missing": false, "url": "https://github.com/kmkolasinski/AwesomeBump"}], "taxonomy_version": 1}, "member_repos": {"kind": "observed", "observed_at": "2026-08-28T04:05:34.026385+00:00", "source": "github"}, "name": {"kind": "observed", "observed_at": "2026-08-28T04:05:34.026385+00:00", "source": "github"}, "platform": {"confidence": null, "enriched_at": "2026-08-30T03:26:00.494787+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "79311ad073bfa213f953803d90e5bb5a4c8fda65f2f7c26cc688da1613e2b875", "fetched_at": "2026-08-28T04:05:34.026385+00:00", "kind": "readme", "missing": false, "url": "https://github.com/kmkolasinski/AwesomeBump"}], "taxonomy_version": 1}, "pushed_at": {"kind": "observed", "observed_at": "2026-08-28T04:05:34.026385+00:00", "source": "github"}, "repo": {"kind": "observed", "observed_at": "2026-08-28T04:05:34.026385+00:00", "source": "github"}, "stars": {"kind": "observed", "observed_at": "2026-08-28T04:05:34.026385+00:00", "source": "github"}, "tags": {"confidence": null, "enriched_at": "2026-08-30T03:26:00.494787+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "79311ad073bfa213f953803d90e5bb5a4c8fda65f2f7c26cc688da1613e2b875", "fetched_at": "2026-08-28T04:05:34.026385+00:00", "kind": "readme", "missing": false, "url": "https://github.com/kmkolasinski/AwesomeBump"}], "taxonomy_version": 1}, "topics": {"kind": "observed", "observed_at": "2026-08-28T04:05:34.026385+00:00", "source": "github"}, "urls": {"kind": "observed", "observed_at": "2026-08-28T04:05:34.026385+00:00", "source": "github"}, "use_cases": {"confidence": null, "enriched_at": "2026-08-30T03:26:00.494787+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "79311ad073bfa213f953803d90e5bb5a4c8fda65f2f7c26cc688da1613e2b875", "fetched_at": "2026-08-28T04:05:34.026385+00:00", "kind": "readme", "missing": false, "url": "https://github.com/kmkolasinski/AwesomeBump"}], "taxonomy_version": 1}, "what_it_is": {"confidence": null, "enriched_at": "2026-08-30T03:26:00.494787+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "79311ad073bfa213f953803d90e5bb5a4c8fda65f2f7c26cc688da1613e2b875", "fetched_at": "2026-08-28T04:05:34.026385+00:00", "kind": "readme", "missing": false, "url": "https://github.com/kmkolasinski/AwesomeBump"}], "taxonomy_version": 1}, "when_to_avoid": {"confidence": null, "enriched_at": "2026-08-30T03:26:00.494787+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "79311ad073bfa213f953803d90e5bb5a4c8fda65f2f7c26cc688da1613e2b875", "fetched_at": "2026-08-28T04:05:34.026385+00:00", "kind": "readme", "missing": false, "url": "https://github.com/kmkolasinski/AwesomeBump"}], "taxonomy_version": 1}, "when_to_choose": {"confidence": null, "enriched_at": "2026-08-30T03:26:00.494787+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "79311ad073bfa213f953803d90e5bb5a4c8fda65f2f7c26cc688da1613e2b875", "fetched_at": "2026-08-28T04:05:34.026385+00:00", "kind": "readme", "missing": false, "url": "https://github.com/kmkolasinski/AwesomeBump"}], "taxonomy_version": 1}}, "score": {"components": {"activity": 0, "longevity": 100, "rhythm": 8}, "computed_at": "2026-09-03T02:20:16.233290+00:00", "flags": [], "formula": "round(0.45*activity + 0.35*rhythm + 0.20*longevity); archived -> min(score, 10)", "inputs": {"age_days": 4284, "days_push": 1330, "days_rel": null, "gap_med": null, "n_releases_24m": 0}, "score": 23, "version": 2}, "staleness": {"enrichment_outdated": false, "low_confidence": false, "scrape_days": 9, "stale_scrape": false}}