夜風のMixedReality

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

Shader

GraphicsTools/wireframeShader機能解説 

本日はMRGT枠です。 MixedRealityGraphicsTools(MRGT)には様々なマテリアルが提供されていますが、 〇環境 ・Windows11PC ・MixedRealityGraphicsTools 0.6.9 ・Unity2022.3.26f1(URP) 〇WireframeShaderとは? GraphicsTools/WireframeShaderはMRGTで提供さ…

ゼロから始めるUnityShader開発 第九章 射影行列

本日はシェーダー枠です。 CGを理解するにあたって重要な概念である行列についての勉強です。 コンピュータ内では多くのデータをテンソルであらわします。 テンソルとは、多次元配列を意味し、例えば画像データを見てみると、RGBAの四次元であらわされる色チ…

レイトレーシングについて歴史を交えまとめる その3 アリゴリズム2 レイとオブジェクトの交差

今回はオブジェクトとの交差についてのアルゴリズムについてみていきます。 〇レイとオブジェクトの交差 レイとオブジェクトの交差とは視点から発射されたレイが3D空間内のどの物体と交差するかを判定するプロセスです。 レイが物体の表面に当たるかどうか…

レイトレーシングについて歴史を交えまとめる その2 アルゴリズム1 カメラ座標の定義とレイの生成

本日はグラフィック枠です 前回はレイトレーシングの歴史についてみていきました。 redhologerbera.hatenablog.com レイトレーシング自体は1986年のレイキャスティングのアイデアをベースとして1979年に初めての論文が登場しました。 レイトレーシング自体は…

レイトレーシングについて歴史を交えまとめる。 その①概要

本日はShader枠(どちらかというと)です。 本日は論文などを読みながらレイトレーシングについての理解を深めながら書置きの記事になります。 〇レイトレーシングとは? レイトレーシングはコンピュータグラフィックスのレンダリング技術の一つで、非常にリア…

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

本日はシェーダー枠です。 以前回転するシェーダーを書きました。 redhologerbera.hatenablog.com このシェーダーでは回転行列を使用して頂点シェーダー内でオブジェクトを構成する頂点を回転させました。 今回はこの回転軸を任意に変更可能にしていきます。…

ゼロから始める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でボロノイ図を描くシェーダーを書く

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