{"id":22624617,"url":"https://github.com/barrettotte/xslt-perlin2d","last_synced_at":"2026-01-08T02:04:13.478Z","repository":{"id":114091590,"uuid":"198421358","full_name":"barrettotte/XSLT-Perlin2D","owner":"barrettotte","description":"An ugly and slow 2D perlin noise SVG generator using XSLT 2.0 and self loathing.","archived":false,"fork":false,"pushed_at":"2019-07-25T18:35:42.000Z","size":1276,"stargazers_count":1,"open_issues_count":0,"forks_count":0,"subscribers_count":2,"default_branch":"master","last_synced_at":"2025-02-03T13:13:14.819Z","etag":null,"topics":["perlin-noise","stupid","svg","xml","xslt","xslt2"],"latest_commit_sha":null,"homepage":"","language":"XSLT","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/barrettotte.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}},"created_at":"2019-07-23T11:58:44.000Z","updated_at":"2021-08-26T20:48:06.000Z","dependencies_parsed_at":null,"dependency_job_id":"b4634a6e-7508-4d06-a829-154ff50c06d3","html_url":"https://github.com/barrettotte/XSLT-Perlin2D","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/barrettotte%2FXSLT-Perlin2D","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/barrettotte%2FXSLT-Perlin2D/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/barrettotte%2FXSLT-Perlin2D/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/barrettotte%2FXSLT-Perlin2D/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/barrettotte","download_url":"https://codeload.github.com/barrettotte/XSLT-Perlin2D/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":246131335,"owners_count":20728303,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","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":["perlin-noise","stupid","svg","xml","xslt","xslt2"],"created_at":"2024-12-09T00:17:02.441Z","updated_at":"2026-01-08T02:04:08.444Z","avatar_url":"https://github.com/barrettotte.png","language":"XSLT","funding_links":[],"categories":[],"sub_categories":[],"readme":"# XSLT-Perlin2D\n\n\nA 2D perlin noise SVG generator using XSLT 2.0 and self loathing.\n\n\nIts ugly, slow, and I'm sorry for bringing it into existence.\n\n\n## Build\n* This was actually a huge pain to figure out which XSLT processor to use (xalan, saxon, xsltproc, etc)\n* I ended up doing something gross. I used Apache Ant and Saxon9.\n* To build with Saxon9 (XSLT 2.0) use ```ant``` **Recommended**\n* Can also be built with XALAN (XSLT 1.0) use ```groovy build-xalan.groovy``` but its runs terribly at greater than 128x128 size\n\n\n## Generated SVG\n![perlin-screenshot](screenshot.PNG)\n\n\n## Input XML (```perlin-svg.xml```)\n```xml\n\u003c?xml version=\"1.0\" encoding=\"UTF-8\"?\u003e\n\u003c?xml-stylesheet href=\"perlin.xslt\" type=\"text/xsl\"?\u003e\n\u003cperlin-noise\u003e\n  \u003csettings\u003e\n    \u003csizeX\u003e256\u003c/sizeX\u003e\n    \u003csizeY\u003e256\u003c/sizeY\u003e\n    \u003cseed\u003e1234\u003c/seed\u003e\n    \u003cfrequency\u003e6\u003c/frequency\u003e\n    \u003coctaves\u003e4\u003c/octaves\u003e\n  \u003c/settings\u003e\n\u003c/perlin-noise\u003e\n```\n\n\n## Generated Perlin noise XML ```example-perlin.xml```\nSample of perlin noise data that is generated before transforming to SVG.\n\n\n\n## Output SVG ```perlin.svg```\n```xml\n\u003c?xml version=\"1.0\" encoding=\"UTF-8\"?\u003e\n\u003csvg xmlns=\"http://www.w3.org/2000/svg\" width=\"256\" height=\"256\" viewBox=\"0 0 256 256\"\u003e\n  \u003crect x=\"1\" y=\"1\" width=\"1\" height=\"1\" fill=\"rgb(66,66,66)\"/\u003e\n  \u003crect x=\"2\" y=\"1\" width=\"1\" height=\"1\" fill=\"rgb(61,61,61)\"/\u003e\n  \u003crect x=\"3\" y=\"1\" width=\"1\" height=\"1\" fill=\"rgb(180,180,180)\"/\u003e\n  \u003crect x=\"4\" y=\"1\" width=\"1\" height=\"1\" fill=\"rgb(160,160,160)\"/\u003e\n  \u003c!-- ... --\u003e\n\u003c/svg\u003e\n```\n\n\n## XSLT Descriptions\n| File Name | Description |\n| --------- | ----------- |\n| hash.xslt | Pre-computed hashes for generating perlin noise |\n| map.xslt  | Create map data structure of pixels |\n| noise.xslt | Generate 2D Perlin noise |\n| perlin-svg.xslt | Driver |\n| svg-utils.xslt | Utils for SVG generation and color value conversion |\n| utils.xslt | General utils |\n\n\n## Sources\n* Ken Perlin's implementation http://mrl.nyu.edu/~perlin/noise/\n* https://en.wikipedia.org/wiki/Perlin_noise\n* https://codepen.io/shshaw/post/vector-pixels-svg-optimization-animation-and-understanding-path-data\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fbarrettotte%2Fxslt-perlin2d","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fbarrettotte%2Fxslt-perlin2d","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fbarrettotte%2Fxslt-perlin2d/lists"}