Soumettre la recherche
Mettre en ligne
WAVE_WITH_GLSL
•
Télécharger en tant que PPTX, PDF
•
4 j'aime
•
1,381 vues
理
理玖 川崎
Suivre
このスライドはComgGIg2で発表したものです。 GLSLで簡単な波を作成しました。
Lire moins
Lire la suite
Technologie
Signaler
Partager
Signaler
Partager
1 sur 111
Télécharger maintenant
Recommandé
多重Cfの作り方
多重Cfの作り方
Naoki Ohguma
AWS初心者が自作CGIをサーバレス実装の設計をしてみる
AWS初心者が自作CGIをサーバレス実装の設計をしてみる
祐樹 夏目
emruby: ブラウザで動くRuby
emruby: ブラウザで動くRuby
mametter
I'd like to propose a plan for our new Shibuya.trac-2009/07/20
I'd like to propose a plan for our new Shibuya.trac-2009/07/20
Kazumasa EBATA
CGI Perlでわかる!サーバレス
CGI Perlでわかる!サーバレス
Tatsuro Hisamori
Roppongi pm-when-camel-was-pink
Roppongi pm-when-camel-was-pink
近藤 嘉雪
Ruby で高速なプログラムを書く
Ruby で高速なプログラムを書く
mametter
ユークリッド最小全域木
ユークリッド最小全域木
理玖 川崎
Recommandé
多重Cfの作り方
多重Cfの作り方
Naoki Ohguma
AWS初心者が自作CGIをサーバレス実装の設計をしてみる
AWS初心者が自作CGIをサーバレス実装の設計をしてみる
祐樹 夏目
emruby: ブラウザで動くRuby
emruby: ブラウザで動くRuby
mametter
I'd like to propose a plan for our new Shibuya.trac-2009/07/20
I'd like to propose a plan for our new Shibuya.trac-2009/07/20
Kazumasa EBATA
CGI Perlでわかる!サーバレス
CGI Perlでわかる!サーバレス
Tatsuro Hisamori
Roppongi pm-when-camel-was-pink
Roppongi pm-when-camel-was-pink
近藤 嘉雪
Ruby で高速なプログラムを書く
Ruby で高速なプログラムを書く
mametter
ユークリッド最小全域木
ユークリッド最小全域木
理玖 川崎
RNNで頑張ろう
RNNで頑張ろう
理玖 川崎
カードの取り合い
カードの取り合い
理玖 川崎
石油
石油
理玖 川崎
釣り
釣り
理玖 川崎
区間和剰余クエリ
区間和剰余クエリ
理玖 川崎
解説:ボス
解説:ボス
理玖 川崎
解説:デバッグ
解説:デバッグ
理玖 川崎
解説:貢物
解説:貢物
理玖 川崎
解説:歩くNPCたち
解説:歩くNPCたち
理玖 川崎
解説:エンブレム
解説:エンブレム
理玖 川崎
線形識別によるパターン認識
線形識別によるパターン認識
理玖 川崎
解説:サポーター
解説:サポーター
理玖 川崎
解説:おおきな数を作った
解説:おおきな数を作った
理玖 川崎
解説:吹奏楽部
解説:吹奏楽部
理玖 川崎
スマートフォンを用いた新生児あやし動作の教示システム
スマートフォンを用いた新生児あやし動作の教示システム
sugiuralab
論文紹介:Automated Classification of Model Errors on ImageNet
論文紹介:Automated Classification of Model Errors on ImageNet
Toru Tamaki
SOPを理解する 2024/04/19 の勉強会で発表されたものです
SOPを理解する 2024/04/19 の勉強会で発表されたものです
iPride Co., Ltd.
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)
Hiroki Ichikura
論文紹介:Semantic segmentation using Vision Transformers: A survey
論文紹介:Semantic segmentation using Vision Transformers: A survey
Toru Tamaki
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
Ryo Sasaki
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...
Toru Tamaki
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
Yuma Ohgami
Contenu connexe
Plus de 理玖 川崎
RNNで頑張ろう
RNNで頑張ろう
理玖 川崎
カードの取り合い
カードの取り合い
理玖 川崎
石油
石油
理玖 川崎
釣り
釣り
理玖 川崎
区間和剰余クエリ
区間和剰余クエリ
理玖 川崎
解説:ボス
解説:ボス
理玖 川崎
解説:デバッグ
解説:デバッグ
理玖 川崎
解説:貢物
解説:貢物
理玖 川崎
解説:歩くNPCたち
解説:歩くNPCたち
理玖 川崎
解説:エンブレム
解説:エンブレム
理玖 川崎
線形識別によるパターン認識
線形識別によるパターン認識
理玖 川崎
解説:サポーター
解説:サポーター
理玖 川崎
解説:おおきな数を作った
解説:おおきな数を作った
理玖 川崎
解説:吹奏楽部
解説:吹奏楽部
理玖 川崎
Plus de 理玖 川崎
(14)
RNNで頑張ろう
RNNで頑張ろう
カードの取り合い
カードの取り合い
石油
石油
釣り
釣り
区間和剰余クエリ
区間和剰余クエリ
解説:ボス
解説:ボス
解説:デバッグ
解説:デバッグ
解説:貢物
解説:貢物
解説:歩くNPCたち
解説:歩くNPCたち
解説:エンブレム
解説:エンブレム
線形識別によるパターン認識
線形識別によるパターン認識
解説:サポーター
解説:サポーター
解説:おおきな数を作った
解説:おおきな数を作った
解説:吹奏楽部
解説:吹奏楽部
Dernier
スマートフォンを用いた新生児あやし動作の教示システム
スマートフォンを用いた新生児あやし動作の教示システム
sugiuralab
論文紹介:Automated Classification of Model Errors on ImageNet
論文紹介:Automated Classification of Model Errors on ImageNet
Toru Tamaki
SOPを理解する 2024/04/19 の勉強会で発表されたものです
SOPを理解する 2024/04/19 の勉強会で発表されたものです
iPride Co., Ltd.
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)
Hiroki Ichikura
論文紹介:Semantic segmentation using Vision Transformers: A survey
論文紹介:Semantic segmentation using Vision Transformers: A survey
Toru Tamaki
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
Ryo Sasaki
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...
Toru Tamaki
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
Yuma Ohgami
TSAL operation mechanism and circuit diagram.pdf
TSAL operation mechanism and circuit diagram.pdf
taisei2219
Dernier
(9)
スマートフォンを用いた新生児あやし動作の教示システム
スマートフォンを用いた新生児あやし動作の教示システム
論文紹介:Automated Classification of Model Errors on ImageNet
論文紹介:Automated Classification of Model Errors on ImageNet
SOPを理解する 2024/04/19 の勉強会で発表されたものです
SOPを理解する 2024/04/19 の勉強会で発表されたものです
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)
論文紹介:Semantic segmentation using Vision Transformers: A survey
論文紹介:Semantic segmentation using Vision Transformers: A survey
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
TSAL operation mechanism and circuit diagram.pdf
TSAL operation mechanism and circuit diagram.pdf
WAVE_WITH_GLSL
1.
WAVE_WITH_GLSL このスライドはComgGig2で発表 したものです。
2.
こんにちは!
3.
自己紹介 • RaspBerry Pi
持ってました
4.
自己紹介 • RaspBerry Pi
持ってました • はんだ付けに失敗しました
5.
自己紹介 • RaspBerry Pi
持ってました • はんだ付けに失敗しました • 新しいの買いました
6.
自己紹介 • RaspBerry Pi
持ってました • はんだ付けに失敗しました • 新しいの買いました • Survoblasterしか入ってません
7.
自己紹介 • C#に挫折
8.
自己紹介 • C#に挫折 • ActionScript
9.
自己紹介 • C#に挫折 • ActionScript
+ Stage3D
10.
自己紹介 • C#に挫折 • ActionScript
+ Stage3D • よりネイティブなコートが書きたい
11.
自己紹介 • C#に挫折 • ActionScript
+ Stage3D • よりネイティブなコートが書きたい • →C++
12.
自己紹介 • C#に挫折 • ActionScript
+ Stage3D • よりネイティブなコートが書きたい • →C++ SDL Opengl
13.
自己紹介 • C#に挫折 • ActionScript
+ Stage3D • よりネイティブなコートが書きたい • →C++ SDL Opengl GLSL
14.
自己紹介 • C#に挫折 • ActionScript
+ Stage3D • よりネイティブなコートが書きたい • →C++ SDL Opengl GLSL
15.
WAVE_WITH_GLSL
16.
WAVE_WITH_GLSL GLSLで波をやってみよう
17.
WAVE_WITH_GLSL GLSLで波をやってみよう
18.
WAVE_WITH_GLSL GLSLで波をやってみよう GLSLって何?
19.
GLSLとは • GLSL (OpenGL
Shading Language) は GLslangとしても知られ、C言語をベー スとした高レベルシェーディング言語 である。これはアセンブリ言語やハー ドウェアに依存した言語を使わないで、 開発者がグラフィックスパイプライン を直接制御できるようにOpenGL ARB で策定された。 • Wikipediaより引用
20.
GLSLとは • GLSL (OpenGL
Shading Language) はGLslangとしても知られ、C言語を ベースとした高レベルシェーディング 言語である。これはアセンブリ言語や ハードウェアに依存した言語を使わな いで、開発者がグラフィックスパイプ ラインを直接制御できるようにOpenGL ARBで策定された。 • Wikipediaより引用
21.
OpenGLって何?
22.
OpenGLとは • OpenGL(オープンジーエル、Open Graphics Library)は、Khronosグルー プが策定しているグラフィックスハー ドウェアのアプリケーションプログラ ミングインタフェース
(API)。2次元・3 次元コンピュータグラフィックス両方 が扱える。 • Wikipediaより引用
23.
OpenGLとは • オープン仕様として公開され、幅広い 処理系に対応しているため、広く一般 に普及している。グラフィックデバイ スとの直接通信を行なう抽象化レイ ヤーAPIであるため、非常に高速に動作 し、高精度な3D画像を描画できる。有 償・無償の豊富な補助ライブラリがあ るのも特色として挙げられる。 • Wikipediaより引用
24.
まとめると OpenGLとは
25.
OpenGLとは • 高品質なグラフィックスが
26.
OpenGLとは • 高品質なグラフィックスが • 速く、
27.
OpenGLとは • 高品質なグラフィックスが • 速く、 •
フリーで、
28.
OpenGLとは • 高品質なグラフィックスが • 速く、 •
フリーで、 • いろいろなところで使える。
29.
OpenGLとは • 高品質なグラフィックスが • 速く、 •
フリーで、 • いろいろなところで使える。 • たまに違うバージョン使うとで自分が 使ってたAPIが非推奨でつらくなる APIは簡単だよ!!
30.
GLSLとは • GLSL (OpenGL
Shading Language) は GLslangとしても知られ、C言語をベー スとした高レベルシェーディン グ言語である。これはアセンブリ言 語やハードウェアに依存した言語を使 わないで、開発者がグラフィックスパ イプラインを直接制御できるように OpenGL ARBで策定された。 • Wikipediaより引用
31.
シェーディング言語って 何?
32.
シェーディング言語とは • 行列、ベクトルなどの型をサポートし ている、グラフィックス向けの処理に 特化した言語。
33.
シェーディング言語とは • 行列、ベクトルなどの型をサポートし ている、グラフィックス向けの処理に 特化した言語。 • GPU上で直接実行されるため、非常に 高速に動作する。
34.
まとめると GLSLとは
35.
GLSLとは • OpenGLで表示を行うときに、 何らかの効果をつけることができるもの
36.
GLSLとは • OpenGLで表示を行うときに、 何らかの効果をつけることができるもの • GPUを使った高速な処理で、 リアルタイムに表示できる。
37.
GLSLの仕組み
38.
GLSLの仕組み • 頂点シェーダー、フラグメントシェー ダー、ジオメトリシェーダーというも のがあります。
39.
GLSLの仕組み • 頂点シェーダー、フラグメントシェー ダー、ジオメトリシェーダーというも のがあります。 • 僕はジオメトリシェーダーほとんど 使ってないです。
40.
GLSLの仕組み • プログラム • ↓
いろいろなデータ • 頂点シェーダー • ↓ いろいろなデータ • フラグメントシェーダー • ↓ 色情報 • 画面
41.
いろいろなデータって 何?
42.
いろいろなデータ • 頂点情報
43.
いろいろなデータ • 頂点情報 • テクスチャ
44.
いろいろなデータ • 頂点情報 • テクスチャ •
変換行列
45.
いろいろなデータ • 頂点情報 • テクスチャ •
変換行列 •なんでも送れるよ
46.
WAVE_WITH_GLSL GLSLで波をやってみよう
47.
波を作ってみる • 頂点シェーダーでメッシュを波の形に 変形します。
48.
波を作ってみる • 頂点シェーダーでメッシュを波の形に 変形します。 • フラグメントシェーダーで反射とか 屈折を計算します
49.
頂点シェーダーでの変形
50.
頂点シェーダーでの変形 • まず細かく分割された平らなメッシュ を作っておきます。
51.
頂点シェーダーでの変形 • それぞれの頂点を、X座標とZ座標と時 間から計算していい感じの高さに移動 させ、メッシュを波の形に変形します。
52.
頂点シェーダーでの変形 • それぞれの頂点を、X座標とZ座標と時 間から計算していい感じの高さに移動 させ、メッシュを波の形に変形します。 • 法線の向きはその頂点が含まれる面の 法線の平均で求めます。
53.
どうやって変形するか
54.
パーリンノイズ
55.
パーリンノイズ • Ken Perlinさんが作った偉いノイズ
56.
何が偉いの?
57.
パーリンノイズ • 自然なノイズができる
58.
パーリンノイズ • 空間上の点Xでの乱数を取得する。
59.
パーリンノイズ • 空間上の点Xでの乱数を取得する。 • 空間内に格子があると考える。
60.
パーリンノイズ • 空間上の点Xでの乱数を取得する。 • 空間内に格子があると考える。 •
それぞれの格子点からランダムな方向 に正規ベクトルが伸びていると考える
61.
パーリンノイズ • Xが含まれる領域を構成する格子点それ ぞれに対し、(格子点→X)とさきほど のランダムなベクトルとの内積をとる。
62.
パーリンノイズ • 適当に補完する。 • http://webstaff.itn.liu.se/~stegu/TNM022- 2005/perlinnoiselinks/perlin-noise-math-faq.html
63.
パーリンノイズ • 恥ずかしながら自分の実装は重すぎて 使い物にならなりませんでした
64.
パーリンノイズ • 恥ずかしながら自分の実装は重すぎて 使い物にならなりませんでした • https://github.com/ashima/webgl-noise から拝借させていただきました。
65.
パーリンノイズ • 好都合なことにこのノイズ生成方法は 任意個の引数から一つの値を返せます。
66.
パーリンノイズ • 好都合なことにこのノイズ生成方法は 任意個の引数から一つの値を返せます。 • 引数にX座標、Z座標、時間を与えると いい感じの高さにしてくれました。
67.
パーリンノイズ • その部分だけを実装してみた。
68.
フラグメントシェーダー
69.
フラグメントシェーダー • 反射、屈折用にスカイボックスを用意 する。
70.
スカイボックスって何?
71.
スカイボックス • こういう画像から
72.
スカイボックス • こういうものを作る
73.
フラグメントシェーダー • 頂点シェーダーから、頂点座標と法線 を受け取る。
74.
フラグメントシェーダー • 頂点シェーダーから、頂点座標と法線 を受け取る。 • そこから光の反射、屈折ベクトルを計 算して、スカイボックスから色情報を 得て、元の色と混ぜた色を出力する。
75.
フラグメントシェーダー • 頂点シェーダーから、頂点座標と法線 を受け取る。 • そこから光の反射、屈折ベクトルを 計算して、スカイボックスから色情報 を得て、元の色と混ぜた色を出力する。
76.
反射ベクトルの求め方
77.
反射ベクトル • 法線ベクトルをN、入射ベクトルをVと 置くと、
78.
反射ベクトル • 法線ベクトルをN、入射ベクトルをVと 置くと、 • 𝑁
× 2 × 𝑑𝑜𝑡(−𝑉, 𝑁) + 𝑉 • で求まる。
79.
フラグメントシェーダー • 頂点シェーダーから、頂点座標と法線 を受け取る。 • そこから光の反射、屈折ベクトルを 計算して、スカイボックスから色情報 を得て、元の色と混ぜた色を出力する。
80.
屈折ベクトルの求め方
81.
スネルの法則
82.
スネルの法則 • この角度の時・・・
83.
スネルの法則 • sin(α) sin(β) = 𝑛2 𝑛1 • (𝑛1は空気の屈折率、𝑛2は水の屈折率) • が成り立つ。
84.
屈折ベクトル • スネルの法則を使って計算する。
85.
屈折ベクトル • スネルの法則を使って計算する。 • 簡単のため、屈折率の比を n
(= sin(β) sin(α) ) と定義する
86.
屈折ベクトル • V、N、nから屈折ベクトルを求める
87.
屈折ベクトル • V、N、nから屈折ベクトルを求める • cos(α)
= 𝑑𝑜𝑡(−𝑉, 𝑁) • cos(β) = 1 − 𝑛2(1 − 𝑐𝑜𝑠2(α))
88.
屈折ベクトル • V、N、nから屈折ベクトルを求める • cos(α)
= 𝑑𝑜𝑡(−𝑉, 𝑁) • cos(β) = 1 − 𝑛2(1 − 𝑐𝑜𝑠2(α)) • 𝑉 × 𝑛 + n × cos α − cos β × 𝑁 と求まる
89.
フラグメントシェーダー • 反射光と屈折光をそれぞれ0.7倍して混 ぜた場合
90.
フラグメントシェーダー • フレネル効果を考えて比率を調整する。
91.
フレネル効果って何?
92.
フレネル効果 • 水面をのぞき込む角度によって、屈折 光がよく見えたり反射光がよく見えた りする現象。
93.
フレネルの式
94.
フレネルの式 • 光が透過物の表面でどれだけ反射する かを求める式。
95.
フレネルの式 • こういう角度の時・・・
96.
フレネルの式 • sin 𝛼−𝛽 sin 𝛼+𝛽 2 + tan
𝛼−𝛽 tan 𝛼+𝛽 2 2 • で求められる。
97.
フレネルの式 • VとNから求める
98.
フレネルの式 • VとNから求める • cos
α , cos β , 𝑛 から求まればよい
99.
フレネルの式 • VとNから求める • cos
α , cos β , 𝑛 から求まればよい • 展開すると・・・
100.
フレネルの式 • VとNから求める • cos
α , cos β , 𝑛 から求まればよい • 展開すると・・・ • n×cos α −cos(β) n×cos α +cos(β) 2 + n×cos β −cos(α) n×cos β +cos(α) 2 2
101.
フラグメントシェーダー • フレネル効果を実装した(屈折光は光 が減衰すると考えて0.5倍した)
102.
フラグメントシェーダー • カメラを波に合わせて移動
103.
まとめ
104.
まとめ • GLSLを使うと簡単に効果を作れる
105.
まとめ • GLSLを使うと簡単に効果を作れる • 可能性は無限大
106.
まとめ • GLSLを使うと簡単に効果を作れる • 可能性は無限大 •
GLSLの波はまだ中高生にはあまり届い ていない?
107.
友人Kとの会話 • 僕「画像処理もGLSLでやろう!」
108.
友人Kとの会話 • 僕「画像処理もGLSLでやろう!」 • K「並行処理で常勝!」
109.
友人Kとの会話 • 僕「画像処理もGLSLでやろう!」 • K「並行処理で常勝!」 •
僕「・・・」
110.
みんなOpenGLやろう!
111.
WAVE_WITH_GLSL ご清聴ありがとうございました
Télécharger maintenant