{"id":19765566,"url":"https://github.com/danielfvm/voxelworld","last_synced_at":"2026-03-06T11:04:11.523Z","repository":{"id":229818315,"uuid":"777714211","full_name":"danielfvm/VoxelWorld","owner":"danielfvm","description":"Voxel World is a cellular automata based Voxel game using WebGL that aims to be 3D sanbox version of the popular Powder Toy game.","archived":false,"fork":false,"pushed_at":"2024-03-26T18:56:19.000Z","size":5443,"stargazers_count":8,"open_issues_count":0,"forks_count":1,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-09-10T20:03:58.946Z","etag":null,"topics":["game","raycasting","sandbox","voxel","webgl"],"latest_commit_sha":null,"homepage":"https://danielfvm.github.io/VoxelWorld/","language":"TypeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/danielfvm.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":"2024-03-26T11:30:10.000Z","updated_at":"2025-08-27T12:13:34.000Z","dependencies_parsed_at":"2025-01-11T00:12:10.610Z","dependency_job_id":null,"html_url":"https://github.com/danielfvm/VoxelWorld","commit_stats":null,"previous_names":["danielfvm/voxelworld","itskaedev/voxelworld"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/danielfvm/VoxelWorld","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/danielfvm%2FVoxelWorld","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/danielfvm%2FVoxelWorld/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/danielfvm%2FVoxelWorld/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/danielfvm%2FVoxelWorld/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/danielfvm","download_url":"https://codeload.github.com/danielfvm/VoxelWorld/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/danielfvm%2FVoxelWorld/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":30173374,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-03-06T07:56:45.623Z","status":"ssl_error","status_checked_at":"2026-03-06T07:55:55.621Z","response_time":250,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.6: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":["game","raycasting","sandbox","voxel","webgl"],"created_at":"2024-11-12T04:18:35.070Z","updated_at":"2026-03-06T11:04:11.466Z","avatar_url":"https://github.com/danielfvm.png","language":"TypeScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Voxel World\n![Repository size](https://img.shields.io/github/repo-size/danielfvm/VoxelWorld?color=39d45f) \n[![GitHub last commit](https://img.shields.io/github/last-commit/danielfvm/VoxelWorld?color=39d45f)](https://github.com/danielfvm/VoxelWorld/commits/master) \n![License](https://img.shields.io/badge/license-GPL-39d45f) \n[![Stargazers](https://img.shields.io/github/stars/danielfvm/VoxelWorld?color=39d45f\u0026logo=github)](https://github.com/danielfvm/VoxelWorld/stargazers)\n\n![image](https://github.com/danielfvm/VoxelWorld/assets/23420640/ef091050-0a01-48c2-a530-053ac0f74bda)\nVoxel World is a cellular automata based Voxel game using WebGL that aims to be 3D sandbox version of the popular [Powder Toy](https://powdertoy.co.uk/) game. You can check out a working version [here](https://danielfvm.github.io/VoxelWorld/).\n\n## How it works\n### Rendering\nThe terrain is split into chunks and each chunk is stored as a texture. Since the minimum number of supported texture binds per draw call is 8, only 2x2 chunks are loaded at a time. The chunk data is then passed to a raycasting [shader](/res/world.fs.glsl) rendered on a quad on the screen. We can enhance performance by decreasing the size of the quad and then scaling it up to the screen size in another drawing call. This action reduces the overall image quality, thereby decreasing the number of pixels the raycasting shader needs to process. On the final render pass a [postprocessing shader effect](/res/screen.glsl) adds god rays by computing the sun's position relative to the screen and utilizing the depth buffer. Additionally it performs a custom antialising filter that softens pixels.\n\n![image](https://github.com/danielfvm/VoxelWorld/assets/23420640/a19903bf-5e26-43ff-8bcd-19ac0e354872)\n\n#### Water reflections\n\nhttps://github.com/danielfvm/VoxelWorld/assets/23420640/c387261e-ea22-481b-9e69-c86c0ecfa41d\n\n\n\n\n### Simulation\nSince WebGL does not support compute shaders, Voxel World uses the fragment shader to calculate the cellular automata based physics. It does so by sampling the chunk data from the texture, computing the next state and rendering it to a framebuffer. It uses the texture attached to the framebuffer for the next iteration.\n\nEach voxel keeps track of following information and are updated accordingly in the [simulate](res/simulate.fs.glsl) shader:\n* type - Sand, Grass, Stone, ...\n* integrity - if voxel is in air or overhang is too large, voxel will drop\n* temperature\n* velocity\n* light level\n\n#### Integrity \n\nhttps://github.com/danielfvm/VoxelWorld/assets/23420640/f378d67c-4565-42f4-905c-4a7362b93858\n\n#### Liquid + Light\n\nhttps://github.com/danielfvm/VoxelWorld/assets/23420640/be116018-0021-4676-be3a-c0eb64b00ad7\n\n\n\n## Procedural generated terrain\nThe terrain is generated with perlin noise inside the [global.glsl](/res/global.glsl#L240) shader.\n\nhttps://github.com/danielfvm/VoxelWorld/assets/23420640/cd156752-5b7e-4d2a-b352-c85a68137735\n\n## Development\nTo test the game locally first clone this repository, install dependencies, run the local test server and finally open it in your browser at [http://localhost:8081/](http://localhost:8081/)\n```\ngit clone https://github.com/danielfvm/VoxelWorld\ncd VoxelWorld\nnpm install\nnpm run serve\n```\n\n\n\n## Useful resources\n* [WebGL Report](https://webglreport.com/?v=2) for checking GPU features\n* Raycasting based on [this](https://www.shadertoy.com/view/4dX3zl) shader\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdanielfvm%2Fvoxelworld","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fdanielfvm%2Fvoxelworld","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdanielfvm%2Fvoxelworld/lists"}