artemtsitronov/glacex

Rustで構築されたGPU加速イミディエイトモードUIライブラリ、wgpu・winit・taffyベース

開発の材料自由に使える · MITデザイン・UI コンポーネントRust難易度
96+0今週0
4フォーク0Issue
デモ・公式サイトをひらくcrates.io

中辛 の解説

Rustの即時モードUI(毎フレーム再描述)ライブラリで、wgpu(GPU描画)・winit(ウィンドウ・イベント管理)・taffy(Flexboxレイアウト)を組み合わせています。ボタン・チェックボックス・スライダー・テキスト入力・スクロールビュー・カード等の13種ウィジェットを備え、カスタムスタイル構造体でボタン・チェックボックス・テキスト入力など各種の見た目を細かく調整できます。グラデーション(リニア・ラジアル・コニック)・ソフトシャドウ・SDF角丸矩形・テキスト・クリップ処理をGPUで一括実行し、単一draw callにバッチ処理されます。1.85以上のRustc、Vulkan/Metal/DirectX12/OpenGL ESいずれかのGPUバックエンドが必要で、デモコードは公式ドキュメントに複数用意されています。早期段階(0.x)で破壊的な変更の可能性あり。

こんなリポジトリです

こんなときに便利です

  • ゲームやビジュアルアプリケーションで高性能なカスタムUIを実装したいとき
  • CPU負荷を抑えながら複雑なグラデーションやアニメーションを含むUIを構築する場合
  • クロスプラットフォーム(Windows・macOS・Linux)で統一した見た目のデスクトップアプリを開発する際

主な機能

SDF(符号付き距離フィールド)ベースのGPU描画で角丸・グラデーション・シャドウを効率的に実装13種のビルトインウィジェット(ボタン・入力欄・スライダー等)と row!/column! マクロによるFlexboxレイアウト毎フレーム自動的に測定・配置・ヒットテスト・入力処理を行うMeasurable trait

ほかとの違い

即時モードでありながらウィジェット単位の安定したid管理とGPU最適化キャッシング(グラデーション・グリフアトラス)を組み合わせることで、マークアップやretain型状態木を要さずに高速で美しいUIを実現しています。

食べた人たち

実際に使ってみた人の記録です — 一言も完走の記録も、確認のうえで公開しています。

試食評 · 使った人のひとこと

まだ試食評がありません。使ってみたら、最初のひとことをどうぞ。

ほかのリポジトリの試食評を見る →

このリポジトリで作られたもの

🖋 完走を記録する

まだ完走の記録がありません。最初の一膳を記録してみませんか。

このリポジトリの作り方

はじめてですか? むずかしくありません — 上から順にたどれば、自分の環境で動かして味見できます。

準備するもの

  • Rust 1.85以上(2024年版エディション)
  • Vulkan・Metal・DirectX12・OpenGL ES のいずれかをサポートするGPU/ドライバ
  • Linux環境ではWaylandまたはX11セッション

すぐ動かしてみるRust (cargo)

ギット飯がリポジトリの構成を確認して組み立てた実行コマンドです。ターミナルに貼り付ければ、取得から実行までまとめて進みます。

git clone --depth 1 https://github.com/artemtsitronov/glacex.git &&
cd glacex &&
cargo run

コードは自分の環境で動きます — はじめて見るリポジトリなら、中身にひととおり目を通してから実行するのがおすすめです。

README の詳しい手順を見る
  1. Cargo.tomlに追加
cargo add glacex
  1. Linux の場合は開発用ライブラリをインストール(Debian/Ubuntu例)
sudo apt install libx11-dev libxcursor-dev libxrandr-dev libxi-dev libxkbcommon-dev libwayland-dev
  1. カウンター例をsrc/main.rsに記述
use glacex::{App, Button, Color, Label, Ui, Widget, column};

struct Counter {
    count: u32,
}

impl Widget for Counter {
    type Output = ();

    fn ui(&mut self, ui: &mut Ui) {
        ui.set_bgcolor(Color::rgb(18, 18, 22));

        let mut label = Label::new("count_label", format!("Count: {}", self.count));
        let mut button = Button::new("increment_btn", "Increment");

        column![&mut label, &mut button]
            .spacing(12.0)
            .arrange_at([40.0, 40.0], ui);

        if button.clicked() {
            self.count += 1;
        }
    }
}

fn main() {
    App::new(Counter { count: 0 }).run();
}
  1. プロジェクト実行
cargo run

ギット飯トライで味見

入れるのが面倒で少し不安だったなら — 安全スキャンからインストールまで、ターミナル一行で終わります。

ターミナルに貼り付ければ、ギット飯の安全スキャン → 隔離フォルダへ clone → インストール → 実行方法の案内まで自動です。はじめてでも大丈夫 — この一行だけです。

npx gitbap-try artemtsitronov/glacex

Node.js さえあれば、インストールなしで動きます · ギット飯トライとは? →

スター推移 · 7日

96+0 / 7日

使いやすさ · まねしやすいか

まねしやすいサンプル評点 50/100
  • ゆるいライセンス
  • テストあり
  • サンプル集
  • 最近の更新
  • AGENTS.md
  • llms.txt
  • テンプレート

最近の更新あり · 2026 年に作成

「デザイン・UI コンポーネント」 こういうリポジトリを毎週受け取りませんか?

毎週月曜の朝、選んだ一膳だけ。広告なし · いつでも解除。

自分のリポジトリですか? README にギット飯バッジを貼る
[![깃밥](https://www.gitbap.com/badge/artemtsitronov/glacex.svg)](https://www.gitbap.com/r/artemtsitronov/glacex)
Claude からそのまま使う — ギット飯のつなぎ方

ギット飯を Claude につなぐと、こうしたリポジトリを Claude・Cursor・Codex から直接さがして試せます。

方法 ① コネクタ URL

Claude の設定 → コネクタにこのアドレスを貼り付け。

https://www.gitbap.com/api/mcp
方法 ② プラグイン(試用まで)

プラグインを入れると /gitbap-trending·/gitbap-try のスラッシュコマンドで、その場でリポジトリを試せます。Claude Code で下の 2 行を順に実行してください。

/plugin marketplace add jakeparkcolde/gitbap-cowork
/plugin install gitbap-cowork@gitbap
つなぎ方をくわしく →

AI が README をもとに要約しました · 原文を見る