Shader
本日はComputeShader枠です。 〇ComputeShaderとは? ComputeShaderはその名の通りシェーダープログラムであり、GPU上で実行されますが、一般的なShaderと異なり、描画を目的としていません。 GPGPU(General Purpose GPU)の考え方に基づき、GPUの並列演算機…
本日はShader枠です。 今回はUnityでワールド空間上に任意の点を等間隔で指定し、描画するシェーダー表現を行います。 〇完成物 〇Unityの座標で定義される球 Unityの座標空間上に一定間隔で定義される球表現は以下の関数で行います。 float SphereGroupHard…
本日はUnity,MRGT枠です。 今回は初歩的な記事としてUnityでのMRGTのマテリアルの使用法をまとめます。 〇環境 ・Unity2022.3.26f1 ・Windows11PC ・Microsoft GraphicsTools v8.0 〇マテリアルの作成と使用 3DCGの描画には造形情報であるポリゴン(頂点と辺…
本日はShader枠です。 現在はライティングについてのシェーダー構築をステップアップで見ています。 前回はShadowColorを追加して影の色を任意に変更できるようにしました。 redhologerbera.hatenablog.com redhologerbera.hatenablog.com 今回はハイライト…
本日はShader枠です。 前回はライティングの一環としてセルルックなシェーダーを実装しました。 redhologerbera.hatenablog.com 前回の状態だと影が真っ黒になります。 今回は影の色を変更可能にします。 〇影の取得 影に色を付けるためにはまずは影のピクセ…
本日はShader枠です。 今回はShaderの 〇環境 ・Unity6000.0.2f1 ・Windows11PC 〇セルルックなライティング Unityのシェーダーの場合ライティングによる影の計算はNdotLが基本的な考え方です。 NdotLとはメッシュの法線=Normal、とライト=Lightのドット積に…
本日はUnity Shader枠です。 昨年よりComputeShaderに力を入れ始めましたが、筆者の中でコンピュートシェーダーの挙動に関してまだ慣れない点があり、今回は検証も兼ねて実装します。 〇環境 ・Windows11PC ・Unity2022.3.6f1 〇頂点ごとに違う出力を与える …
本日はShader枠です。 〇環境 ・Windows11PC ・Unity6000.3.2f1 ・URP 〇ステンシルとは? Shaderにおけるステンシル(Stencil)は、特定のピクセルを描画するかどうかを制御するための機能です。 シェーダープログラムでは最終的な出力をRGBの色としていま…
2024年最後の記事はMRKT3,MRGT枠です。 MRTK3ではMRTKv2から引き継いだMicrosoft FluentSystemに基づいたUIコンポーネントが提供されています。 〇環境 ・Windows11PC ・Unity2022.3.6f1 〇MRTKのUIを半透明にする MRTK3ではUGUIに基づいたCanvas上に構成さ…
本日はShader枠です。 通常のShaderでは型や関数の定義や一般的使用可能な処理は外部ファイルに定義し、includeすることで使いまわします。 今回はComputeShaderでも同様に外部ファイルに処理を記述して読み込むことが可能であるのか気になったので調べてい…
本日はUnity枠です。 前回はComputeShaderでメッシュの回転を行っていきました。 redhologerbera.hatenablog.com ここでは回転行列を使用することでメッシュを回転させるアニメーションを行いました。 今回はスケールをアニメーションさせていきます。 〇環…
本日はShader枠です。 現在ComputeShaderを学習中ですが、今回はその例としてオブジェクトを回転させていきます。 〇環境 ・Unity2022.3.26f1 ・Windows11PC 〇コンピュートシェーダーでメッシュを回転させる コンピュートシェーダーでメッシュを回転させる…
本日はShader枠です。 Shaderの処理内でif文は避けるべきということはよく言われることですが、ComputeShaderでの実装の場合やなぜそもそもそのように言われているのか理解をしていないところがあったため今回は学んでいきます。 〇Shader内でIF分の処理を行…
本日はShader枠です。 先日からコンピュートシェーダーの勉強を始めた筆者ですが、あらゆるプログラミングにおいてデバッグログというものはとても大切です。 しかしながらGPU上で実行されるシェーダーはもともと色を出力するためのプログラムであるためログ…
本日はShader枠です。 昨日はコンピュートシェーダーを使用して、Unityの任意のオブジェクトの情報を毎フレームコンピュートシェーダー内で使用することができました。 redhologerbera.hatenablog.com redhologerbera.hatenablog.com 今回は任意のColor型の…
本日はComputeShader枠です。 先日Unityのコンピュートシェーダーを用いてメッシュの頂点カラーを設定しました。 この時にワールド座標に基づいて色を付けていました。 今回はUnityのゲームオブジェクトを基準に頂点カラーを与える実装を行います。 〇環境 …
本日はShader枠です。 少し前にUnityのComputeShaderを使用して頂点カラーを設定していきます。 redhologerbera.hatenablog.com redhologerbera.hatenablog.com redhologerbera.hatenablog.com というのも以前頂点カラーを実装した際にfor文で処理を行ってい…
本日はコンピュートシェーダー枠です。 コンピュートシェーダーに関しては苦手意識があったため一つ一つ学んでいます。 redhologerbera.hatenablog.com 現在はコンピュートシェーダーの概要を学びながらある条件の頂点座標数を抽出する処理を実装しています…
本日はUnity枠です。 筆者はシェーダーに関してはある一定以上の理解と構築力があると思っていますが、近年用いられているコンピュートシェーダーに関しては苦手意識を持っていました。 今回はコンピュートシェーダーを使用した簡単な実装を行っていきます。…
本日はMRTK3およびMRGT枠です。 先日久々にMRGTのStandardShaderを改造して独自のシェーダーを開発しました。 ゼロイチでシェーダーを開発することもあるのですが、特に光の影響を受けるLitな表現や、透明度の実装などが入ると、実装がかなり大変になり、こ…
本日はMRGT枠です。 MixedRealityGraphicsTools(MRGT)には様々なマテリアルが提供されていますが、 〇環境 ・Windows11PC ・MixedRealityGraphicsTools 0.6.9 ・Unity2022.3.26f1(URP) 〇WireframeShaderとは? GraphicsTools/WireframeShaderはMRGTで提供さ…
本日はシェーダー枠です。 CGを理解するにあたって重要な概念である行列についての勉強です。 コンピュータ内では多くのデータをテンソルであらわします。 テンソルとは、多次元配列を意味し、例えば画像データを見てみると、RGBAの四次元であらわされる色チ…
今回はオブジェクトとの交差についてのアルゴリズムについてみていきます。 〇レイとオブジェクトの交差 レイとオブジェクトの交差とは視点から発射されたレイが3D空間内のどの物体と交差するかを判定するプロセスです。 レイが物体の表面に当たるかどうか…
本日はグラフィック枠です 前回はレイトレーシングの歴史についてみていきました。 redhologerbera.hatenablog.com レイトレーシング自体は1986年のレイキャスティングのアイデアをベースとして1979年に初めての論文が登場しました。 レイトレーシング自体は…
本日はShader枠(どちらかというと)です。 本日は論文などを読みながらレイトレーシングについての理解を深めながら書置きの記事になります。 〇レイトレーシングとは? レイトレーシングはコンピュータグラフィックスのレンダリング技術の一つで、非常にリア…
本日はシェーダー枠です。 以前回転するシェーダーを書きました。 redhologerbera.hatenablog.com このシェーダーでは回転行列を使用して頂点シェーダー内でオブジェクトを構成する頂点を回転させました。 今回はこの回転軸を任意に変更可能にしていきます。…
本日はシェーダー枠です。 前回は平行移動行列を見ていきました。 平行移動行列は座標変換において使用される行列で、イメージとしてはワールド座標系に位置するあるオブジェクトの子オブジェクトを移動させる際などに使用される行列です。 3Dグラフィック…
今回はシェーダー枠です。 前回は回転行列についてみていきました。 redhologerbera.hatenablog.com 回転行列は座標返還で使用されます。 3DCGの世界ではローカル座標、多くの物体に対してトランスフォームというプロパティが存在します。 ワールド座標とは…
本日はShader枠です。 昨日はUnityのシェーダーで頂点シェーダーをしようして回転を行うアニメーションを実装しました。 redhologerbera.hatenablog.com シェーダーで回転を行うことはCPUで実行されるスクリプトのUpdate関数を使用しないため比較的軽量とい…
本日はShader学習枠です。 今回は頂点シェーダーを利用してオブジェクトを回転させます。 頂点シェーダーステージでは3Dデータから頂点をスクリーン座標に直した計算が行われています。 つまり座標変換に際してバイアスをかけることでメッシュの形状を変え…