Repolode
ssloy

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. 1

    リポジトリをクローンする

    git clone https://github.com/ssloy/tinyrenderer.git
  2. 2

    プロジェクトディレクトリに移動する

    cd tinyrenderer
  3. 3

    CMakeで設定してビルドする

    cmake -Bbuild && cmake --build build -j
  4. 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 の数値は毎日更新されます。

関連プロジェクト