57
WebGL によるデータ * じめに 大学 システム 2014.04.15 * X0212014 3 1F Kageyama (Kobe Univ.) Visualization 2014.04.15 1 / 57

WebGL によるデータ可視化入門 - research.kobe-u ... · WebGLによるデータ可視化入門 はじめに 陰山聡 神戸大学システム情報学研究科計算科学専攻

  • Upload
    others

  • View
    5

  • Download
    0

Embed Size (px)

Citation preview

Page 1: WebGL によるデータ可視化入門 - research.kobe-u ... · WebGLによるデータ可視化入門 はじめに 陰山聡 神戸大学システム情報学研究科計算科学専攻

WebGLによるデータ可視化入門∗

はじめに

陰山 聡

神戸大学 システム情報学研究科 計算科学専攻

2014.04.15

∗情報可視化論 X021(2014年前期) 自然 3号館 1F演習室Kageyama (Kobe Univ.) Visualization 2014.04.15 1 / 57

Page 2: WebGL によるデータ可視化入門 - research.kobe-u ... · WebGLによるデータ可視化入門 はじめに 陰山聡 神戸大学システム情報学研究科計算科学専攻

講義の目標:WebGLとは

OpenGLの歴史

シェーダとシェーディング言語: GLSL

コンピュータグラフィックス

Kageyama (Kobe Univ.) Visualization 2014.04.15 2 / 57

Page 3: WebGL によるデータ可視化入門 - research.kobe-u ... · WebGLによるデータ可視化入門 はじめに 陰山聡 神戸大学システム情報学研究科計算科学専攻

講義の目標:WebGL とは

はじめに

Kageyama (Kobe Univ.) Visualization 2014.04.15 3 / 57

Page 4: WebGL によるデータ可視化入門 - research.kobe-u ... · WebGLによるデータ可視化入門 はじめに 陰山聡 神戸大学システム情報学研究科計算科学専攻

講義の目標:WebGL とは

講義のウェブページ

http://bit.ly/1qXgljB

・各種連絡

・講義資料

・作品掲載

Kageyama (Kobe Univ.) Visualization 2014.04.15 4 / 57

Page 5: WebGL によるデータ可視化入門 - research.kobe-u ... · WebGLによるデータ可視化入門 はじめに 陰山聡 神戸大学システム情報学研究科計算科学専攻

講義の目標:WebGL とは

調査:演習室端末の id

• if 計算科学演習 I を履修 → id は今週発行される• else → 新たに発行するので学籍番号と氏名(漢字、ひらがな、ローマ字) をメールで。今日中に。

• メールアドレス kageyama.lecture

Kageyama (Kobe Univ.) Visualization 2014.04.15 5 / 57

Page 6: WebGL によるデータ可視化入門 - research.kobe-u ... · WebGLによるデータ可視化入門 はじめに 陰山聡 神戸大学システム情報学研究科計算科学専攻

講義の目標:WebGL とは

予備知識

•“古い”OpenGL• 実験・プロジェクト演習で経験しているはず• glBegin/glEnd, glVertex, glNormal は覚えている?

• CG(Computer Graphics)の基礎• 正射影、透視射影は知っているか?• OpenGLの照明モデルは知っているか?

• 線形代数• 今回(次回)復習

Kageyama (Kobe Univ.) Visualization 2014.04.15 6 / 57

Page 7: WebGL によるデータ可視化入門 - research.kobe-u ... · WebGLによるデータ可視化入門 はじめに 陰山聡 神戸大学システム情報学研究科計算科学専攻

講義の目標:WebGL とは

目標

• WebGLを使って簡単なアプリケーションが作れるようになる• シェーダ言語を使えるようになる• 科学データの可視化手法を理解する

Kageyama (Kobe Univ.) Visualization 2014.04.15 7 / 57

Page 8: WebGL によるデータ可視化入門 - research.kobe-u ... · WebGLによるデータ可視化入門 はじめに 陰山聡 神戸大学システム情報学研究科計算科学専攻

講義の目標:WebGL とは

目標

Kageyama (Kobe Univ.) Visualization 2014.04.15 8 / 57

Page 9: WebGL によるデータ可視化入門 - research.kobe-u ... · WebGLによるデータ可視化入門 はじめに 陰山聡 神戸大学システム情報学研究科計算科学専攻

