WebGLの「重い」とは

有益そうな話だったので
0
Takuo Kihira @tkihira

Canvas上でブラウザ作ればいいんだよ

2016-07-01 00:18:34
Takuo Kihira @tkihira

まあやはりあれですな、全画面Canvasが最適解だな

2016-07-01 00:16:39
h_doxas @h_doxas

@FL1NE わたし全然そういうの計測する方法わからんのだけど、表向きに見えてなくてもやっぱり OS がある程度は確保してるもんなのかな?

2016-07-01 00:15:55
Tomoki SHISHIKURA (FL1NE) @FL1NE

@h_doxas あ、それどうなのか、若干気になりますね。

2016-07-01 00:14:06
Takuo Kihira @tkihira

WebGLが嫌われる理由として、ブラウザがOpenGLを使っているためにWebGL側で重い処理をするとブラウザの表示に支障がある可能性がある、というのは、今までの自分があまり気に留めていなかった素晴らしい指摘だった。 twitter.com/kioku_systemk/…

2016-07-01 00:10:18
Kentaro Oku @kioku_systemk

@tkihira @h_doxas drawArrays自体は非同期のはずです。(実装によりますが少なくともOpenGLでは。)描画したものをDOMでコンポジションするのが重い原因になってると思います。(ブラウザもOpenGLなどを利用しているためDOM描画自体も遅くなります。

2016-07-01 00:01:01
h_doxas @h_doxas

そうすれば全ての描画リソースはブラウザのものだからブラウザのものは WebGL のものですね?

2016-07-01 00:09:46
h_doxas @h_doxas

ブラウザしか画面に映さなければよい?

2016-07-01 00:09:15
Takuo Kihira @tkihira

@h_doxas @kioku_systemk なるほど、確かに。そういうことを考えると、PCよりもスマートフォンWebGLの方がブラウザのOpenGL使用割合が少なさそうなので(スマートフォンのWebGLページだと基本全画面表示が基本になるため)、使用に適していそうですね。

2016-07-01 00:08:15
nikq @nikq

@kioku_systemk OSの描画システムが別リングにならない限り改善しなさそう

2016-07-01 00:07:18
h_doxas @h_doxas

横から失礼してくれる師匠最高すぎる

2016-07-01 00:05:13
h_doxas @h_doxas

確かに MBP とかが Shadertoy とかで殺されるときはそんな感じだ

2016-07-01 00:04:13
h_doxas @h_doxas

@kioku_systemk @tkihira なるほど。なんとなく、引っ張られるとか、つられる、という表現が個人的にはしっくりきました。確かにブラウザだって GPU 使ってますよね。

2016-07-01 00:02:10
Kentaro Oku @kioku_systemk

@tkihira @h_doxas drawArrays自体は非同期のはずです。(実装によりますが少なくともOpenGLでは。)描画したものをDOMでコンポジションするのが重い原因になってると思います。(ブラウザもOpenGLなどを利用しているためDOM描画自体も遅くなります。

2016-07-01 00:01:01
Takuo Kihira @tkihira

@kioku_systemk @h_doxas おお、ありがとうございます。「GLSLsandboxなどで重いシェーダを見たときのような状態」というのはわかりやすいです。drawArraysが非同期になれば解決するのかな?

2016-06-30 23:52:30
Tomoki SHISHIKURA (FL1NE) @FL1NE

GPUの描画遅れが、JSの遅れとかを誘発して、めっちゃ重くなるのか. 通りで、同じシェーダーをWebGLと、ネイティブで動かしたときに差があるわけか. twitter.com/kioku_systemk/…

2016-06-30 23:51:27
Kentaro Oku @kioku_systemk

@h_doxas @tkihira 横から失礼します。WebGLで重く感じる場合、jsよりも、GPUでの描画処理が重く、canvasの更新が遅れ、つられてDOMのレンダリングが遅くなる場合が多いように思います。GLSLsandboxなどで重いシェーダを見たときのような状態です。

2016-06-30 23:47:35
Kentaro Oku @kioku_systemk

@h_doxas @tkihira 横から失礼します。WebGLで重く感じる場合、jsよりも、GPUでの描画処理が重く、canvasの更新が遅れ、つられてDOMのレンダリングが遅くなる場合が多いように思います。GLSLsandboxなどで重いシェーダを見たときのような状態です。

2016-06-30 23:47:35
h_doxas @h_doxas

@tkihira そうですね。ウェブのひとたちはどうしても傾向としてネイティブなソフトウェアが当たり前にやってる最適化とかマルチスレッド化とか考えない場合が多いと思うので、そういう知識や経験のある人からすると、憤りにつながりやずいのかもしれません。

2016-06-30 23:17:12
Takuo Kihira @tkihira

@h_doxas ということは、そこら辺の処理をWorkerに投げれば解決する…かもしれませんね。

2016-06-30 23:15:16
h_doxas @h_doxas

@tkihira これは完全に想像ですが、割りとリッチな人体モデルの頂点データとかを CPU でばしばしやってるときが、そういう悲しい発言を生んでいるような気はします。VBO 作ってるときとか……

2016-06-30 23:14:06
Takuo Kihira @tkihira

@h_doxas うーん、低スペックマシンを仕様している時にWebGLのページでフリーズする可能性があるとすると、どこらへんの処理になるんでしょうか…。初期化は言うほど重くないですよね。データのダウンロードは非同期なのでフリーズしないし…。

2016-06-30 23:11:35
h_doxas @h_doxas

@tkihira 大げさに言っている場合のほうが確かに多いのかもしれないですね。でもやむにやまれず古いマシン(それこそ10年戦士のオンボード)使わざるを得ない場合だと、ありえるんじゃないかなとは思います。私はそういう経験が実際にあって当時かなりつらかったですw

2016-06-30 23:07:20
Takuo Kihira @tkihira

JavaScriptのThreading(というかSharedArrayBuffer)は早めに導入して欲しいな

2016-06-30 23:06:20
Takuo Kihira @tkihira

@h_doxas 現実問題、低スペックマシンだとしても、開いただけでフリーズしますかね?JavaScriptのメインスレッドをぶん回すようなことはあまり無いと思うのですが…そうでもないのかな?

2016-06-30 23:03:25
h_doxas @h_doxas

@tkihira あとは単純に、すごく冷めてて OpenGL シリーズ全体をはなっから毛嫌いしているタイプの人とかですかねw

2016-06-30 23:01:48
h_doxas @h_doxas

@tkihira 概ね、開いただけでフリーズするわやめろや的なものが多い気がします。まあ PC 買い換えたらどうですかという気持ちになることもあるんですけど、私も古いマシンの時は苦しい思いをしたから、なんとなく気持ちはわかります。あとはモバイルでうっかり開いちゃったとか。

2016-06-30 23:01:03