夜風のMixedReality

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

Shader

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と呼ばれる問題で、上記の例では赤い板からちらちらと青い板が見…

UnityのShaderGraphでのノーマルマップの扱いについてまとめる

本日はShader枠です。 筆者は基本的にコードを使用してShaderを構築することの方が多いですが、開発環境や状況によってShaderGraphを使用して構築する機会もあります。 ShaderGraphを使用する際にいつもノーマルマップの扱いを忘れてしまっていたので今回ま…

MixedRealityGraphicsToolsのShaderGraphについて

本日はMRGT枠です。 最新のMRGTのバージョンではShaderGraphの機能が提供されています。 今回はこちらについてどのようなものなのか調査していきます。 〇MRGTのShaderGraph ShaderGraphはUnityでノードベースでシェーダーを構築できる機能です。 通常シェー…

ゼロから始めるUnityShader開発 オブジェクトとの距離に応じてフェードがかかるシェーダー

本日はShader学習枠です。 今回はShaderを使用してオブジェクトを描画しているカメラとの距離に応じてフェードを書ける表現を行っていきます。 これはMixedRealityGraphicsToolのStandardShaderではNearFadeと呼ばれる機能に当たります。 redhologerbera.hat…

MixedRealityGraphicsTools StndardShader全機能解説 ⑥ Assigned at Runtime その①

本日はMRGT枠です。 こんかいはMRGTStandardShaderの機能の中のAssigned at Runtimeについて紹介します。 〇Assigned at Runtimeとは? Assigned at Runtimeの設定項目はAlbedoにテクスチャを適応していない場合のみすぐ下に存在します。 MRGTStandardShader…