{"id":21973780,"url":"https://github.com/davidedc/minimal-2d-js-software-renderer","last_synced_at":"2026-04-29T20:02:53.832Z","repository":{"id":262527039,"uuid":"886969072","full_name":"davidedc/Minimal-2D-Js-Software-Renderer","owner":"davidedc","description":"a very simple js 2d software renderer","archived":false,"fork":false,"pushed_at":"2025-12-19T18:26:57.000Z","size":1617,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-12-22T07:31:23.106Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"https://davidedc.github.io/Minimal-2D-Js-Software-Renderer/","language":"JavaScript","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/davidedc.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":"supporting-experiments/canvas-crispness-examples/canvas-coordinates-system.svg","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":"2024-11-11T23:58:14.000Z","updated_at":"2025-12-19T18:27:00.000Z","dependencies_parsed_at":"2025-01-10T23:25:23.990Z","dependency_job_id":"c9617bc0-c320-4538-9f46-c4b4a906d821","html_url":"https://github.com/davidedc/Minimal-2D-Js-Software-Renderer","commit_stats":null,"previous_names":["davidedc/fizzygum-very-simple-2d-js-software-renderer","davidedc/minimal-2d-js-software-renderer"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/davidedc/Minimal-2D-Js-Software-Renderer","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/davidedc%2FMinimal-2D-Js-Software-Renderer","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/davidedc%2FMinimal-2D-Js-Software-Renderer/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/davidedc%2FMinimal-2D-Js-Software-Renderer/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/davidedc%2FMinimal-2D-Js-Software-Renderer/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/davidedc","download_url":"https://codeload.github.com/davidedc/Minimal-2D-Js-Software-Renderer/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/davidedc%2FMinimal-2D-Js-Software-Renderer/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":32441428,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-29T18:12:22.909Z","status":"ssl_error","status_checked_at":"2026-04-29T18:11:33.322Z","response_time":110,"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":"2024-11-29T15:34:52.845Z","updated_at":"2026-04-29T20:02:48.825Z","avatar_url":"https://github.com/davidedc.png","language":"JavaScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Very Simple JS 2D Software Renderer\n\n## Description\nA very simple 2D software renderer implemented in JavaScript. It uses basic rendering techniques for lines, rectangles, circles, and arcs. To keep it simple, it does not support anti-aliasing, which is OK for my needs, also it makes the generated render much more compressible in lossless mode (good for keeping around hundreds of reference test screenshots).\n\nThis software renderer uses direct pixel manipulation rather than a path-based approach, making it simpler but also more limited than standard Canvas implementations.\n\nSee [index page](https://davidedc.github.io/Minimal-2D-Js-Software-Renderer/) for link to browser tests/demos.\n\n## Purpose\nProviding a sw renderer for Fizzygum, which a) would allow pixel-identical renders across browsers and platforms b) could make it possible to use Fizzygum in headless mode e.g. in Node.\n\n## Features\n- Lines, rectangles, circles, and arcs (both stroke and fill, with transparency).\n- Reasonably similar to an HTML5 Canvas render.\n\n## Browser Tests \u0026 Examples\nThe project includes several browser-based tests and examples:\n\n- [Low-level SW Renderer routines tests](https://davidedc.github.io/Minimal-2D-Js-Software-Renderer/tests/browser-tests/low-level-renderer-tests.html) - Tests low-level primitives like lines, rectangles, rounded rectangles, arcs and circles.\n- [CrispSwCanvas tests](https://davidedc.github.io/Minimal-2D-Js-Software-Renderer/tests/browser-tests/crisp-sw-canvas-tests.html) - Side-by-side comparison between CrispSwCanvas and standard HTML5 Canvas.\n- [CrispSwCanvas minimal example](https://davidedc.github.io/Minimal-2D-Js-Software-Renderer/examples/minimal-sw-canvas-example.html) - A minimal example of using CrispSwCanvas.\n- [CrispSwCanvas code coverage tests](https://davidedc.github.io/Minimal-2D-Js-Software-Renderer/tests/browser-tests/code-coverage-tests.html) - Tests to ensure proper code coverage.\n- [HTML5 Canvas Crispness examples](https://davidedc.github.io/Minimal-2D-Js-Software-Renderer/supporting-experiments/canvas-crispness-examples/canvas-crispness-tests.html) - Exploration of HTML5 Canvas rendering crispness.\n- [Canvas Transform Effects on Strokes](https://davidedc.github.io/Minimal-2D-Js-Software-Renderer/supporting-experiments/canvas-transform-effects-on-strokes-demo.html) - Demonstrates transform effects on strokes.\n- [Canvas Stroke as Clipping Test](https://davidedc.github.io/Minimal-2D-Js-Software-Renderer/supporting-experiments/canvas-stroke-as-clipping-demo.html) - Demonstrates clipping behavior in Canvas.\n\n## Node.js Tests \u0026 Examples\nThe project also supports Node.js testing and usage:\n\n- `examples/simple-node-example.js` - A minimal Node.js example that renders simple shapes and outputs a BMP file.\n- Node.js test runner with several commands:\n  - `node build/node-test-runner.js --list` - List available tests\n  - `node build/node-test-runner.js --test` - Run all tests (one iteration each)\n  - `node build/node-test-runner.js --id=\u003ctest-id\u003e --iteration=\u003cnum\u003e` - Run specific test iteration\n  - `node build/node-test-runner.js -i \u003ctest-id\u003e -r \u003cstart\u003e-\u003cend\u003e` - Run test range\n\n## Building\nThe project includes several build scripts:\n- `sh build-scripts/build-browser.sh` - Build browser version\n- `sh build-scripts/build-node.sh` - Build Node.js version\n- `sh build-scripts/build-node-test-runner-simple-concat.sh` - Build Node test runner\n- `sh run-all-scripts.sh` - Run all build scripts and examples\n\n### Node - specific\n1. For building, see section above.\n2. Run the simple example: `node examples/simple-node-example.js`.\n3. Or run tests: `node build/node-test-runner.js --test`.","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdavidedc%2Fminimal-2d-js-software-renderer","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fdavidedc%2Fminimal-2d-js-software-renderer","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdavidedc%2Fminimal-2d-js-software-renderer/lists"}