5/7ページ

水中の屈折(shader)

テクスチャの取得  描画されている画面をテクスチャで取得し、そのテクスチャを歪ませたのちに水面へ描画することで水中の屈折を表現します。そのためにシェーダ内で画面をテクスチャにしたものを取得する必要があります。以下のコードをサブシェーダ内に追加するだけでテクスチャを取得できます。 [crayon-675d86be1dd32576487663/] 次に、このテクスチャを表示するための座標を以下のコード […]

グリッドシェーダ

グリッド状の線を表示するシェーダです。 shaderの作成  頂点座標を用いてグリッドの表示を行います。vertex shaderから頂点座標をそのままfragment shaderへ渡します(o.pos)。 [crayon-675d86be1e580939797085/] vertex shaderから渡された頂点座標を用いて、グリッドの描画を行います。ここでは、x方向のみを扱います。 [cra […]

法線マップをオブジェクト空間へ変換しシェーディング

 視差マッピングシェーダを作成する際に、反射光等の計算を行いました。このとき、法線マップは接空間のベクトルを示しているので、vertex shaderでライトベクトル等を接空間へ変換した後に、fragment Shaderで法線マップと変換したライトベクトル等で反射を計算しました。ここでふと、全てのベクトルをオブジェクト空間に変換して計算しても当然同じ結果が得られるはず、と考え新たにシェーダを作成 […]

Tessellationを用いた波紋の作成

 前回の記事で作成した波紋を用いて、テッセレーションによって分割された平面に波紋を発生させてみました。テッセレーションの詳細に関しては参考サイトに書かれていますので、ここでは割愛いたします。また、平面を揺らしただけでは様子が分かり難いので、下記アセットを利用してワイヤーフレームで表示しました。 UCLA Wireframe Shader shader  前回記事の波紋を表示するためのshaderを […]

平面の鏡面反射

ReflectionProbeを使用する方法  Create→3DObject→Planeより、鏡面用の平面を作成します。新しくMaterialを作成します。このMaterialのShaderをStandardへ、MetallicとSmoothnessを1へ変更します。そして、このMaterialを平面へアタッチします。 新しく空のゲームオブジェクトを作成し、AddComponentからRefle […]

Textureを合成するShader

Textureを任意の位置に好きな大きさで合成することができるShaderです。 図の青色が元のTexture、赤色が合成するTextureです。 外積と内積を使用する方法 ・Textureを合成する領域かの判別  外積と内積を用いて点Qが合成する赤色の領域(点Pを中心とした大きさ2hの四角形abcd)にあるかどうかを判別します。 \(\vec{ab}\)と\(\vec{aQ}\)の外積\(\ve […]

端が直線にならないHPゲージの作り方(Shader)

 前回の記事では、両端の形状を維持したまま動くゲージをImageのMaskやFilledを用いて作成しました。このゲージをShaderを用いて作成しました。 Shader  作成したShaderは以下の通りです。Imageのカラー変更とImageTypeのFilledは正しく動作するようです。 [crayon-675d86be1fb0a770722996/] Script  適当なゲームオブジェク […]

端が直線にならないHPゲージの作り方

 ゲージをImageのFilledを用いて作成すると、端が直線になってしまいます。そこで、ゲージの形を維持したまま、動かす方法がないかと考え、以下の方法を思いつきました。 ※端が直線にならないHPゲージの作り方(Shader)はこちら Maskを使用した方法 その1  Create→UI→ImageからCanvesに背景用Image、Mask用Imageとゲージ用Imageを作成します。 ゲージ用 […]

軌道予測線をUIに描画

Canvasへの描画  OnPopulateMeshをオーバーライドし、そこでメッシュを作成します。 Positionsへ軌道予測線の座標を代入し、この座標から頂点を決定し、vh.AddUIVertexQuadによって四角いポリゴンを生成します。sizeによって、座標位置を画面サイズ/2ずらし、正しい位置に頂点座標を移動しています。このScriptでは単純に頂点位置を予測線の座標をy軸へずらしただ […]

1 5 7