4/7ページ

平面の鏡面反射(Cubemap)

 以前にReflectionProbeやReflectionMatrixを用いた鏡面反射について記事を掲載しました(平面の鏡面反射)。その際はRenderTextureを用いていましたが、その代わりにCubemapが得られないかとScriptを変更したところ問題が発生しました。CubemapはCamera.RenderToCubemapにより得られますが、これを実行すると、変更したworldToC […]

空の色(大気散乱シミュレーション)

 太陽光が大気へ突入すると散乱が起こります。この散乱をシェーダーでシミュレーションすることで、空の色を描画することができます。この記事では、GPU Gems 2:Chapter 16. Accurate Atmospheric Scatteringを参考にシェーダーを作成しました。 シェーダーの作成 shader  作成したシェーダーは以下の通りです。GPU Gem2のコードから大きな変更はありま […]

法線ベクトルの再計算

 シェーダで頂点を移動すると、元の法線ベクトルは使用できなくなります。そのため、法線ベクトル を再計算する必要があります。法線ベクトルは隣接する頂点もしくはハイトマップから計算することができます。 隣接する頂点を利用する方法  法線ベクトルは、ある点とその近傍の二点の座標を用いることで求めることができます。 ある点 \(P\) における法線ベクトルを求めるには、点 \(P\) から接ベクトル方向へ […]

ゲルストナー波(Gerstner Wave)

※2019/06/16 各シェーダを修正しました。  海洋の荒い波は単純なsin波とは異なり、波の山は鋭く、谷はより広く平になります。このような波はゲルストナー波を用いることで表現することができます。以下にGPU Gems:Chapter 1. Effective Water Simulation from Physical Modelsに掲載されているゲルストナー波の式を示します。3次元における […]

シェーダでトランジション(図形)

外周から回るトランジション  長方形を利用して外側から内側へ回りながら画面を黒くするシェーダを作成しました。 shader  作成したシェーダは以下の通りです。 [crayon-67a3c53798a0f750009032/]  uv座標(0~1)を(-1~1)へ変更し、これに分割数(div)を掛けることにより-分割数~分割数とします。 高さと幅が2となる長方形を作成します。画像に示すように正方形 […]

シェーダでトランジション(ノイズ)

 トランジションとは場面転換をする際に使用される演出効果のことです。このトランジションはグレースケールのルール画像からアルファ値を決定することで作成できます。この記事ではルール画像を使用せずに、シェーダによりアルファ値を決定し、UIのPanelにトランジション用のシェーダを設定したマテリアルをアタッチすることでトランジションを行います。このトランジションシェーダにシェーダでノイズ1、シェーダでノイ […]

シェーダで図形の描画

距離関数  シェーダを用いて図形を描画するには、距離関数が必要となります。この距離関数は図形ごとに異なる関数となります。図形ごとの距離関数とその関数によって描画される図形は以下の通りです。 円  円の距離関数です。radiusによって円の大きさを変更できます。。 楕円  楕円の距離関数です。rは縦横の幅をsizeで大きさを変更できます。 四角形  四角形の距離関数です。sizeによって縦横の幅を変 […]

HP残量によって色が変化するHPゲージ

Color.Lerpを使用する方法 二色を使用したゲージ  以下の白いHPゲージと背景画像を使用し、作成します。 Create→UI→Imageから背景用とゲージ用のImageを作成し、上画像をSource Imageへ設定します。 Script  以下のScriptを作成し、ゲージ用のImageへアッタッチします。Color.LerpによってHP残量に応じた色を求めています。この求めた色をIma […]

シェーダでノイズ3(セルノイズ)

このノイズは細胞のように、区分けされた結果が得られるノイズです セルラーノイズ  このノイズはあるピクセルから、ランダムに与えられた複数の点の中から一番近い点までの距離を出力するノイズです。 始めに、バリューノイズやパーリンノイズで行ったように、UV座標に定数を掛け、その値の小数部分を取り出すことで格子状に区切ります。 この格子ごとにランダムな点を決定します。次に、ピクセルから一番近いランダムな点 […]

シェーダでノイズ2(パーリンノイズ)

 パーリンノイズは単純なランダムノイズと異なり、滑らかなノイズが得られます。そのため、様々なテクスチャの生成や炎、雲及び地形などの自然物を表現する際によく使用されます。 一次元パーリンノイズ  始めに、xの少数部分を取り出します。これにより、整数の間で\(0\)から\(1\)未満の値を繰り返すようになります。したがって、下図で色分けされているように整数の間を一つの区間として区切ることができます。こ […]

1 4 7