講義の目標:WebGL とは

成績

レポート

• 計 5回(20点 x 5 = 100点)(の予定)• メールで提出。アドレス:kageyama.lecture

• 一部の作品は講義のウェブページに掲載し、作者名も記す。• 自分の名前(名字)を掲載されたくない場合は希望仮名(イニシャル)をレポートに明記すること。

Kageyama (Kobe Univ.) Visualization 2014.04.15 9 / 57

Page 10: WebGL によるデータ可視化入門 - research.kobe-u ... · WebGLによるデータ可視化入門 はじめに 陰山聡 神戸大学システム情報学研究科計算科学専攻

講義の目標:WebGL とは

WebGLとは

WebGL - OpenGL ES 2.0 for the Web†

†http://www.khronos.org/webgl/Kageyama (Kobe Univ.) Visualization 2014.04.15 10 / 57

Page 11: WebGL によるデータ可視化入門 - research.kobe-u ... · WebGLによるデータ可視化入門 はじめに 陰山聡 神戸大学システム情報学研究科計算科学専攻

講義の目標:WebGL とは

WebGL対応ブラウザ

• Firefox 4

• Google Chrome 8

• Safari 5

• Opera 12

• Internet Explorer 11

ブラウザとバージョンによっては設定が必要かもしれない。デモ‡が見えるかどうかチェックしておくこと。

‡http://www.khronos.org/webgl/wiki/Demo_RepositoryKageyama (Kobe Univ.) Visualization 2014.04.15 11 / 57

Page 12: WebGL によるデータ可視化入門 - research.kobe-u ... · WebGLによるデータ可視化入門 はじめに 陰山聡 神戸大学システム情報学研究科計算科学専攻

講義の目標:WebGL とは

参考書

Professional WebGL Programming, A. Anyuru

実践プログラミング WebGL, 吉川郁夫訳

Data Visualization Principles and Practice, C. Telea

three.jsによる HTML5 3Dグラフィックス, 上下, 遠藤理平

Kageyama (Kobe Univ.) Visualization 2014.04.15 12 / 57

Page 13: WebGL によるデータ可視化入門 - research.kobe-u ... · WebGLによるデータ可視化入門 はじめに 陰山聡 神戸大学システム情報学研究科計算科学専攻

講義の目標:WebGL とは

講義計画

• Part 1• OpenGLの歴史• WebGLとは• CGと GPUの基礎• 数学的準備

• Part 2• WebGLを通じたシェーダ入門

• Part 3• 様々な可視化手法の解説

Kageyama (Kobe Univ.) Visualization 2014.04.15 13 / 57

Page 14: WebGL によるデータ可視化入門 - research.kobe-u ... · WebGLによるデータ可視化入門 はじめに 陰山聡 神戸大学システム情報学研究科計算科学専攻

講義の目標:WebGL とは

登攀ルート

GPUを使いこなしたSci. Viz.

シェーダ言語

コンピュータグラフィクス線形代数

基本的可視化

アルゴリズム

Kageyama (Kobe Univ.) Visualization 2014.04.15 14 / 57

Page 15: WebGL によるデータ可視化入門 - research.kobe-u ... · WebGLによるデータ可視化入門 はじめに 陰山聡 神戸大学システム情報学研究科計算科学専攻

OpenGL の歴史

OpenGLの歴史

Kageyama (Kobe Univ.) Visualization 2014.04.15 15 / 57

Page 16: WebGL によるデータ可視化入門 - research.kobe-u ... · WebGLによるデータ可視化入門 はじめに 陰山聡 神戸大学システム情報学研究科計算科学専攻

OpenGL の歴史

OpenGLとは

OpenGL 2.X は、OpenGL 1.X の機能を全て含む。

OpenGL 3.0で上位互換性放棄

シェーダで置き換え可能な機能OpenGL 3.0 非推奨機能→ OpenGL 3.1 拡張機能→ OpenGL 3.2 互換プロファイル

Kageyama (Kobe Univ.) Visualization 2014.04.15 16 / 57

Page 17: WebGL によるデータ可視化入門 - research.kobe-u ... · WebGLによるデータ可視化入門 はじめに 陰山聡 神戸大学システム情報学研究科計算科学専攻

OpenGL の歴史

OpenGL Overview

http://www.opengl.org

