lua-ray 仕様束
Bundle OKF 0.2 · 8 conceitos · nyamadan/lua-ray
Open source Repository Open in the app JSON README (API)
About
# lua-ray 仕様束
lua-ray の現行実装と、仕様から変更を実装するための入口。
# Architecture
- [システム概要](/architecture/system.md) - C++/Lua/Embree/SDL/Emscriptenの責務と境界
- [ランタイム構成](/architecture/runtime.md) - メインループ、Lua State、リソース所有権
- [Luaシーン契約](/architecture/lua-scene-contract.md) - シーンコールバックとライフサイクル
- [Luaバインディング](/architecture/bindings.md) - C++からLuaへ公開される型・関数
- [レンダリングパイプライン](/architecture/rendering-pipeline.md) - ブロック、バッファ、ワーカー、ポストエフェクト
- [ライブラリとアセット](/architecture/library-and-assets.md) - Luaライブラリ、glTF、テクスチャ、シーン
# Development
- [開発ワークフロー](/development/workflow.md) - ビルド、テスト、仕様同期、完了条件
# Change specifications
- [変更仕様一覧](/changes/index.md) - 仕様から実装する変更の入口
Details
- Kind
- OKF bundles
- Topic
- No topic detected
- Publisher
- nyamadan
- Origin
- okf_github
- Category
- dados
- Version
- 0.2
- Last push
- 2026-08-31T00:23:13Z
- Repository state
- ativo
- Language
- C++
- License
- MIT
- Added
- 2026-09-08 16:04:09
- Updated
- 2026-09-08 16:04:09
- Origin id
nyamadan/lua-ray:specs/index.md
README
# lua-ray **lua-ray** は、C++ と Lua を組み合わせた実験的なレイトレーシングレンダラーです。Embree をコアのレイトレーシングエンジンとして使用し、WebAssembly (Emscripten) を介してブラウザ上で動作させることも可能です。 ## 目次 - [特徴](#特徴) - [技術スタック](#技術スタック) - [プロジェクト構造](#プロジェクト構造) - [前提条件](#前提条件) - [ビルドと実行](#ビルドと実行) - [ネイティブ (Windows(MinGW)/Linux)](#ネイティブ-windowsmingwlinux) - [WebAssembly (Web)](#webassembly-web) - [テスト](#テスト) - [ライセンス](#ライセンス) ## 特徴 - **ハイブリッドアーキテクチャ**: コアロジックは C++17 で記述され、柔軟なスクリプティングのために Lua 5.4.9 を組み込んでいます。 - **高性能レイトレーシング**: Intel Embree 4.4.1 を使用した高速なレイトレーシング。 - **クロスプラットフォーム**: SDL3 を使用し、ネイティブデスクトップアプリとしても、Webブラウザ上(WASM)でも動作します。 - **マルチスレッドレンダリング**: ワーカースレッド(WebではWeb Workers)を使用した並列レンダリング。 - **ライブコーディング**: Luaスクリプトを編集することで、再コンパイルなしにシーンやロジックを変更可能。 ## 技術スタック - **言語**: C++17, Lua 5.4.9, JavaScript/TypeScript - **ライブラリ**: - [SDL3](https://github.com/libsdl-org/SDL): ウィンドウ管理、入力処理 - [Embree](https://github.com/embree/embree): レイトレーシングカーネル - [ImGui](https://github.com/ocornut/imgui): GUI - [sol2](https://github.com/ThePhD/sol2): C++とLuaのバインディング - **ビルドツール**: CMake, Emscripten, pnpm ## プロジェクト構造 ``` lua-ray/ ├── src/ # C++ ソースコード ├── workers/ # Lua ワーカースクリプト (レイトレーシング計算など) ├── test/ # ユニットテスト (Google Test) ├── build/ # ビルド出力ディレクトリ ├── CMakeLists.txt # CMake 設定 ├── CMakePresets.json # CMake プリセット ├── package.json # Node.js 依存関係 (Emscripten ビルド用ツールなど) └── main.lua # メインのエントリーポイントスクリプト ``` ## 前提条件 - **C++ コンパイラ**: GCC (C++17 対応) - **CMake**: 3.20 以上 - **Node.js** (WebAssembly ビルドおよび依存管理用) - **pnpm**: パッケージマネージャー ## ビルドと実行 依存関係のインストール: ```bash pnpm install ``` ### ネイティブ (Windows(MinGW)/Linux) GCC (Debug): ```bash cmake --build --preset gcc-debug ./build/gcc-debug/lua-ray ``` ### WebAssembly (Web) Emscripten 環境が必要です(`emsdk` がインストールされているか、DevContainer を使用してください)。 ```bash cmake --build --preset emscripten-debug # または pnpm build:emscripten ``` ローカルサーバーで実行: ```bash pnpm start # ブラウザで http://localhost:8080 を開く ``` ## テスト Google Test を使用した C++ のユニットテストを実行します。 ```bash ctest --preset gcc-debug --output-on-failure # または pnpm test ``` 特定のテストのみ実行する場合: ```bash ctest --preset gcc-debug -R worker # "worker" を含むテストを実行 ``` ## ライセンス このプロジェクトは [MIT License](LICENSE) の下で公開されています。 ### サードパーティアセット | アセット | ライセンス | 出典 | |---------|-----------|------| | [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) | | [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) |