夜風のMixedReality

xRと出会って変わった人生と出会った技術を書き残すためのGeekなHoloRangerの居場所

Shader

ゼロから始めるUnityShader開発 第九章 スケーリング行列

本日はシェーダー枠です。 前回は平行移動行列を見ていきました。 平行移動行列は座標変換において使用される行列で、イメージとしてはワールド座標系に位置するあるオブジェクトの子オブジェクトを移動させる際などに使用される行列です。 3Dグラフィック…

ゼロから始めるUnityShader開発 第九章 平行移動行列

今回はシェーダー枠です。 前回は回転行列についてみていきました。 redhologerbera.hatenablog.com 回転行列は座標返還で使用されます。 3DCGの世界ではローカル座標、多くの物体に対してトランスフォームというプロパティが存在します。 ワールド座標とは…

ゼロから始めるUnityShader開発 第九章  座標変換と回転行列

本日はShader枠です。 昨日はUnityのシェーダーで頂点シェーダーをしようして回転を行うアニメーションを実装しました。 redhologerbera.hatenablog.com シェーダーで回転を行うことはCPUで実行されるスクリプトのUpdate関数を使用しないため比較的軽量とい…

ゼロから始めるUnityShader開発 第五章 オブジェクトを回転させるシェーダー

本日はShader学習枠です。 今回は頂点シェーダーを利用してオブジェクトを回転させます。 頂点シェーダーステージでは3Dデータから頂点をスクリーン座標に直した計算が行われています。 つまり座標変換に際してバイアスをかけることでメッシュの形状を変え…

Unityでフェイズシフトシェーダーをつくる その4 ShaderLabでの実装

本日はShader枠です。 先日ShaderGraphでガンダムSEEDの作品中に登場する架空の技術であるフェイズシフト装甲のシェーダーを作成しました。 redhologerbera.hatenablog.com 本日は、ShaderLabのコードで再現していきます。 〇ShaderLabでフェイズシフトシェ…

Unityでフェイズシフトシェーダーを作る その3 カラーノイズをつける

本日は昨日に引き続きUnityShader枠です。 昨日に引き続いてフェイズシフト装甲のシェーダーを作成します。 昨日はむらをつけて展開するようにグレースケールを変異させる機能を実装しました。 今回は仕上げとして展開時に入る色のノイズを表現します。 〇色…

Unityでフェイズシフトシェーダーを作る その2

本日は昨日に引き続きフェイズシフト装甲をUnityのシェーダーで再現していきます。 昨日は一番の機能となるグレースケールに対応しました。 redhologerbera.hatenablog.com 〇フェイズシフト展開時のノイズ フェイズシフト装甲を展開する際は一様に展開する…

Unityでフェイズシフトシェーダーを作る その1

本日はシェーダー枠です。 先日筆者が大好きなアニメのガンダムシリーズの最新作「機動戦士ガンダムSEED FREEDOM」の映画を見に行きました。 ほかのシリーズと世界戦が違い独自の設定があるSEEDシリーズですが独特な設定の一つとしてフェイズシフト装甲とい…

ゼロから始めるUnityシェーダー開発 ShaderLabでAlphaTextureを扱うシェーダーを書く

本日はShader枠です。 昨日はShaderGraphでα値を制御するAlphaTextureを使用できるシェーダーを書きました。 本日はShaderLabでコードで同じことを実装していきます。 redhologerbera.hatenablog.com 〇透明度を扱うシェーダー 透明度をシェーダーで扱うため…

ゼロから始めるUnityShader開発 画像を使用した透明表現(ShaderGraph)

本日はShader枠です。 今回は実践でよく使用する表現としてオブジェクトの透明表現として、テクスチャに基づいてメッシュの一部を透明にしていく表現を行います。 〇ShaderGraphでの実装 ShaderGraphではコードを意識することなく実装することができるためプ…

