C++で一からレイトレーサーを作る方法を解説する無料のオンライン書籍シリーズ。各段階のソースコードも公開しています。
ssloy/tinyrenderer
サードパーティ製ライブラリを使わず、約500行の素のC++でソフトウェアレンダラーを作りながら、3Dレンダリングを段階的に学べる講座です。
- スター
- 24,450
- フォーク
- 2,311
- 未解決の Issue
- 4
- 最終コミット
- 3 か月前
これは何?
Tinyrendererは、OpenGL、Vulkan、Metal、DirectXなどの3DグラフィックスAPIが内部でどのように動作するかを学ぶチュートリアルシリーズです。GPU APIを呼び出す代わりに、ソフトウェアで簡易レンダラーを一から作り、線の描画、三角形のラスタライズ、重心座標、Zバッファ、カメラの扱い、シェーディング、テクスチャマッピングと法線マッピング、シャドウマッピング、アンビエントオクルージョンを扱います。
コードは意図的に小さくまとめられており、外部のグラフィックス依存関係を使わず、C++約500行で構成されています。補助機能はTGA画像ファイルの読み書きを行う単一のクラスだけです。このプロジェクトは学習用の教材です。主要な内容である講義ノートでは各段階を順に解説しており、ソースコードはライブラリとして再利用するのではなく、学習のために読むことを想定しています。
このプログラムは、テクスチャ付きの三角形メッシュの3Dモデルを入力としてレンダリング画像を出力します。グラフィカルなインターフェースはありません。ビルドにはCMakeを使用します。
主な機能
- 01約500行のC++でソフトウェアレンダラーを一から構築します。
- 02ラスタライズ、Zバッファ、カメラの設定、シェーディングを段階的に扱います。
- 03テクスチャマッピング、法線マッピング、シャドウマッピング、アンビエントオクルージョンについて学べます。
- 04サードパーティ製のグラフィックスライブラリは使わず、小さなTGA画像読み書き機能だけを使用します。
- 05番号付きの記事で構成された講座形式です。
ユースケース
- OpenGLやVulkanのパイプラインが内部でどのように動作するかを学ぶ。
- ラスタライズの基礎を扱うグラフィックス講座やワークショップで教材として使う。
- GPU APIを使う前に、重心座標、Zバッファ、法線マッピングを理解する。
クイックスタート
- 1
リポジトリをクローンする
git clone https://github.com/ssloy/tinyrenderer.git - 2
プロジェクトディレクトリに移動する
cd tinyrenderer - 3
CMakeで設定してビルドする
cmake -Bbuild && cmake --build build -j - 4
サンプルモデルでレンダラーを実行する。出力はframebuffer.tgaに保存される
build/tinyrenderer obj/diablo3_pose/diablo3_pose.obj obj/floor.obj
使う前に知っておきたいこと
- このコードは学習用の演習であり、READMEにはそのまま使用しないよう記載されています。
- これはソフトウェアレンダラーであり、GPUアプリケーションの作成方法を示すものではありません。
- ライセンスは明確に指定されていません(NOASSERTION)。
トピック
よくある質問
- tinyrenderer とは?
- サードパーティ製ライブラリを使わず、約500行の素のC++でソフトウェアレンダラーを作りながら、3Dレンダリングを段階的に学べる講座です。 Tinyrendererは、OpenGL、Vulkan、Metal、DirectXなどの3DグラフィックスAPIが内部でどのように動作するかを学ぶチュートリアルシリーズです。GPU APIを呼び出す代わりに、ソフトウェアで簡易レンダラーを一から作り、線の描画、三角形のラスタライズ、重心座標、Zバッファ、カメラの扱い、シェーディング、テクスチャマッピングと法線マッピング、シャドウマッピング、アンビエントオクルージョンを扱います。
- tinyrenderer は無料で使えますか?ライセンスは?
- tinyrenderer は Other ライセンスのオープンソースです。商用製品で使う前にライセンス条件を確認してください。
- tinyrenderer は今もメンテナンスされていますか?
- 半年以内に更新あり。tinyrenderer の最終コミットは 2026年7月29日 です。
- tinyrenderer は何に使えますか?
- OpenGLやVulkanのパイプラインが内部でどのように動作するかを学ぶ。 ラスタライズの基礎を扱うグラフィックス講座やワークショップで教材として使う。 GPU APIを使う前に、重心座標、Zバッファ、法線マッピングを理解する。
- tinyrenderer のインストール方法は?
- リポジトリをクローンする: git clone https://github.com/ssloy/tinyrenderer.git プロジェクトディレクトリに移動する: cd tinyrenderer CMakeで設定してビルドする: cmake -Bbuild && cmake --build build -j サンプルモデルでレンダラーを実行する。出力はframebuffer.tgaに保存される: build/tinyrenderer obj/diablo3_pose/diablo3_pose.obj obj/floor.obj
- tinyrenderer はどこで入手できますか?
- ソースコードとインストール手順は GitHub にあります:https://github.com/ssloy/tinyrenderer
概要はプロジェクトの README をもとに AI が生成しています。GitHub の数値は毎日更新されます。
関連プロジェクト
Blenderは、モデリング、リギング、アニメーション、シミュレーション、レンダリング、コンポジット、モーショントラッキング、動画編集に対応した無料のオープンソース3D制作ソフトウェアです。
Androidでの軽量・高効率な動作を重視して設計された、Android、iOS、Linux、macOS、Windows、WebGL2対応のリアルタイム物理ベースレンダリングエンジン。
C++11からC++26までのモダンC++の機能を、トピック別に解説する無料のオープンソース書籍・Webサイト。
1枚の画像から、メッシュファイルではなく、アニメーション対応のThree.js用TypeScriptコードでオブジェクトを再構築します。
ゲーム開発者やテックリード向けに、基礎知識からゲームエンジニアリング、制作パイプライン、チーム管理、ライブ運用までを扱う中国語のナレッジベースです。