OpenGL was first created as an open and reproducable alternative to Iris GL...Silicon Graphics workstations... OpenGL 1.0 ...non-SGI 3rd party...

...

OpenGL 2.0...OpenGL Shading Language (also called GLSL), a C like languagewith which the transformation and fragment shading stages of the pipeline can beprogrammed.

OpenGL 3.0 adds the concept of deprecation§... GL 3.1 removed most deprecatedfeatures, and GL 3.2 created the notion of core and compatibility OpenGLcontexts.

Official versions of OpenGL released to date are 1.0, 1.1, 1.2, 1.2.1, 1.3, 1.4, 1.5,

2.0, 2.1, 3.0, 3.1, 3.2, 3.3, 4.0, 4.1, 4.2, 4.3.§非推奨Kageyama (Kobe Univ.) Visualization 2014.04.15 17 / 57

Page 18: WebGL によるデータ可視化入門 - research.kobe-u ... · WebGLによるデータ可視化入門 はじめに 陰山聡 神戸大学システム情報学研究科計算科学専攻

OpenGL の歴史

OpenGL関係

http://www.khronos.org

• OpenGL 4.3

• OpenGL SL 4.3 (シェーディング言語)

• OpenGL ES 3.0 組み込みシステム用) iOS, Android, Symbian

• WebGL 2.0

Kageyama (Kobe Univ.) Visualization 2014.04.15 18 / 57

Page 19: WebGL によるデータ可視化入門 - research.kobe-u ... · WebGLによるデータ可視化入門 はじめに 陰山聡 神戸大学システム情報学研究科計算科学専攻

OpenGL の歴史

Shader-based OpenGLによるOpenGL教育

OpenGLはグラフィックスの APIとして長年教育現場で教えられてきた。

仕様の変化も少なかったので、長年同じ教科書、ノートが使われてきた。

ところがOpenGL 3.0から、OpenGLは大きく変化(Shader-base化)。

それに伴って教育内容も大改訂が必要となった。

Kageyama (Kobe Univ.) Visualization 2014.04.15 19 / 57

Page 20: WebGL によるデータ可視化入門 - research.kobe-u ... · WebGLによるデータ可視化入門 はじめに 陰山聡 神戸大学システム情報学研究科計算科学専攻

OpenGL の歴史

OpenGL ver. 3.1からの大きな変化

全てのアプリケーションは少なくとも一つの頂点シェーダと、少なくとも一つのフラグメントシェーダを与える必要がある。

Kageyama (Kobe Univ.) Visualization 2014.04.15 20 / 57

Page 21: WebGL によるデータ可視化入門 - research.kobe-u ... · WebGLによるデータ可視化入門 はじめに 陰山聡 神戸大学システム情報学研究科計算科学専攻

OpenGL の歴史

OpenGL ver. 3.1からの大きな変化

//// He l l o Wor l d . c//// To comp i l e on Mac .// gcc t h i s s o u r c e . c −f ramework GLUT −f ramework OpenGL//

#inc lude <GLUT/ g l u t . h>

vo id d i s p l a y ( vo id ){

g l C l e a r (GL COLOR BUFFER BIT) ;g lBeg i n (GL POLYGON) ;g l V e r t e x 2 f (−0.5 , −0.5) ;g l V e r t e x 2 f (−0.5 , 0 . 5 ) ;

Kageyama (Kobe Univ.) Visualization 2014.04.15 21 / 57

Page 22: WebGL によるデータ可視化入門 - research.kobe-u ... · WebGLによるデータ可視化入門 はじめに 陰山聡 神戸大学システム情報学研究科計算科学専攻

OpenGL の歴史

g l V e r t e x 2 f ( 0 . 5 , 0 . 5 ) ;g l V e r t e x 2 f ( 0 . 5 , −0.5) ;g lEnd ( ) ;g l u tSwapBu f f e r s ( ) ;

}

i n t main ( i n t argc , char ∗∗ argv ){

g l u t I n i t (&argc , a rgv ) ;g l u t I n i tD i s p l a yMod e (GLUT RGBA | GLUT DOUBLE) ;g lutCreateWindow ( ” He l l o World” ) ;g l u tD i s p l a yFunc ( d i s p l a y ) ;g lutMainLoop ( ) ;

}

Listing 1: 古いOpenGLコード