MixedRealityGrapicsToolsのNormalMapScaleが機能しない問題の解消 その②

本日はMRGT枠です。 今回はMRGTシェーダーのNormalMapScaleが機能しない問題の解消を行います。 redhologerbera.hatenablog.com 〇UnpackScaleNormalの処理 UnpcakScaleNormalの処理は次のようになります。 half3 UnpackScaleNormal(half4 packednormal, hal…

ゼロから始めるUntiyShader開発 #pragma Targetって何?

本日はShader枠です。 〇#pragma Targetとは? ShadferターゲットはShaderLabでシェーダーを記述する際に使用できる#pragmaディレクティブです。 用途としてはシェーダーコンパイルターゲットレベルを指定します。 シェーダーコンパイルターゲットレベルとは…

UnityでビルドインシェーダーマクロのUnityCG.cgincの中身を見る方法

本日はShader枠です。 〇UnityCG.cgincとは? UnityCG.cgincはUnityで提供されている組み込みのシェーダーファイルで、ヘルパーメソッドと定義を提供しています。 例えばUnityObjectToClipPos()などのUnity座標や空間に合わせてデータを与えるだけで変換して…

MixedRealityGraphicsToolのNormalMapScaleが機能しない問題の解消 その①

本日はMRGT枠です。 MRGTのGitHubイシューに次のようなバグレポートが上がっていました。 github.com NormalMapScaleの機能は筆者が提案、実装した機能です。 今回は気になったこともあり修正していきます。 〇バグの確認 バグレポートによるとUnity 2021.3.…

MixedRealityGraphicsTools StndardShaderで不透明オブジェクトの描画が行われない問題の解消

本日はトラブルシューティング枠です。 MRTK3のグラフィックツールであるMixedRealityGraphicsToolsで描画に関する問題が発生しました。 今回はこちらを解消します。なお原因等は後述していますがMRGTに限らずこの問題はURPにおいてカスタムシェーダーを使用…

ゼロから始めるUnyShader開発  第三章 透明度を持つシェーダー その①

本日はShader枠です。 今回は透明度について紹介します。 〇透明度を持つシェーダーを実装する 透明度を持つシェーダーはガラスや水、エフェクトなど様々なシチュエーションで使用されます。 透明度を持つシェーダーを実装するには次の要件をクリアする必要…

Shaderってこんな感じ発表会2で登壇しました。

本日はイベント登壇枠です。 本日IkwakenLabの公開イベント』に参加、登壇しました。 iwakenlab.connpass.com 7月に開催されたイベントの二回目になります。 内容としては各7分でShaderに関してのフリートークが行われまsチア。 今回は筆者のパートの内容を…

Unityのシェーダーで影の部分のみにテクスチャが描画されるような実装をおこなう

本日はShader枠です。 本日はライトの影響を受けるLitなシェーダーで影の部分のみにテクスチャが描画されるような実装を行います。 〇ベースシェーダー 今回はこちらのシンプルなライティングを受けるシェーダーをベースにしていきます。 Shader "Unlit/Tuto…

ゼロから始めるUnityShader開発 ShaderGraphを用いたアニメーションをShaderLabで再現する

本日はShader枠です。 今回は昨日ShaderGraphで作成したShaderをShaderLabで再現していきます。 redhologerbera.hatenablog.com 昨日は上下にオブジェクトがアニメーションし、Y座標が0以下のピクセルは透明になるようなシェーダーを書きました。 ノードは…

ゼロから始めるUnityShader開発 ShaderGraphを用いたアニメーション

本日はUnityシェーダー枠です。 今回はShaderGraphを用いたアニメーションを紹介します。 〇環境 ・Unity2021.3.5f1 ・URP 〇ShaderGraphを用いたアニメーション 今回はアニメーションで上下し、Y座標が0以下の場合透明になるというようなシェーダーを作っ…

ゼロから始めるUnityShader開発 _Time関数のヌマ

本日はshader枠です。 UnityでShaderを書く際にアニメーションなど時間軸を使いたい場合は_Timeを使用することが一般的です。 しかしながらこのTime関数をShaderLabで使用する際には注意が必要です。 〇_Time _TimeはUnityCG.cgincで定義されている変数で、S…

Shaderってこんな感じ発表会 + IwakenLab公開ミーティングで登壇しました。

本日はイベント登壇枠です。 本日IkwakenLabの公開イベント』に参加、登壇しました。 今回は筆者のパートの内容をまとめていきます。 ※スライドと画像は後ほど更新します。 〇7分で誰でもかけるようになるUnityShader Part.1 〇Shaderの挫折ポイント 〇デバ…

ゼロから始めるUnityShader開発 第五章 複数のUVを切り替えて使用できるシェーダーを書く

本日はシェーダー枠です。 3Dモデルが持てる情報にUVがありますが、UVは複数持つことができます。 今回は任意に複数のUVを切り替えるシェーダーを書いていきます。 〇複数のUVを切り替えるシェーダー 通常頂点シェーダーに渡す情報を定義する構造体で3Dモ…

ゼロから始めるUnityシェーダー開発 第5章 Unityでボロノイ図を描くシェーダーを書く

本日はシェーダー学習枠です。 今回はボロノイ図を描くシェーダーを書いていきます。 〇ボロノイ図とは? ボロノイ図、ボロノイテクスチャとも呼ばれていますが、これは波の作成などに使用されるノイズテクスチャです。 座標上にランダムに割り当てた頂点同…

ゼロから始めるUnityShader開発 第五章 頂点カラーを描画するシェーダーを書く

本日はシェーダー枠です。 先日MRGTのVertexColorsの機能についてみていきました。 今回はオリジナルのシェーダーで頂点カラーを描画するシェーダーを書いていきます。 〇頂点カラーを描画するシェーダー 頂点カラーを描画する最もシンプルなシェーダーは以…

MixedRealityToolkitGraphicsToolsのVertex Colorsの機能を読み解く その②

本日はMRGT枠です。 昨日は頂点シェーダーの機能であるVertex Colorsの機能を触っていきました。 redhologerbera.hatenablog.com 今回は実際の処理を追っていきます。 今回はMixedRealityToolkit GraphicsTools v5.0を使用しています。 〇MRGTのVertex Color…

MixedRealityToolkit GraphicsTools StandardShaderのVertex Colorの機能を読み解く その①

本日はMRGT枠です。 MixedRealityGraphicsToolsで提供されているStandardShaderでは様々な機能が提供されています。 今回はその中からVertex Colorsの機能を試していきます。 〇Vertex Colors Vertex Colorsは頂点カラーの意味でこれはメッシュが頂点カラー…

Unityで直接HLSLファイルを作成できるようなエディタ拡張を行う

本日はUnity枠です。 今回はエディタ拡張を使用してUnityのプロジェクトウィンドウを右クリックすることで表示できるメニューから直接hlslファイルを作成する機能を作成します。 〇HLSLファイルを生成する ShaderをUnityで生成するにあたってhlslファイルは…

ゼロから始めるUnityShader Unityでビルボードなシェーダーを書く

本日はShader学習枠です。 今回は実用的なシェーダーとして板ポリゴンに適応することで常にユーザの向きを向くビルボードなシェーダーを構築します。 〇ビルボード 〇回転 〇カメラ位置の取得と回転 〇コード一覧 〇ビルボード ビルボードは3DCGゲームで容量…

MixedRealityGraphicsTools StandardShaderでZ-fightingを修正する

本日はMRGT枠です。 〇Z-fightingとは? UntiyやBlenderなどの3Dソフトでアプリケーションを作成しているとあるオブジェクトの描画がちかちか見えてしまうことがあります。 これはZ-fightingと呼ばれる問題で、上記の例では赤い板からちらちらと青い板が見…