関連サイト
本書の関連ページが用意されています。
内容紹介
◆実装から実用例までWebGLの全容を知る
モバイルを含めたすべてのモダンブラウザで利用可能で一般的になっているWebGL。本書は、WebGL実装の詳細やテスト環境、さまざまなレンダリングテクニック、ゲームや医療分野への応用例など、WebGLに関する専門家たちの多様な知見をまとめた本格的で具体的な論稿集である。JavaScriptによるWebGLの実装に伴う試行錯誤の過程なども取り上げられており、WebGLがウェブの共有文化に取り込まれていく様子を知る重要なリファレンスにもなっています。3Dグラフィックスに興味をもつ人はもとより、さまざまなオープンソースライブラリの活用を考えている人にも有益な解説書です。
「WebGLはすでにモバイルを含めたすべてのモダンブラウザで利用可能で、ウェブ技術としては先進的というよりも一般的という方が適当と思われるほどになってきています。そのようなタイミングで求められるのは技術的な詳細やハウツーもさることながら、まずは具体的で本 格的な実用例ではないでしょうか。」(本書「訳者まえがき」より)
書誌情報
- 著者: Patric Cozzi(編), あんどうやすし(訳)
- 発行日: 2018-08-24 (紙書籍版発行日: 2018-08-24)
- 最終更新日: 2018-08-24
- バージョン: 1.0.0
- ページ数: 480ページ(PDF版換算)
- 対応フォーマット: PDF, EPUB
- 出版社: アスキードワンゴ
対象読者
著者について
Patric Cozzi
Patrick Cozzi (@pjcozzi, http://seas.upenn.edu/~pcozzi/) はAnalytical Graphics, Inc. の筆頭グラフィックスアーキテクトで、ペンシルベニア大学で講師も務めています。Analytical Graphics, Inc. (AGI) ではPatrick はオープンソースのWebGL 仮想地球/地図エンジンであるCesium の開発を率いています。彼はWebGL Insights の編集者であり、またOpenGL Insights の共編者、3D Engine Design for Virtual Globesの共同執筆者、Journal of Computer Graphics Techniques の編集委員のメンバーです。Patrick はSIGGRAPH でよく発表していて、他の書籍シリーズにも貢献しています。彼はKhronos のメンバーで、自身がコンピュータサイエンスの修士号を取得したペンシルベニア大学でGPU プログラミングとアーキテクチャを教えています。
あんどうやすし
「ずっと昔からGoogle Developers Expert(Web Technology)だったの?」
僕は肯いた。
「うん、昔からだった。API Expert の頃から。僕はそのことをずっと感じつづけていたよ。そこには何かがあるんだって。でもオライリー・ジャパン刊『初めてのThree.js 第二版』を翻訳したのは、それほど前のことじゃない。株式会社カブクで少しずつThree.js を使って3Dモデルビューアーを開発してきたんだ。僕が年をとるにつれてね。何故だろう? 僕にもわからない。たぶんそうする必要があったからだろうね」
目次
第I部 さまざまなWebGL実装
第1章 デスクトップWebGLを支えるANGLE (Nicolas Capens, Shannon Woods)
- 1.1 はじめに
- 1.2 背景
- 1.3 ANGLEはエミュレーターではない
- 1.4 WebGLアプリ開発におけるANGLE
- 1.5 ANGLEのデバッグ
- 1.6 さらに学習をすすめるために
第2章 MozillaのWebGL実装 (Benoit Jacob, Jeff Gilbert, Vladimir Vukicevic)
- 2.1 はじめに
- 2.2 DOMバインディング
- 2.3 WebGLメソッドの実装とステートマシン
- 2.4 テクスチャの転送と変換
- 2.5 Nullテクスチャと不完全テクスチャ
- 2.6 シェーダーのコンパイル
- 2.7 drawArrays呼び出しのバリデーションと準備
- 2.8 drawElements呼び出しのバリデーション
- 2.9 スワップチェーンとコンポジットプロセス
- 2.10 プラットフォームの差異
- 2.11 拡張機能とのインタラクション
- 2.12 最後に
第3章 ChromeのWebGL実装の継続的テスト (Kenneth Russell, Zhenyao Mo, Brandon Jones)
- 3.1 はじめに
- 3.2 スタート地点
- 3.3 GPU Try Serverの構築
- 3.4 怪しい挙動の根絶
- 3.5 ChromiumでのWebGLアプリのテスト
第II部 WebGLへの移行
第4章 本気のJavaScript (Matthew Amato, Kevin Ring)
- 4.1 はじめに
- 4.2 モジュール化
- 4.3 パフォーマンス
- 4.4 WebGLアプリケーションの自動テスト
第5章 EmscriptenとWebGL (Nick Desaulniers)
- 5.1 Emscripten
- 5.2 asm.js
- 5.3 Hello World
- 5.4 サードパーティのコードを利用
- 5.5 OpenGL ESサポート
- 5.6 OpenGL ES 2.0をEmscriptenとasm.jsを使用してWebGLに移植
- 5.7 テクスチャの読み込み
- 5.8 開発者ツール
- 5.9 Emscriptenが使用された実製品
- 5.10 さらに学習をすすめるために
第6章 WebGLを使用したデータ可視化アプリケーション: PythonからJavaScriptへ (Cyrille Rossant, Almar Klein)
- 6.1 はじめに
- 6.2 VisPyの概要
- 6.3 GLIR: OpenGLのための中間表現
- 6.4 オンラインレンダラ
- 6.5 オフラインレンダラ
- 6.6 パフォーマンスの検討
- 6.7 結論
第7章 WebGLを使用したコンピュータグラフィックス入門コース (Edward Angel, Dave Shreiner)
- 7.1 はじめに
- 7.2 標準的なコース
- 7.3 WebGLとデスクトップOpenGL
- 7.4 アプリケーションの構成と基本原則
- 7.5 立方体のモデリング
- 7.6 JavaScript の配列
- 7.7 HTML ファイル
- 7.8 JS ファイル
- 7.9 MV.js
- 7.10 入力とインタラクション
- 7.11 テクスチャ
- 7.12 考察
第III部 モバイル
第8章 不具合のない高速なモバイルWebGL (Olli Etuaho)
- 8.1 はじめに
- 8.2 機能互換性
- 8.3 パフォーマンス
- 8.4 参考資料
第IV部 エンジン設計
第9章 Babylon.jsのWebGLエンジン設計 (David Catuhe)
- 9.1 はじめに
- 9.2 エンジンアーキテクチャの全体像
- 9.3 アクセスを集約するエンジン
- 9.4 スマートなシェーダーエンジン
- 9.5 キャッシュ
- 9.6 結論
第10章 Turbulenzエンジンのレンダリング最適化 (David Galeano)
- 10.1 はじめに
- 10.2 不要な処理
- 10.3 不要な処理の回避
- 10.4 高レベルフィルタリング
- 10.5 中間レベルのレンダリング構造
- 10.6 中間レベルフィルタリング
- 10.7 低レベルフィルタリング
- 10.8 Techniqueオブジェクト
- 10.9 Techniqueの反映
- 10.10 バッファの反映
- 10.11 テクスチャの反映
- 10.12 uniform変数の反映
- 10.13 参考資料
第11章 Blend4Webのパフォーマンスとレンダリングアルゴリズム (Alexander Kovelenov, Evgeny Rodygin, Ivan Lyubovnikov)
- 11.1 はじめに
- 11.2 プリレンダラ最適化
- 11.3 物理シミュレーションのスレッド化
- 11.4 海面のレンダリング
- 11.5 Blend4Webのシェーダー
- 11.6 リソース
第12章 Sketchfabマテリアルパイプライン: 各種ファイルの読み込みからシェーダー生成まで (Cedric Pinson, Paul Cheyrou-Lagrèze)
- 12.1 はじめに
- 12.2 マテリアルパイプライン
- 12.3 シェーダー生成
- 12.4 結論
第13章 glslify: GLSLのためのモジュールシステム (Hugh Kennedy, Mikola Lysenko, Matt DesLauriers, Chris Dickinson)
- 13.1 はじめに
- 13.2 Node.jsのモジュラープログラミング
- 13.3 glslifyとは何か?
- 13.4 ソースコード変換
- 13.5 欠点
- 13.6 貢献
第14章 フレームタイムの見積もり (Philip Rideout)
- 14.1 はじめに
- 14.2 描画周期まで遅延する
- 14.3 複数のフレームに渡って処理を分割実行する
- 14.4 Web Worker を使用したスレッド化
- 14.5 アイドル時にワーカーを実行
第V部 レンダリング
第15章 Lumaでの遅延シェーディング (Nicholas Brancaccio)
- 15.1 はじめに
- 15.2 パッキング
- 15.3 G-Buffer パラメーター
- 15.4 ライトプリパス
第16章 WebでのHDRイメージベースドライティング (Jeff Russell)
- 16.1 はじめに
- 16.2 ハイダイナミックレンジエンコーディング
- 16.3 環境マップ
- 16.4 結論
第17章 WebGLでのリアルタイムボリューメトリックライティング (Muhammad Mobeen Movania, Feng Lin)
- 17.1 はじめに
- 17.2 なぜWebGLか?
- 17.3 WebGLとボリュームレンダリング
- 17.4 ボリューメトリックライティングモデル
- 17.5 ボリューメトリックライティング技術
- 17.6 WebGLでの実装
- 17.7 実験結果とパフォーマンス評価
- 17.8 結論と今後の課題
- 17.9 さらに学習をすすめるために
第18章 Terrainジオメトリ —- LODに応じた同心輪 (Florian Bösch)
- 18.1 はじめに
- 18.2 この章の説明とデモ、ソースコードの読み方
- 18.3 グリッドのレンダリング
- 18.4 グリッドにオフセットを設定
- 18.5 微分マップとライティング
- 18.6 グリッドの移動
- 18.7 入れ子構造のグリッド
- 18.8 グリッドの隙間を埋める
- 18.9 ジオモーフィング
- 18.10 LODレベル間のモーフ係数
- 18.11 テクスチャのミップマップレベル選択
- 18.12 倍率
- 18.13 ディテールマッピング
第VI部 可視化
第19章 WebGLでのデータ可視化テクニック (Nicolas Belmonte)
- 19.1 はじめに
- 19.2 フレームワークの準備
- 19.3 データ可視化フレームワークの選択
- 19.4 例1: 気温変動
- 19.5 考えられる機能拡張
- 19.6 例2: 色分解アプリケーション
- 19.7 参考資料
第20章 hare3d —- ブラウザでの巨大なモデルのレンダリング (Christian Stein, Max Limper, Maik Thöner, Johannes Behr)
- 20.1 はじめに
- 20.2 システム概要
- 20.3 RenderTree構造と空間処理
- 20.4 通信フォーマットとデータ転送
- 20.5 高速で動的なレンダリング
- 20.6 ロードマップ
第21章 BrainBrowser Surface Viewer: WebGLベースの神経学的データの可視化 (Tarek Sherif)
- 21.1 はじめに
- 21.2 背景
- 21.3 アーキテクチャ
- 21.4 Surface Viewer の実用例
- 21.5 結論
- 21.6 参考資料
第VII部 インタラクション
第22章 WebGLアプリケーションのユーザビリティ (Jacek Jankowski)
- 22.1 はじめに
- 22.2 3Dを使用する際に気をつけること
- 22.3 テキストを読めるようにする
- 22.4 単純なナビゲーション
- 22.5 道順を見つける手助けをする
- 22.6 選択と操作
- 22.7 システムコントロール
- 22.8 ダウンロード時間とレスポンス時間
- 22.9 ユーザビリティ評価
- 22.10 入力と出力
第23章 WebGLアプリケーションのためのカメラの設計 (Diego Cantor-Rivera, Kamyar Abhari)
- 23.1 はじめに
- 23.2 シーンジオメトリの変換
- 23.3 カメラ変換の構築
- 23.4 WebGLアプリケーションのカメラ
- 23.5 WebGLアプリのためのカメラ設計
- 23.6 カメラランドマーク: カメラ状態の保存と取り出し
- 23.7 ランドマークに基づくナビゲーション
- 23.8 既存の実装
- 23.9 今後の方向性
- 23.10 参考資料