Kageyama (Kobe Univ.) Visualization 2014.04.15 22 / 57

Page 23: WebGL によるデータ可視化入門 - research.kobe-u ... · WebGLによるデータ可視化入門 はじめに 陰山聡 神戸大学システム情報学研究科計算科学専攻

OpenGL の歴史

WebGL(シェーダ)による三角形の描画

→ link: webgl sample triangle 00.html

Kageyama (Kobe Univ.) Visualization 2014.04.15 23 / 57

Page 24: WebGL によるデータ可視化入門 - research.kobe-u ... · WebGLによるデータ可視化入門 はじめに 陰山聡 神戸大学システム情報学研究科計算科学専攻

シェーダとシェーディング言語: GLSL

はじめに

OpenGLシェーディング言語(OpenGL SL, GLSL)4.0

GPUを使うための言語

CGソースコード = OpenGLソースコード+ GLSL(フラグメントシェーダ)ソースコード+ GLSL(頂点シェーダ)ソースコード

Kageyama (Kobe Univ.) Visualization 2014.04.15 24 / 57

Page 25: WebGL によるデータ可視化入門 - research.kobe-u ... · WebGLによるデータ可視化入門 はじめに 陰山聡 神戸大学システム情報学研究科計算科学専攻

シェーダとシェーディング言語: GLSL

OpenGLシェーディング言語

GPU内部で走る単体のプログラム

専用言語

シェーディングプログラム(あるいは単にシェーダ)と呼ばれる

要するに数値演算プログラムの一種

シェーディングに限らず様々な数値処理が可能(→ GPGPU)

並列処理

Kageyama (Kobe Univ.) Visualization 2014.04.15 25 / 57

Page 26: WebGL によるデータ可視化入門 - research.kobe-u ... · WebGLによるデータ可視化入門 はじめに 陰山聡 神戸大学システム情報学研究科計算科学専攻

シェーダとシェーディング言語: GLSL

GPUのプロセッサ数

GeForce GTX TITAN

シェーダプロセッサ “CUDA Cores” 2688 個

以前は固定機能パイプライン

現在はプログラマブル

固定機能パイプラインは廃止予定

Kageyama (Kobe Univ.) Visualization 2014.04.15 26 / 57

Page 27: WebGL によるデータ可視化入門 - research.kobe-u ... · WebGLによるデータ可視化入門 はじめに 陰山聡 神戸大学システム情報学研究科計算科学専攻

シェーダとシェーディング言語: GLSL

グラフィックス

• immediate-mode• 即時モード API• 描画のたびにシーン全体を GPUに送る。たとえ変更がなくても。

• retained-mode• 保持モード API• シーン全体をまず GPUに送る。その後は変更部分だけを送る。

WebGLは即時モード API

Kageyama (Kobe Univ.) Visualization 2014.04.15 27 / 57

Page 28: WebGL によるデータ可視化入門 - research.kobe-u ... · WebGLによるデータ可視化入門 はじめに 陰山聡 神戸大学システム情報学研究科計算科学専攻

シェーダとシェーディング言語: GLSL

OpenGL プロファイル

OpenGL 3.0

deprecation(非推奨)を導入 → 不要な関数を段階的に取り除く

OpenGL 3.2 より

コア プロファイルと互換プロファイル

プロファイルはウィンドウシステム APIで選択

glBegin/glEnd は非推奨

標準的な行列 GL MODELVIEW, GL PROJECTIONもコアプロファイルから削除。

Kageyama (Kobe Univ.) Visualization 2014.04.15 28 / 57

Page 29: WebGL によるデータ可視化入門 - research.kobe-u ... · WebGLによるデータ可視化入門 はじめに 陰山聡 神戸大学システム情報学研究科計算科学専攻

シェーダとシェーディング言語: GLSL

OpenGL ES 2.0

OpenGL for Embedded Systems (組み込みシステム用)

Immediate モード API

glBegin/glEnd なし。頂点配列を使う。

シェーダベース。シェーダプログラムが必要。

アプリケーションプログラム: C/C++, Objective-C, Java

OpenGL ES 2.0 ≈ WebGL

WebGLは JavaScriptで呼ぶ。

Kageyama (Kobe Univ.) Visualization 2014.04.15 29 / 57

Page 30: WebGL によるデータ可視化入門 - research.kobe-u ... · WebGLによるデータ可視化入門 はじめに 陰山聡 神戸大学システム情報学研究科計算科学専攻

シェーダとシェーディング言語: GLSL

HTML5 canvas

HTML5: 第 5世代の HTML

canvas: JavaScriptで描画できる長方形領域

→ 【HTML5 canvas サンプルプログラム】

Kageyama (Kobe Univ.) Visualization 2014.04.15 30 / 57

Page 31: WebGL によるデータ可視化入門 - research.kobe-u ... · WebGLによるデータ可視化入門 はじめに 陰山聡 神戸大学システム情報学研究科計算科学専攻

コンピュータグラフィックス

コンピュータグラフィックス(CG)

Kageyama (Kobe Univ.) Visualization 2014.04.15 31 / 57

Page 32: WebGL によるデータ可視化入門 - research.kobe-u ... · WebGLによるデータ可視化入門 はじめに 陰山聡 神戸大学システム情報学研究科計算科学専攻

コンピュータグラフィックス

CGと並列計算

並列計算については学んできたはず。

空間を分割して、通信用のメモリを確保して、MPIで通信して・・・

並列プログラム作りは結構大変。← 結局同期が大変だから。

一方、同期について気にしなくてもよい問題もたくさんある。もともとのアルゴリズムが並列化可能なもの。→ “Embarrassingly” parallel problems

Kageyama (Kobe Univ.) Visualization 2014.04.15 32 / 57

Page 33: WebGL によるデータ可視化入門 - research.kobe-u ... · WebGLによるデータ可視化入門 はじめに 陰山聡 神戸大学システム情報学研究科計算科学専攻

コンピュータグラフィックス

CGの処理の多くが embarrassingly parallel

座標変換、テクスチャマップ、シェーディング、ラスタ化、etc.

CG専用並列計算機 → GPU (Graphics Processing Unit)

Kageyama (Kobe Univ.) Visualization 2014.04.15 33 / 57

Page 34: WebGL によるデータ可視化入門 - research.kobe-u ... · WebGLによるデータ可視化入門 はじめに 陰山聡 神戸大学システム情報学研究科計算科学専攻

コンピュータグラフィックス

Kepler GeForceの構造Nvidia white paperより引用

Kageyama (Kobe Univ.) Visualization 2014.04.15 34 / 57

Page 35: WebGL によるデータ可視化入門 - research.kobe-u ... · WebGLによるデータ可視化入門 はじめに 陰山聡 神戸大学システム情報学研究科計算科学専攻

コンピュータグラフィックス

Kepler GeForceの構造Nvidia white paperより引用

Kageyama (Kobe Univ.) Visualization 2014.04.15 35 / 57

Page 36: WebGL によるデータ可視化入門 - research.kobe-u ... · WebGLによるデータ可視化入門 はじめに 陰山聡 神戸大学システム情報学研究科計算科学専攻

コンピュータグラフィックス

グラフィックス レンダリング パイプライン

Graphics rendering pipeline 「パイプライン」

グラフィックス レンダリング

パイプライン

input: カメラ設定、3次元オブジェクト、光源、ライティングモデル、テクスチャ

output: 2次元画像

Kageyama (Kobe Univ.) Visualization 2014.04.15 36 / 57

Page 37: WebGL によるデータ可視化入門 - research.kobe-u ... · WebGLによるデータ可視化入門 はじめに 陰山聡 神戸大学システム情報学研究科計算科学専攻

コンピュータグラフィックス

パイプラインの構造

アプリケーション ステージ → ジオメトリ ステージ→ ラスタライザ ステージ

ジオメト

ラスタラ

イザ

アプリケ

ーション

Kageyama (Kobe Univ.) Visualization 2014.04.15 37 / 57

Page 38: WebGL によるデータ可視化入門 - research.kobe-u ... · WebGLによるデータ可視化入門 はじめに 陰山聡 神戸大学システム情報学研究科計算科学専攻

コンピュータグラフィックス

アプリケーション ステージ

ソフトウェア

オブジェクトの生成、アニメーション、衝突検出、カリング、等々

Kageyama (Kobe Univ.) Visualization 2014.04.15 38 / 57

Page 39: WebGL によるデータ可視化入門 - research.kobe-u ... · WebGLによるデータ可視化入門 はじめに 陰山聡 神戸大学システム情報学研究科計算科学専攻

コンピュータグラフィックス

ジオメトリ ステージ

ハードウェア

座標変換ライティ

ング射影

クリッピ

ング

スクリー

ンマッピ

ング

Kageyama (Kobe Univ.) Visualization 2014.04.15 39 / 57

Page 40: WebGL によるデータ可視化入門 - research.kobe-u ... · WebGLによるデータ可視化入門 はじめに 陰山聡 神戸大学システム情報学研究科計算科学専攻

コンピュータグラフィックス

ビューボリューム

canonical view volume (標準ビューボリューム)

辺の長さ 2の立方体

(−1,−1,−1) ≤ (x, y, z) ≤ (1, 1, 1)

標準ビューボリューム内の座標を正規化デバイス座標 (NormalizedDevice Coordinates, NDC)と呼ぶ。

ジオメトリステージの役割は、アプリケーションが設定した CG世界をビューボリュームにマップすること。

Kageyama (Kobe Univ.) Visualization 2014.04.15 40 / 57

Page 41: WebGL によるデータ可視化入門 - research.kobe-u ... · WebGLによるデータ可視化入門 はじめに 陰山聡 神戸大学システム情報学研究科計算科学専攻

コンピュータグラフィックス

射影

2種類:

・正射影 orthographic projection, 平行投影(parallel projection)

・透視射影 perspective projection, 遠近投影

視錐台 view frustum

どちらの射影も 4行 4列の行列演算で書ける(後述)。

Kageyama (Kobe Univ.) Visualization 2014.04.15 41 / 57

Page 42: WebGL によるデータ可視化入門 - research.kobe-u ... · WebGLによるデータ可視化入門 はじめに 陰山聡 神戸大学システム情報学研究科計算科学専攻

コンピュータグラフィックス

クリップ処理ビューボリュームの外部は描かない。

Kageyama (Kobe Univ.) Visualization 2014.04.15 42 / 57

Page 43: WebGL によるデータ可視化入門 - research.kobe-u ... · WebGLによるデータ可視化入門 はじめに 陰山聡 神戸大学システム情報学研究科計算科学専攻

コンピュータグラフィックス

クリップ処理ビューボリュームの表面に新しい辺が自動的にできる。

Kageyama (Kobe Univ.) Visualization 2014.04.15 43 / 57

Page 44: WebGL によるデータ可視化入門 - research.kobe-u ... · WebGLによるデータ可視化入門 はじめに 陰山聡 神戸大学システム情報学研究科計算科学専攻

コンピュータグラフィックス

スクリーンマッピング

最終的な画像の大きさ(widthと height)に合わせて、立方体のビューボリュームを x方向と y方向にスケール変換+平行移動させる。z方向には何もしない(−1 ≤ z ≤ 1)

Kageyama (Kobe Univ.) Visualization 2014.04.15 44 / 57

Page 45: WebGL によるデータ可視化入門 - research.kobe-u ... · WebGLによるデータ可視化入門 はじめに 陰山聡 神戸大学システム情報学研究科計算科学専攻

コンピュータグラフィックス

パイプラインの構造

再掲

ジオメト

ラスタラ

イザ

アプリケ

ーション

Kageyama (Kobe Univ.) Visualization 2014.04.15 45 / 57

Page 46: WebGL によるデータ可視化入門 - research.kobe-u ... · WebGLによるデータ可視化入門 はじめに 陰山聡 神戸大学システム情報学研究科計算科学専攻

コンピュータグラフィックス

ラスタライザステージビューボリューム内のデータ(3D)+テクスチャデータ(2D) → 画像(2D)

頂点のデータ → ピクセルの色

簡単のため、スクリーンマッピングを省略すると

Kageyama (Kobe Univ.) Visualization 2014.04.15 46 / 57

Page 47: WebGL によるデータ可視化入門 - research.kobe-u ... · WebGLによるデータ可視化入門 はじめに 陰山聡 神戸大学システム情報学研究科計算科学専攻

コンピュータグラフィックス

ラスタライザステージ

デプステスト。後述(p. 51)

アルファテスト

ステンシルテスト

テクスチャマッピング

Kageyama (Kobe Univ.) Visualization 2014.04.15 47 / 57

Page 48: WebGL によるデータ可視化入門 - research.kobe-u ... · WebGLによるデータ可視化入門 はじめに 陰山聡 神戸大学システム情報学研究科計算科学専攻

コンピュータグラフィックス

グラフィックスハードウェア

グラフィックスハードウェアの概念図

→ 【図】

Kageyama (Kobe Univ.) Visualization 2014.04.15 48 / 57

Page 49: WebGL によるデータ可視化入門 - research.kobe-u ... · WebGLによるデータ可視化入門 はじめに 陰山聡 神戸大学システム情報学研究科計算科学専攻

コンピュータグラフィックス

フレームバッファ

カラーバッファ

Zバッファ

ステンシルバッファ

Kageyama (Kobe Univ.) Visualization 2014.04.15 49 / 57

Page 50: WebGL によるデータ可視化入門 - research.kobe-u ... · WebGLによるデータ可視化入門 はじめに 陰山聡 神戸大学システム情報学研究科計算科学専攻

コンピュータグラフィックス

カラーバッファ

ピクセル RGBA

16 bits, 23 bits, 32 bits

RGBA32 = R8 + G8 + B8 + A8

Kageyama (Kobe Univ.) Visualization 2014.04.15 50 / 57

Page 51: WebGL によるデータ可視化入門 - research.kobe-u ... · WebGLによるデータ可視化入門 はじめに 陰山聡 神戸大学システム情報学研究科計算科学専攻

コンピュータグラフィックス

Zバッファ

Z-buffer

デプステスト

Edwin Catmullが考案。→ 写真

博士論文(1974年)。

RenderMan開発(アカデミー賞)

ルーカスフィルム → ピクサー設立。

ウォルト・ディズニー・アニメーション・スタジオ社長

Kageyama (Kobe Univ.) Visualization 2014.04.15 51 / 57

Page 52: WebGL によるデータ可視化入門 - research.kobe-u ... · WebGLによるデータ可視化入門 はじめに 陰山聡 神戸大学システム情報学研究科計算科学専攻

コンピュータグラフィックス

Z-buffer

x

z

za

zb

za < zb

Kageyama (Kobe Univ.) Visualization 2014.04.15 52 / 57

Page 53: WebGL によるデータ可視化入門 - research.kobe-u ... · WebGLによるデータ可視化入門 はじめに 陰山聡 神戸大学システム情報学研究科計算科学専攻

コンピュータグラフィックス

Z-buffer

x

z

Kageyama (Kobe Univ.) Visualization 2014.04.15 53 / 57

Page 54: WebGL によるデータ可視化入門 - research.kobe-u ... · WebGLによるデータ可視化入門 はじめに 陰山聡 神戸大学システム情報学研究科計算科学専攻

コンピュータグラフィックス

Z-buffer

x

z

Kageyama (Kobe Univ.) Visualization 2014.04.15 54 / 57

Page 55: WebGL によるデータ可視化入門 - research.kobe-u ... · WebGLによるデータ可視化入門 はじめに 陰山聡 神戸大学システム情報学研究科計算科学専攻

コンピュータグラフィックス

Z-buffer

za = z1 + (z2 − z1)xs − x1x2 − x1

zb = z2 + (z3 − z2)xs − x2x3 − x2

zp = za + (zb − za)yp − ybyb − xa

x

z

1

2

3

xs

a

b

p

Kageyama (Kobe Univ.) Visualization 2014.04.15 55 / 57

Page 56: WebGL によるデータ可視化入門 - research.kobe-u ... · WebGLによるデータ可視化入門 はじめに 陰山聡 神戸大学システム情報学研究科計算科学専攻

コンピュータグラフィックス

デプスマップアルゴリズムシャドウマップアルゴリズムともいう (Williams1978)

光源に視点をおいてレンダリング

光源からオブジェクトの各点までの距離 → zバッファ → 2次元データ→ テクスチャ→ テクスチャマッピング

Kageyama (Kobe Univ.) Visualization 2014.04.15 56 / 57

Page 57: WebGL によるデータ可視化入門 - research.kobe-u ... · WebGLによるデータ可視化入門 はじめに 陰山聡 神戸大学システム情報学研究科計算科学専攻

コンピュータグラフィックス

ステンシルバッファ

カラーバッファの値を実際に描画するかどうかをピクセル単位で制御

「型紙」

Kageyama (Kobe Univ.) Visualization 2014.04.15 57 / 57