Back to the catalog

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) |

More