Skip to content
tokoikPublic

About

Uniform Buffer Object と Compute Shader の使い方のサンプル

Topics

Resources

Stars

0 stars

Watchers

0 watching

Forks

Repository files navigation

uboSample - ユニフォームブロック (UBO) とコンピュートシェーダによるボリュームレンダリング

1. 概要

本プログラムは、OpenGL 3.1 で導入されたユニフォームバッファオブジェクト (UBO: Uniform Buffer Object) および OpenGL 4.3 のコンピュートシェーダ(Compute Shader: raycast.comp)を用いて、GPU 上で効率的なレイキャスティング・ボリュームレンダリングを行うサンプルプログラムです。

2. 対応環境

  • Windows: Visual Studio 2019 / 2022 / 2026 (CMake 経由で GLFW, ImGui, NFD を自動構成)
  • Ubuntu Linux: GCC / Make (システム標準の libglfw3-dev, libgl1-mesa-dev, libgtk-3-dev を使用)
  • macOS: 非対応(macOS 標準の OpenGL はバージョン 4.1 で固定されており、本プログラムで必須となる OpenGL 4.3 コンピュートシェーダに対応していません)

3. ビルド手順

Windows (Visual Studio)

cmake -B build -S .
cmake --build build --config Release

Ubuntu Linux (Makefile)

sudo apt-get update
sudo apt-get install -y libglfw3-dev libgl1-mesa-dev libgtk-3-dev
cmake -B build -S .
cmake --build build

4. 起動方法

ビルド完了後、生成された実行ファイルを実行します。

  • Windows: build/Release/uboSample.exe
  • Linux: build/uboSample

5. 操作方法

  • マウス左ドラッグ: ボリュームの視点回転
  • マウス右ドラッグ: 視点の平行移動
  • マウスホイール: ズーム
  • ImGui パネル: サンプリングステップ数やレイキャスティングパラメータの変更
  • [q] / [Q] / [ESC]: プログラムの終了

6. プログラムの解説

コンピュートシェーダ raycast.comp を用いて 3D テクスチャに対するレイマーチングを行い、UBO 経由でカメラ位置・変換行列・ボリューム描画パラメータを一括して高速転送しています。

About

Uniform Buffer Object と Compute Shader の使い方のサンプル

Topics

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages