プロジェクト演習Ⅳ インタラクティブゲーム制作 プログラミング4

Slides:



Advertisements
Similar presentations
シミュレーション演習 G. 総合演習 ( Mathematica 演 習) システム創成情報工学科 テキスト作成: 藤尾 光彦 講義担当: 尾下 真樹.
Advertisements

Absolute Orientation. Absolute Orientation の問題 二つの座標系の間における剛体 (rigid body) 変換を復元す る問題である。 例えば: 2 台のステレオカメラから得られた3次元情報の間の関 係を推定する問題。 2 台のステレオカメラから得られた3次元情報の間の関.
初年次セミナー 第13回 2次元グラフィックス(1).
情報処理演習 (9)グラフィックス システム科学領域 日浦 慎作.
プログラミング演習3 李 亜民クラス 第2回 ラスタライズ.
プロジェクト演習Ⅳ インタラクティブゲーム制作 プログラミング4
プログラミング入門 電卓番外編 ~エクセルで関数表示~.
情報・知能工学系 山本一公 プログラミング演習Ⅱ 第4回 配列(2) 情報・知能工学系 山本一公
今日の内容 前回の演習の復習 前回の復習 ポリゴンの描画方法(復習) 基本オブジェクトの描画 ポリゴンモデルの描画 演習課題.
知識情報演習Ⅲ(後半第1回) 辻 慶太(水)
情報理工学部 情報システム工学科 ラシキアゼミ3年 H 岡田 貴大
基礎プログラミングおよび演習 第9回
平成23年8月 情報学群 岡田 守 このスライドは, 前川佳徳編著による「コンピュータグラフィックス」(オーム社)を基に作成されている.
Excelによる3-D/等高線グラフの描画 2変数関数の描画 Excel によるグレイスケールマップ風描画
Excelによる3-D/等高線グラフの描画 2変数関数の描画 Excel によるグレイスケールマップ風描画
シミュレーション物理5 運動方程式の方法: サブルーチンの使い方.
応用情報処理V 第1回 プログラミングとは何か 2004年9月27日.
C言語講座 第4回 ポインタ.
応用情報処理V 第1回 プログラミングとは何か 2003年9月29日.
プログラミング演習Ⅰ 課題2 10進数と2進数 2回目.
プロジェクト演習Ⅳ インタラクティブゲーム制作 プログラミング4
コンピュータグラフィックスS 第6回 第6回 レンダリング・パイプライン システム創成情報工学科 尾下 真樹
シミュレーション演習 G. 総合演習 (Mathematica演習) システム創成情報工学科
プロジェクト演習Ⅱ インタラクティブゲーム制作 イントロダクション2
CGと形状モデリング 授業資料 長井 超慧(東京大学)
C 言語について 補足資料 資料および授業の情報は :
基礎プログラミング演習 第10回.
プロジェクト演習Ⅱ インタラクティブゲーム制作 イントロダクション2
JAVA GUIプログラミング 第2回 グラフィックスを使っての演習 グラフを描こう.
Computer Graphics 第3回 座標変換 芝浦工業大学情報工学科 青木 義満
Cプログラミング演習 第7回 メモリ内でのデータの配置.
電界中の電子の運動 シミュレータ作成 精密工学科プログラミング基礎 資料.
OpenGLを使ったプログラム作成 澤見研究室
プログラミング入門 電卓を作ろう・パートIV!!.
プログラミング 4 記憶の割り付け.
OpenGLライブラリを用いた3次元フラクタルの描画
プロジェクト演習III,V <インタラクティブ・ゲーム制作> プログラミングコース
伺かのための三角関数講座  うかべん大阪# /05/03
日本における3Dプリンタの教育現場への導入状況
長崎大学工学部 情報システム工学科 「パターン認識」って・・・ 何? 宮原・喜安研究室.
可視面・不可視面の判定方法と隠れ面(不可視面)の消去法について述べる.
プロジェクト演習Ⅳ インタラクティブゲーム制作 プログラミング4
正多角形の作図 プログラミングで多角形を描く方法を考えよう 1時間目.
プロジェクト演習Ⅱ インタラクティブゲーム制作
プロジェクト演習Ⅳ・Ⅵ インタラクティブゲーム制作
メモリとメモリアドレス, ポインタ変数,関数へのポインタ渡し
C言語 はじめに 2016年 吉田研究室.
プロジェクト演習Ⅳ・Ⅵ インタラクティブゲーム制作
第1章 いよいよプログラミング!! ~文章の表示 printf~
プロジェクト演習Ⅳ・Ⅵ インタラクティブゲーム制作
プロジェクト演習Ⅳ・Ⅵ インタラクティブゲーム制作
vc-2. Visual Studio C++ のデバッガー (Visual Studio C++ の実用知識を学ぶシリーズ)
プログラミング入門 電卓を作ろう・パートI!!.
Excelによる3-D/等高線グラフの描画 2変数関数の描画 Excel によるグレイスケールマップ風描画
プロジェクト演習III,V <インタラクティブ・ゲーム制作> プログラミングコース
第5回 プログラミングⅡ 第5回
第0章 MMC PCセクションへようこそ! ~VC++導入~
バネモデルの シミュレータ作成 精密工学科プログラミング基礎 資料.
精密工学科プログラミング基礎 第7回資料 (11/27実施)
Visual Studio 2013 の起動と プロジェクトの新規作成 (C プログラミング演習,Visual Studio 2019 対応) 金子邦彦.
プロジェクト演習Ⅳ・Ⅵ インタラクティブゲーム制作
プログラミング入門2 第6回 関数 情報工学科 篠埜 功.
VB6.0でグラフを書こう(とりあえず2次元)
精密工学科プログラミング基礎Ⅱ 第2回資料 今回の授業で習得してほしいこと: 配列の使い方 (今回は1次元,次回は2次元をやります.)
第7章 そろそろ int 以外も使ってみよう! ~データ型 double , bool~
2005年度 データ構造とアルゴリズム 第2回 「C言語の復習:配列」
プログラミング序論演習.
CGと形状モデリング 授業資料 1,2限: 大竹豊(東京大学) 3,4限: 俵 丈展(理化学研究所)
プログラミング演習I 補講用課題
第1章 文字の表示と計算 printfと演算子をやります.
Presentation transcript:

プロジェクト演習Ⅳ インタラクティブゲーム制作 プログラミング4 2011/12/13 シェーダーの基礎

今日の内容 シェーダープログラミングの基礎 トゥーンシェーディングや、テカテカシェーディングができるようになる! シェーダーとは何か、から説明 トゥーンシェーディングや、テカテカシェーディングができるようになる! かもね

シェーダーとは 3次元モデルのデータを描画する際に、 頂点座標の変換やピクセルの色付けを 行うプログラムのこと 旧来はこの部分でお決まりの処理しか 出来なかったが、今は自由にプログラムできるようになった プログラマブルシェーダと呼ぶ

描画処理の流れ 先週にも紹介した流れをもう一度おさらい 4.のステップのところでもろもろな処理が入る 画面をまっさらに 塗りつぶす カメラの位置と向き、その他諸々をセット 描画したいモデルの 座標系をセットする 三角形をたくさんたくさんたくさん描画する (3,4をモデルの個数分) 描き上がった画面を まるっと差し替え

描画処理の実際 形状の頂点データを画面上の座標に変換 頂点で囲われた画面上の領域を色付け

昔はGPU側に丸投げだった 座標変換は行列とベクトルの乗算だし、 色塗りも固定のアルゴリズムでごりごり 塗っていた でもそれじゃ機械的な絵しか描けない! 描きたい!私、自分の思うように描きたい! じゃあどうするか?

まちがい for文をブン回すプログラムを書いて、 頂点やピクセルごとに処理するぜ! それはギャグで 言っているのか? リアルタイムっすよ リアルタイム… for(i=0; i<VertexNum; ++i) { vertex[i] = ……; color[i] = ……; } for(j=0; j<imgH; ++j) { for(i=0; i<imgW; ++i) { pixel[i][j] = ……;

せいかい プログラマブル シェーダをつかう 1頂点、1ピクセルで行う処理を1つの関数として書く 描画処理の時に 「これを使え!」と 指示をすれば、後はGPUがやってくれる // 1頂点分の処理を書く VertexInfo main() { vertex[i] = ……; color[i] = ……; } // 1ピクセル分の処理を書く PixelInfo main() { pixel[i][j] = ……;

シェーダー言語 OpenGLの場合はGLSLという言語 DirectX/XNAの場合はHLSLという言語 両方に対応する言語でCgというのもある C for Graphicsの略…ちょっと無理がある どれでもだいたいやれることは一緒 C言語に近い感覚で、GPU上の処理を記述

とりあえず2種類の シェーダプログラムを覚えよう バーテックスシェーダ 頂点シェーダともいう 描画する形状の1頂点ごとに呼び出されるプログラム フラグメントシェーダ ピクセルシェーダともいう 座標変換の結果、画面上に描画することになった1ピクセルごとに呼び出されるプログラム

バーテックスシェーダの役割 1頂点ごとに次のような処理を記述する モデルの形状データを画面上の座標に変換 法線ベクトルも変換 光源情報も変換 基本的にはフラグメントシェーダへの繋ぎ役 重めの計算は極力こっちでやっておく スキンアニメや水面波の挙動などを書いたりもする

フラグメントシェーダの役割 1ピクセルごとに次のような処理を記述 最終的にはそこの色を決める 座標変換の結果、塗りつぶすことに決まった領域にしか処理範囲が働かない テクスチャの色を拾う処理もここでやる 頂点シェーダから渡された情報が線形補間されて渡されるので、それをうまく利用する

線形補間された値とは 色や法線ベクトルなどのデータを頂点に渡すと、ピクセルにラスタライズする際に段階的に変化する値が割り当てられる

心せねばならないこと 今までGPUが勝手にやってくれていた 部分を、自分で書かねばならなくなる CPUからGPUに情報を引き渡したり、 GPU上で情報を拾ってくるお作法が煩雑 別言語、というのはさほど問題にならない デバッグが面倒 printf()が使えないので色デバッグを使う 調子の乗ってるとめちゃめちゃ重くなる

後はハイパーサンプルタイム 頑張ってついてこいよ! 「OpenGL de プログラミング」で 検索すると色々幸せになれるかも