0

glowscript.orgは、JavaScript または CoffeeScript で書かれた、ほとんどコードを含まないさまざまなデモ プログラムがあります。

たとえば、1 行のプログラムbox()は、基本的な照明 (2 つの遠隔照明といくつかの環境照明) を含む多くの既定値 (オーバーライド可能) のおかげで、回転とズームが可能な 3D 立方体を作成します。

問題:

これらのプログラムは、Windows、Mac、および Linux の多くのブラウザーで正常に動作しますが、Samsung Galaxy S3 の Firefox では非常に暗いです。外観は、環境光が機能することを示しています (それを増やすとシーンが明るくなります) が、遠方の光は機能しません (オンまたはオフの違いはありません)。Web で見つけた WebGL デモをいくつか実行してみましたが、問題ないようです。

どこで問題を探すべきか、誰でも考えられますか? デスクトップ/ラップトップの動作と、Galaxy S3 での動作とで動作が大きく異なるのはなぜですか?

4

1 に答える 1

0

Galaxy スマートフォンの問題を修正し、GlowScript ヘルプに以下を追加しました。

「ほとんどのタブレットとスマートフォンはまだ WebGL をサポートしていませんが、これは変更される可能性があります。Samsung Galaxy S3 スマートフォンでは、Firefox と Opera は GlowScript プログラムを実行しますが、アニメーションは遅く、透過性にはバグがあり、現在のところ WebGL をサポートする方法はありません。ズームと回転。GlowScript は Sony Experia スマートフォンでも動作するという報告があります。」

問題は、Galaxy シェーダー コンパイラーが for ループを正しく処理しないことでした。フラグメント シェーダーには、さまざまなライト (最大 8 つのライト) に対する for ループがありました。for ループで設定された変数が、指定された値ではなくゼロに設定されることがよくありました。解決策は、ループを次のような直線構造に置き換えることでした。ここで、LP(i) と LC(i) はライトの位置と色です。

if (light_count == 0) return;
calc_color(LP(0), LC(0));
if (light_count == 1) return;
calc_color(LP(1), LC(1));
if (light_count == 2) return;
etc.

うん。幸いなことに、限られた数のライトをサポートするだけで済みます。

于 2012-10-04T17:24:23.317 に答える