Shaderシェーダで小数点を使う時には、float、half、fixedの3つの型が使えます。この記事ではこれらの違いと使い分けについて簡単にまとめます。深入りはしません(できません)。そもそもなぜ3種類も使うのか?GPUで計算するとき、より精度の低い型を使えばよりパフォーマンスが出るし、消費電力が抑えられます。GPUでは単純な計算を大量に並列処理するので、この効果はより顕著なものとなります。そのためシェーダでは可能な限り低い精度の型を使って計算をするというわけです。サイズと範囲と精度の違いまずサイズについては下記のような違いがあります。32bitまた、扱える範囲と精度は次のように異なります。使う際に意識しなければならないのは精度なので、そういう意味でサイズよりも重要です。範囲は大きく精度は高い(一般的なfloat)ざっくりですが、これだけわかれば十分です。実際どのように使い分ければいいのか?上記の知識が得られたところで、シェーダを書きながらいちいち精度を考えていられません。Unityのマニュアルにも書いてありますが、実際には下記のルールに従って使い分ければOKです。ワールド座標、UV座標を取り扱う場合はfloatを使うその他は全部half例外的に、テクスチャをサンプリングしてその後加工しない場合はfixedを使う上記のルールで問題が起こったら一つ上の精度の型を使うPCとモバイルの違い精度の問題は、PCとモバイル端末で見え方が違うことで判明することが多いです。これは、PCではhalfとかfixedとか書いてもすべてfloatとして扱われるためです。これに対してモバイルのGPUではパフォーマンスがシビアなので、上記のように型が分けられています。モバイルでも仕様はまちまちな部分があり、特にfixedをhalfと同じものとして取り扱うGPUは少なくないようです。この辺りを調べだすとややこしいですが、前節の使い分けのルールに従っていれば特に意識しなくていいことであるとは思います。»プロフィールUnityエンジニア。グラフィックスへの興味が強めです。Blur(渦巻ブラー)のポストエフェクトを実装する月別アーカイブはてなブログをはじめよう!halya_11さんは、はてなブログを使っています。ブログを報告するスターをつけました引用をストックしましたストック一覧を見る閉じる引用するにはまずログインしてくださいログイン閉じる引用をストックできませんでした。再度お試しください閉じる限定公開記事のため引用できません。