{
  "markdown": "# lua-ray\n\n**lua-ray** は、C++ と Lua を組み合わせた実験的なレイトレーシングレンダラーです。Embree をコアのレイトレーシングエンジンとして使用し、WebAssembly (Emscripten) を介してブラウザ上で動作させることも可能です。\n\n## 目次\n\n- [特徴](#特徴)\n- [技術スタック](#技術スタック)\n- [プロジェクト構造](#プロジェクト構造)\n- [前提条件](#前提条件)\n- [ビルドと実行](#ビルドと実行)\n  - [ネイティブ (Windows(MinGW)/Linux)](#ネイティブ-windowsmingwlinux)\n  - [WebAssembly (Web)](#webassembly-web)\n- [テスト](#テスト)\n- [ライセンス](#ライセンス)\n\n## 特徴\n\n- **ハイブリッドアーキテクチャ**: コアロジックは C++17 で記述され、柔軟なスクリプティングのために Lua 5.4.9 を組み込んでいます。\n- **高性能レイトレーシング**: Intel Embree 4.4.1 を使用した高速なレイトレーシング。\n- **クロスプラットフォーム**: SDL3 を使用し、ネイティブデスクトップアプリとしても、Webブラウザ上(WASM)でも動作します。\n- **マルチスレッドレンダリング**: ワーカースレッド（WebではWeb Workers）を使用した並列レンダリング。\n- **ライブコーディング**: Luaスクリプトを編集することで、再コンパイルなしにシーンやロジックを変更可能。\n\n## 技術スタック\n\n- **言語**: C++17, Lua 5.4.9, JavaScript/TypeScript\n- **ライブラリ**:\n  - [SDL3](https://github.com/libsdl-org/SDL): ウィンドウ管理、入力処理\n  - [Embree](https://github.com/embree/embree): レイトレーシングカーネル\n  - [ImGui](https://github.com/ocornut/imgui): GUI\n  - [sol2](https://github.com/ThePhD/sol2): C++とLuaのバインディング\n- **ビルドツール**: CMake, Emscripten, pnpm\n\n## プロジェクト構造\n\n```\nlua-ray/\n├── src/                # C++ ソースコード\n├── workers/            # Lua ワーカースクリプト (レイトレーシング計算など)\n├── test/               # ユニットテスト (Google Test)\n├── build/              # ビルド出力ディレクトリ\n├── CMakeLists.txt      # CMake 設定\n├── CMakePresets.json   # CMake プリセット\n├── package.json        # Node.js 依存関係 (Emscripten ビルド用ツールなど)\n└── main.lua            # メインのエントリーポイントスクリプト\n```\n\n## 前提条件\n\n- **C++ コンパイラ**: GCC (C++17 対応)\n- **CMake**: 3.20 以上\n- **Node.js** (WebAssembly ビルドおよび依存管理用)\n- **pnpm**: パッケージマネージャー\n\n## ビルドと実行\n\n依存関係のインストール:\n```bash\npnpm install\n```\n\n### ネイティブ (Windows(MinGW)/Linux)\n\nGCC (Debug):\n```bash\ncmake --build --preset gcc-debug\n./build/gcc-debug/lua-ray\n```\n\n\n\n### WebAssembly (Web)\n\nEmscripten 環境が必要です（`emsdk` がインストールされているか、DevContainer を使用してください）。\n\n```bash\ncmake --build --preset emscripten-debug\n# または\npnpm build:emscripten\n```\n\nローカルサーバーで実行:\n```bash\npnpm start\n# ブラウザで http://localhost:8080 を開く\n```\n\n## テスト\n\nGoogle Test を使用した C++ のユニットテストを実行します。\n\n```bash\nctest --preset gcc-debug --output-on-failure\n# または\npnpm test\n```\n\n特定のテストのみ実行する場合:\n```bash\nctest --preset gcc-debug -R worker  # \"worker\" を含むテストを実行\n```\n\n## ライセンス\n\nこのプロジェクトは [MIT License](LICENSE) の下で公開されています。\n\n### サードパーティアセット\n\n| アセット | ライセンス | 出典 |\n|---------|-----------|------|\n| [BoxTextured.glb](assets/BoxTextured.glb) | [CC-BY 4.0 International](https://creativecommons.org/licenses/by/4.0/) | © 2017, [Cesium](https://cesium.com/). [glTF-Sample-Assets](https://github.com/KhronosGroup/glTF-Sample-Assets/tree/main/Models/BoxTextured) |\n| [DamagedHelmet.glb](assets/DamagedHelmet.glb) | [CC-BY 4.0 International](https://creativecommons.org/licenses/by/4.0/) / [CC-BY-NC 4.0 International](https://creativecommons.org/licenses/by-nc/4.0/) | © 2018 ctxwing (glTF conversion), © 2016 theblueturtle_ (original model). [glTF-Sample-Assets](https://github.com/KhronosGroup/glTF-Sample-Assets/tree/main/Models/DamagedHelmet) |\n",
  "bytes": 2965,
  "sha": "779a81d2abe87ac2320d2b67772d9d657b0948d0d498ad66ee8cf0fb4047aaab",
  "repo_slug": "nyamadan/lua-ray",
  "fonte": "repo",
  "truncated": false,
  "api": "https://agentalog.com/api/listings/okf_nyamadan_lua_ray_specs_index_md_b904de36/readme"
}