{"adoption": {"forks": 167, "observed_at": "2026-08-28T04:03:46.424522+00:00", "stars": 1149}, "canonical_url": "https://ross.abutalabs.com/products/softglrender", "card": {"archived": false, "artifact_type": "library", "description": "Tiny C++ Software Renderer / Rasterizer, and implements OpenGL and Vulkan renderers for comparison", "domain": ["graphics", "computer-vision", "developer-tools", "tutorials"], "enriched": true, "function": ["graphics", "simulation", "gui", "developer-tools"], "health_score": 76, "homepage": null, "language": "C++", "license": "MIT", "license_family": "permissive", "maturity": "active", "member_repos": ["keith2018/SoftGLRender"], "name": "keith2018/SoftGLRender", "platform": ["cpp", "cross-platform"], "pushed_at": "2026-07-20T02:19:43+00:00", "repo": "keith2018/SoftGLRender", "stars": 1149, "tags": ["software-renderer", "rasterizer", "opengl", "vulkan", "pbr", "spirv", "gltf", "imgui", "rendering-pipeline", "shader-emulation", "msaa", "simd", "multithreading", "learning-project", "desktop", "gpu"], "topics": ["3d-graphics", "graphics", "rasterization", "renderer", "rendering-pipeline", "software-renderer", "rendering", "soft-renderer", "pbr", "rendering-engine", "shader", "opengl", "3d", "computer-graphics", "cpp", "rasterizer", "software-rendering", "tutorial", "spirv", "vulkan"], "urls": [], "use_cases": ["learn how the GPU rendering pipeline works step by step", "implement a software rasterizer in C++ from scratch", "compare software rendering against OpenGL and Vulkan implementations", "study PBR and IBL shading with GLTF models", "understand texture mapping, mipmaps, and filtering modes", "explore SIMD and multithreaded rasterization optimization", "use as a tutorial codebase for computer graphics courses"], "what_it_is": "A tiny C++ software renderer/rasterizer that emulates the GPU rendering pipeline (vertex/fragment shading, rasterization, depth testing, blending) in software, alongside real OpenGL and Vulkan renderer implementations that can be switched at runtime. It is designed as an educational starting point for learning modern graphics programming, with a viewer supporting PBR/IBL shading, shadow mapping, and MSAA.", "when_to_avoid": ["you need a production-grade, high-performance rendering engine for shipping applications", "you require a full-featured engine with asset pipelines, physics, or scene management", "you need GPU-accelerated rendering at scale rather than an educational implementation"], "when_to_choose": ["you want readable, small-scale source code to learn graphics pipeline internals", "you need a reference implementation comparing software, OpenGL, and Vulkan rendering side by side", "you are teaching or self-studying computer graphics concepts like rasterization, depth testing, and shader emulation"]}, "data_as_of": "2026-08-30T08:39:29.467469+00:00", "members": [{"path": "/products/softglrender", "repo": "keith2018/SoftGLRender", "role": "main", "score": 74}], "provenance": {"archived": {"kind": "observed", "observed_at": "2026-08-28T04:03:46.424522+00:00", "source": "github"}, "artifact_type": {"confidence": null, "enriched_at": "2026-08-30T06:33:45.291147+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "7a89236afff7d120e5fe21720735272c1eef811b7ce9d33b0a41df04786dde69", "fetched_at": "2026-08-28T04:03:46.424522+00:00", "kind": "readme", "missing": false, "url": "https://github.com/keith2018/SoftGLRender"}], "taxonomy_version": 1}, "description": {"kind": "observed", "observed_at": "2026-08-28T04:03:46.424522+00:00", "source": "github"}, "domain": {"confidence": null, "enriched_at": "2026-08-30T06:33:45.291147+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "7a89236afff7d120e5fe21720735272c1eef811b7ce9d33b0a41df04786dde69", "fetched_at": "2026-08-28T04:03:46.424522+00:00", "kind": "readme", "missing": false, "url": "https://github.com/keith2018/SoftGLRender"}], "taxonomy_version": 1}, "enriched": {"inputs": [], "kind": "computed", "method": "enrichment_status"}, "function": {"confidence": null, "enriched_at": "2026-08-30T06:33:45.291147+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "7a89236afff7d120e5fe21720735272c1eef811b7ce9d33b0a41df04786dde69", "fetched_at": "2026-08-28T04:03:46.424522+00:00", "kind": "readme", "missing": false, "url": "https://github.com/keith2018/SoftGLRender"}], "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:03:46.424522+00:00", "source": "github"}, "language": {"kind": "observed", "observed_at": "2026-08-28T04:03:46.424522+00:00", "source": "github"}, "license": {"kind": "observed", "observed_at": "2026-08-28T04:03:46.424522+00:00", "source": "github"}, "license_family": {"inputs": ["license"], "kind": "computed", "method": "license_family"}, "maturity": {"confidence": null, "enriched_at": "2026-08-30T06:33:45.291147+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "7a89236afff7d120e5fe21720735272c1eef811b7ce9d33b0a41df04786dde69", "fetched_at": "2026-08-28T04:03:46.424522+00:00", "kind": "readme", "missing": false, "url": "https://github.com/keith2018/SoftGLRender"}], "taxonomy_version": 1}, "member_repos": {"kind": "observed", "observed_at": "2026-08-28T04:03:46.424522+00:00", "source": "github"}, "name": {"kind": "observed", "observed_at": "2026-08-28T04:03:46.424522+00:00", "source": "github"}, "platform": {"confidence": null, "enriched_at": "2026-08-30T06:33:45.291147+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "7a89236afff7d120e5fe21720735272c1eef811b7ce9d33b0a41df04786dde69", "fetched_at": "2026-08-28T04:03:46.424522+00:00", "kind": "readme", "missing": false, "url": "https://github.com/keith2018/SoftGLRender"}], "taxonomy_version": 1}, "pushed_at": {"kind": "observed", "observed_at": "2026-08-28T04:03:46.424522+00:00", "source": "github"}, "repo": {"kind": "observed", "observed_at": "2026-08-28T04:03:46.424522+00:00", "source": "github"}, "stars": {"kind": "observed", "observed_at": "2026-08-28T04:03:46.424522+00:00", "source": "github"}, "tags": {"confidence": null, "enriched_at": "2026-08-30T06:33:45.291147+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "7a89236afff7d120e5fe21720735272c1eef811b7ce9d33b0a41df04786dde69", "fetched_at": "2026-08-28T04:03:46.424522+00:00", "kind": "readme", "missing": false, "url": "https://github.com/keith2018/SoftGLRender"}], "taxonomy_version": 1}, "topics": {"kind": "observed", "observed_at": "2026-08-28T04:03:46.424522+00:00", "source": "github"}, "urls": {"kind": "observed", "observed_at": "2026-08-28T04:03:46.424522+00:00", "source": "github"}, "use_cases": {"confidence": null, "enriched_at": "2026-08-30T06:33:45.291147+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "7a89236afff7d120e5fe21720735272c1eef811b7ce9d33b0a41df04786dde69", "fetched_at": "2026-08-28T04:03:46.424522+00:00", "kind": "readme", "missing": false, "url": "https://github.com/keith2018/SoftGLRender"}], "taxonomy_version": 1}, "what_it_is": {"confidence": null, "enriched_at": "2026-08-30T06:33:45.291147+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "7a89236afff7d120e5fe21720735272c1eef811b7ce9d33b0a41df04786dde69", "fetched_at": "2026-08-28T04:03:46.424522+00:00", "kind": "readme", "missing": false, "url": "https://github.com/keith2018/SoftGLRender"}], "taxonomy_version": 1}, "when_to_avoid": {"confidence": null, "enriched_at": "2026-08-30T06:33:45.291147+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "7a89236afff7d120e5fe21720735272c1eef811b7ce9d33b0a41df04786dde69", "fetched_at": "2026-08-28T04:03:46.424522+00:00", "kind": "readme", "missing": false, "url": "https://github.com/keith2018/SoftGLRender"}], "taxonomy_version": 1}, "when_to_choose": {"confidence": null, "enriched_at": "2026-08-30T06:33:45.291147+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "7a89236afff7d120e5fe21720735272c1eef811b7ce9d33b0a41df04786dde69", "fetched_at": "2026-08-28T04:03:46.424522+00:00", "kind": "readme", "missing": false, "url": "https://github.com/keith2018/SoftGLRender"}], "taxonomy_version": 1}}, "score": {"components": {"activity": 93, "longevity": 100, "rhythm": 35}, "computed_at": "2026-09-03T02:20:16.233290+00:00", "flags": ["no_releases"], "formula": "round(0.45*activity + 0.35*rhythm + 0.20*longevity); archived -> min(score, 10)", "inputs": {"age_days": 1573, "days_push": 45, "days_rel": null, "gap_med": null, "n_releases_24m": 0}, "score": 74, "version": 2}, "staleness": {"enrichment_outdated": false, "low_confidence": false, "scrape_days": 9, "stale_scrape": false}}