{"id":28334244,"url":"https://github.com/thomvanoorschot/zignite","last_synced_at":"2026-04-27T08:31:57.250Z","repository":{"id":293680161,"uuid":"984813565","full_name":"Thomvanoorschot/zignite","owner":"Thomvanoorschot","description":"Zignite is a Cross-platform graphics engine built with Zig, featuring WebGPU rendering using GLFW for window management. It has WebAssembly and native support","archived":false,"fork":false,"pushed_at":"2025-06-10T07:14:33.000Z","size":4160,"stargazers_count":7,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-06-10T08:25:48.290Z","etag":null,"topics":["emscripten","glfw","imgui","implot","native","rendering-engine","wasm","webgpu","zig-package","ziglang"],"latest_commit_sha":null,"homepage":"","language":"Zig","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/Thomvanoorschot.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,"zenodo":null}},"created_at":"2025-05-16T14:49:50.000Z","updated_at":"2025-06-10T07:14:37.000Z","dependencies_parsed_at":null,"dependency_job_id":"d07f2d96-4c91-437c-ac7a-ade3ac89ae4f","html_url":"https://github.com/Thomvanoorschot/zignite","commit_stats":null,"previous_names":["thomvanoorschot/zimgui","thomvanoorschot/zignite"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/Thomvanoorschot/zignite","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Thomvanoorschot%2Fzignite","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Thomvanoorschot%2Fzignite/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Thomvanoorschot%2Fzignite/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Thomvanoorschot%2Fzignite/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Thomvanoorschot","download_url":"https://codeload.github.com/Thomvanoorschot/zignite/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Thomvanoorschot%2Fzignite/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":260778949,"owners_count":23061753,"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":["emscripten","glfw","imgui","implot","native","rendering-engine","wasm","webgpu","zig-package","ziglang"],"created_at":"2025-05-26T21:18:00.422Z","updated_at":"2026-04-27T08:31:57.201Z","avatar_url":"https://github.com/Thomvanoorschot.png","language":"Zig","funding_links":[],"categories":[],"sub_categories":[],"readme":"\u003cp align=\"center\"\u003e\n  \u003cimg src=\"logo.png\" alt=\"Project Logo\" width=\"500\" /\u003e\n\u003c/p\u003e\n\n# Zignite: Cross-Platform Graphics Engine\n\n## Overview\n\nZignite is a modern graphics engine built with the Zig programming language, designed for cross-platform development with native performance and WebAssembly compatibility. This project leverages Zig's memory safety and performance characteristics to create a robust foundation for interactive applications, games, and visualization tools.\n\nThe engine supports two deployment targets:\n\n- **Native Applications** using Dawn Native (currently tested on macOS)\n- **Web Applications** using WebGPU via Emscripten/WebAssembly\n\n## Getting Started\n\n### Installation\n\nUse fetch:\n\n```bash\nzig fetch --save https://github.com/Thomvanoorschot/zignite/archive/main.tar.gz\n```\n\nOr add Zignite to your `build.zig.zon`:\n\n```zig\n.dependencies = .{\n    .zignite = .{\n        .url = \"https://github.com/thomvanoorschot/zignite/archive/main.tar.gz\",\n        .hash = \"...\", // Update with actual hash\n    },\n},\n```\n\n### Add to your project\n\n```zig\nconst std = @import(\"std\");\nconst Build = std.Build;\nconst zignite_pkg = @import(\"zignite\");\n\npub fn build(b: *Build) void {\n    const target = b.standardTargetOptions(.{});\n    const optimize = b.standardOptimizeOption(.{});\n\n    const zignite_dep = b.dependency(\"zignite\", .{\n        .target = target,\n        .optimize = optimize,\n        .with_imgui = true,\n        .with_implot = false,\n        .use_glfw = true,\n        .use_webgpu = true,\n        .use_filesystem = false,\n    });\n\n    const zignite_lib = zignite_dep.artifact(\"zignite\");\n\n    const example_names = .{\n        \"simple_imgui\",\n        \"simple_implot\",\n        \"simple_webworker\",\n        \"simple_webworker_websocket\",\n    };\n\n    inline for (example_names) |example_name| {\n        const example_mod = b.addModule(example_name, .{\n            .target = target,\n            .optimize = optimize,\n            .root_source_file = b.path(example_name ++ \".zig\"),\n        });\n\n        // Handle both native and web targets\n        if (target.query.os_tag == .emscripten) {\n            // Web/WASM build\n            const example = b.addStaticLibrary(.{\n                .name = example_name,\n                .root_module = example_mod,\n            });\n\n            example.linkLibrary(zignite_lib);\n            example.linkLibC();\n            example.root_module.addImport(\"zignite\", zignite_dep.module(\"zignite\"));\n\n            _ = zignite_pkg.emRunStep(b, .{\n                .name = example_name,\n                .zignite_dep = zignite_dep,\n                .lib_main = example,\n            });\n        } else {\n            // Native build\n            const example = b.addExecutable(.{\n                .name = example_name,\n                .root_module = example_mod,\n            });\n            example.root_module.addImport(\"zignite\", zignite_dep.module(\"zignite\"));\n            b.installArtifact(example);\n\n            const run = b.addRunArtifact(example);\n            b.step(example_name, \"Run \" ++ example_name).dependOn(\u0026run.step);\n        }\n    }\n}\n```\n\n## Goals\n\n• Build a lightweight, high-performance graphics engine using modern APIs \\\n• Explore Zig's compile-time features and manual memory management capabilities \\\n• Create seamless cross-platform deployment (native + WebAssembly) \\\n• Integrate immediate-mode GUI capabilities with Dear ImGui and Dear ImPlot \\\n• Enable concurrent processing with Web Workers and WebSocket communication \\\n• Provide a clean, type-safe API for graphics programming \\\n\n## Architecture\n\nZignite is built around modern graphics APIs and cross-platform libraries:\n\n### Core Graphics\n\n• **WebGPU Backend** – Cross-platform graphics API for native and web targets \\\n• **Dawn Native** – Google's native WebGPU implementation for desktop applications \\\n• **GLFW Integration** – Window management, input handling, and context creation \\\n\n### UI \u0026 Visualization\n\n• **Dear ImGui** – Immediate-mode GUI system for developer tools and interfaces \\\n• **Dear ImPlot** – Advanced plotting library for data visualization and analysis \\\n\n### Web Features\n\n• **Web Workers** – Non-blocking concurrent processing with shared memory support \\\n• **WebSocket Integration** – Real-time communication through web workers \\\n• **Emscripten Support** – WebAssembly compilation for browser deployment \\\n\n### Engine Core\n\n• **Engine Core** – Unified rendering loop and resource management \\\n• **Cross-Platform Abstraction** – Single codebase for native and web deployment\n\n## Features\n\n### Cross-Platform Rendering\n\n• Native desktop applications using Dawn Native (macOS tested, Windows/Linux support planned) \\\n• Web applications using WebGPU via Emscripten/WebAssembly \\\n• Unified API for both deployment targets\n\n### Web-Specific Features\n\n• Web Worker support for non-blocking background processing \\\n• WebSocket communication through web workers with shared memory \\\n• WebAssembly compilation for browser deployment\n\n## Running Examples\n\nThe project includes several examples demonstrating engine capabilities for both native and web platforms.\n\n### Prerequisites\n\n#### For Native Development (macOS)\n\n- GLFW library (for now install via Homebrew: `brew install glfw`)\n\n### Native Examples\n\nTo build and run examples as native applications:\n\n```bash\n# Build and run the simple ImGui example natively\nzig build simple_imgui\n\n# Build and run the simple ImPlot example natively\nzig build simple_implot\n\n# Build and run the web worker example natively\nzig build simple_webworker\n\n# Build and run the WebSocket web worker example natively\nzig build simple_webworker_websocket\n```\n\n### Web/WASM Examples\n\nTo build and run examples in the browser using WebAssembly:\n\n```bash\n# Run the simple ImGui example in browser\nzig build simple_imgui -Dtarget=wasm64-emscripten\n\n# Run the simple ImPlot example in browser\nzig build simple_implot -Dtarget=wasm64-emscripten\n\n# Run the web worker example in browser\nzig build simple_webworker -Dtarget=wasm64-emscripten\n\n# Run the WebSocket web worker example in browser\nzig build simple_webworker_websocket -Dtarget=wasm64-emscripten\n\n# The examples will automatically open in Chrome browser\n```\n\n### Available Examples\n\n- **simple_imgui** - Basic ImGui integration with rendering loop\n\u003cp align=\"center\"\u003e\n  \u003cimg src=\"examples/simple_imgui.png\" alt=\"Simple ImGui Example\" width=\"500\" /\u003e\n\u003c/p\u003e\n\n- **simple_implot** - Basic ImPlot integration with rendering loop\n\u003cp align=\"center\"\u003e\n  \u003cimg src=\"examples/simple_implot.png\" alt=\"Simple ImPlot Example\" width=\"500\" /\u003e\n\u003c/p\u003e\n\n- **simple_webworker** - Web Worker integration with shared memory for concurrent processing\n\u003cp align=\"center\"\u003e\n  \u003cimg src=\"examples/simple_webworker.gif\" alt=\"Simple Web Worker Example\" width=\"500\" /\u003e\n\u003c/p\u003e\n\n- **simple_webworker_websocket** - WebSocket communication through web workers for real-time data\n\u003cp align=\"center\"\u003e\n  \u003cimg src=\"examples/simple_webworker_websocket.gif\" alt=\"WebSocket Web Worker Example\" width=\"500\" /\u003e\n\u003c/p\u003e\n\n### Platform Support\n\n| Platform | Status     | Notes                            |\n| -------- | ---------- | -------------------------------- |\n| macOS    | ✅ Tested  | Full Dawn Native support         |\n| Windows  | 🚧 Planned | Dawn Native support coming       |\n| Linux    | 🚧 Planned | Dawn Native support coming       |\n| Web      | ✅ Stable  | Full WebGPU + Emscripten support |\n\n## Learning Outcomes\n\nThis project provides hands-on experience with: \\\n• Zig's comptime features and build system \\\n• Manual memory management with custom allocators \\\n• Cross-platform graphics programming with WebGPU \\\n• Native graphics development with Dawn Native \\\n• C interoperability and binding generation with ImGui/ImPlot \\\n• Web Worker implementation and shared memory management \\\n• WebSocket communication in concurrent environments \\\n• WebAssembly deployment strategies \\\n• Modern graphics pipeline architecture \\\n• Cross-platform build system design\n\n## Project Status\n\n🚧 **Active Development** – Core engine functionality is implemented with WebGPU + ImGui + ImPlot integration. Native desktop deployment via Dawn Native is working on macOS, with WebAssembly deployment supported via Emscripten. Windows and Linux native support are planned for future releases.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fthomvanoorschot%2Fzignite","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fthomvanoorschot%2Fzignite","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fthomvanoorschot%2Fzignite/lists"}