Software Design plus GPU 並列図形処理入門 ―⁠―CUDA・OpenGLの導入と活用

「GPU 並列図形処理入門」のカバー画像
著者
乾正知いぬいまさとも 著
定価
3,520円(本体3,200円+税10%)
発売日
2014.2.18[在庫なし] 2014.2.20
判型
B5変形
頁数
352ページ
ISBN
978-4-7741-6304-8 978-4-7741-6361-1

概要

2Dや3Dなどのコンピュータ画像処理を担うGPU(Graphic Processing Unit)は性能向上が著しく,その処理能力を活かすためのソフトウェア開発が求められています。GPUはCPUと異なり並列処理機能に秀でており,複雑な図形計算を高速処理できるからです。本書はGPUによる並列処理機能を軸に,nVIDIA社のCUDA(Compute Unified Device Architecture)の利用方法とOpenGLのプログラミング方法を基礎の基礎から解説します。コンピュータグラフィックスのプログラミングを実践するための理論を学べます。C言語の知識は必須です。

補足その他

補足情報ページより,本書掲載のサンプルソースコードがダウンロードできるようになっています。本書を読み進めるにあたりぜひご利用ください。

こんな方にオススメ

  • OpenGL、CUDAを利用したプログラミングの基礎を学びたい方に

目次

第1部 コンピュータグラフィックスの基礎
第1章 プログラミングの準備

  • 1.1 Visual
    • 1.1.1 コンソールアプリケーションの作成
    • 1.1.2 設定の変更
  • 1.2 glutとOpenGLの利用6
  • 1.3 freeglutのインストール
  • 1.4 freeglutを利用したプログラミング

第2章 OpenGLとglutを用いた2次元コンピュータグラフィックス

  • 2.1 2次元コンピュータグラフィックスのプログラミング
    • 2.1.1 図形の指示
    • 2.1.2 座標の指示
    • 2.1.3 図形の色付け
  • 2.2 座標の投影とビューポート変換
    • 2.2.1 正投影の導入による表示範囲の拡大
    • 2.2.2 ウィンドウとビューポート変換
    • 2.2.3 アスペクト比の変更
    • 2.2.4 図形中心の表示

第3章 3次元コンピュータグラフィックスへの拡張

  • 3.1 正投影31
    • 3.1.1 視点の変更
    • 3.1.2 視体積の範囲決め
    • 3.1.3 方位角と仰角の利用
    • 3.1.4 マウス操作による視点の変更
  • 3.2 ポリゴンの描画
    • 3.2.1 隠面消去
    • 3.2.2 シェーディング

第2部 OpenGLを用いた並列図形処理 55
第4章 ボロノイ図の生成

  • 4.1 ボロノイ図とは
  • 4.2 ボロノイ図の画像生成
  • 4.3 実装の準備
  • 4.4 円錐形状の描画
  • 4.5 画像の取得と利用.70

第5章 オフセット面の生成

  • 5.1 デプスバッファを用いたオフセット面の計算
  • 5.2 STLフォーマット
  • 5.3 STLファイルの読み込み用関数
  • 5.4 ポリゴンモデルの表示用関数
  • 5.5 オフセットプログラムの準備
  • 5.6 オフセット処理の実現
    • 5.6.1 球,円筒形,スラブ形状の描画
    • 5.6.2 オフセット面の取得
    • 5.6.3 オフセット面の描画
  • 5.7 プログラムの完成

第3部 CUDAの導入とOpenGLとの併用
第6章 CUDAの導入

  • 6.1 CUDAのインストール
  • 6.2 Visual StudioによるCUDAプログラムの開発
  • 6.3 CUDA処理の基本的な考え方
    • 6.3.1 典型的な処理の流れ
    • 6.3.2 GPUの並列処理アーキテクチャ
    • 6.3.3 スレッドによる並列処理
    • 6.3.4 ブロックとグリッド
  • 6.4 CUDA関数の紹介
    • 6.4.1 メモリ管理
    • 6.4.2 データ転送
    • 6.4.3 ブロックとグリッドの定義
    • 6.4.4 カーネル関数
    • 6.4.5 デバイス関数
  • 6.5 プログラム例
    • 6.5.1 CPU処理の実装例
    • 6.5.2 CUDAによる実装
    • 6.5.3 シェアードメモリの利用

第7章 粒子法解析とアニメーション表示

  • 7.1 粒子法解析
  • 7.2 粒子法解析アルゴリズムの実装
    • 7.2.1 CPU処理による実装
    • 7.2.2 GPU処理による実装
  • 7.3 VBOの導入
    • 7.3.1 VBOを用いた図形描画
    • 7.3.2 VBOによる粒子群の表示154
  • 7.4 CUDAとVBOの併用

第8章 拡散方程式の数値解法とアニメーション表示

  • 8.1 差分法による拡散方程式の数値解法
  • 8.2 差分法アルゴリズムの実装
    • 8.2.1 CPU処理による実装
    • 8.2.2 GPU処理による実装
    • 8.2.3 シェアードメモリの利用
    • 8.2.4 テクスチャメモリの利用
  • 8.3 PBOの導入

第4部 CUDAによる複雑な図形処理 195
第9章 メタボール法

  • 9.1 粒子群の濃度場
  • 9.2 ソートによる粒子群のセルへの割り当て
  • 9.3 実装の準備
  • 9.4 基本的なデバイス関数の定義
  • 9.5 カーネル関数の定義
  • 9.6 thrustライブラリ

第10章 マーチングキューブ法

  • 10.1 マーチングキューブ法
  • 10.2 アルゴリズムの概要
  • 10.3 実装の準備
  • 10.4 テクスチャメモリの利用
  • 10.5 カーネル関数の定義
  • 10.6 Metaball.cppの修正

第11章 包含立体の利用

  • 11.1 包含ボックス
  • 11.2 ボックス定義の準備
  • 11.3 AABBとOBBの定義
    • 11.3.1 AABBの定義
    • 11.3.2 OBBの定義
  • 11.4 包含ボックスに関する計算
    • 11.4.1 点と包含ボックス間の距離
    • 11.4.2 包含ボックス間の交差判定
  • 11.5 階層的な包含ボックス
  • 11.6 プログラムの利用法

第12章 立体間の衝突検出

  • 12.1 階層的な包含ボックスによる絞り込み
  • 12.2 ポリゴン間の並列交差判定
  • 12.3 撃力ベース法
  • 12.4 実装の準備
  • 12.5 階層的な包含ボックスによる絞り込み
  • 12.6 撃力ベース法による衝突の解消311
  • 12.7 衝突判定
  • 12.8 デバイス関数
  • 12.9 カーネル関数
  • 12.1 プログラムの利用法
  • あとがき
  • サンプルプログラムの使い方

プロフィール

乾正知いぬいまさとも

1961年茨城県日立市生まれ。東京大学工学部精密機械工学科卒。東京大学助手,講師,茨城大学助教授を経て,2003年より茨城大学教授。学生時代より,図形処理技術とその機械製造自動化への応用に興味を持っている。趣味(以下,時間を費やしている順に),プログラミング(自己流なので,ソースコードを公開するのはかなり恥ずかしい),天体観察(ただ眺めるだけ。Ninja320所有。ネパールで見た白く濃い天の川とハワイで見たヘールボップ彗星は忘れられません),写真撮影(一度だけ雑誌入選経験あり。キヤノンの古いいカメラを集めています),サッカー観戦(アテネ五輪予選に感動して以来,「なでしこ」のサポーターです),読書(藤沢周平の作品は全巻読破。英国のちょっと下品なフロストシリーズも好き),映画(評価の基準は,とにかく大声で笑えること)。