2022-01-01から1年間の記事一覧
シェーダーモデル(Shader Model)とは? GPUによって、サポートされているシェーダーの機能は異なります。 サポートされていない機能をコンパイル時にエラーが発生したり、デバイスが実行時にシェーダーをサポートできなくなる可能性があります。 これはグラ…
テクスチャストリーミングとは 通常、ミップマップは全ミップがメモリにロードされますが、テクスチャストリーミングを使用すれば、現在のカメラ位置のレンダリングに必要な分だけ、ミップマップをロードするので、GPU メモリを節約することができます。 手…
ミップマップの基本 - Unity マニュアル引用 ミップマップとは? 元のテクスチャ解像度を1/2ずつ縮小しながら何枚もテクスチャを生成します。生成した一つ一つのテクスチャをミップといい、全てのミップのまとめたものをミップマップと言います。 youtu.be …
ディファードレンダリングについての解説とURPではどのように実装さているのか見ていきたいと思います。 フォワードレンダリングの実装についてはこちらで解説しているので、よろしければご覧ください。 ny-program.hatenablog.com ディファードレンダリング…
URPのLitShaderを眺めているとLitFowardPass.hlslに 謎のディレクティブがあったので、調べてみました。 // LitFowardPass.hlsl #ifndef UNIVERSAL_FORWARD_LIT_PASS_INCLUDED #define UNIVERSAL_FORWARD_LIT_PASS_INCLUDED ・ ・ ・ #endif どうやらこれは…
Const float PI = 3.14159; ラジアンの範囲(0-2PI) sin値(斜辺 / 高さ) cos値(斜辺 / 底辺) tan値(高さ / 斜辺) 三角関数 sin ラジアンからsin値を求める cos ラジアンからcos値を求める tan ラジアンからtan値を求める 逆三角関数 asin sin値からラジアンを…
座標系についてまとめておきます 。 Homogeneous Coordinates(同次座標系) ( x,y,z,w)4次元として扱うこと。 非同次座標系(直交座標系)への変換は(x,y,z,w) = ( x/w ,y/w ,z/w ,1)というように行う。 この変換を正規化という。 ObjectSpace(オブジェクト座標…
今回はURPのカメラについて解説していきます。 UniversalAdditionalCameraDataコンポーネント URPにはCameraコンポーネントをつけると自動でUniversal Additional CameraDataというコンポーネントが追加されます。 このコンポーネントはURPで拡張された機能…
Chromatic Aberration (色収差) エフェクト 光の屈折率は色によって異なるため、レンズを通過した際に焦点距離に差が発生し、ずれて見えます。 実装 実装方法としてはRチャンネルとBチャンネルを_Intensityに応じて拡大しています。 Shader "Hidden/Chromati…
BatchとDraw CallとSetPass Call Batchは同一マテリアルである等のバッチング条件を満たした結合メッシュ単位の描画処理を指します。 SetPass Callはマテリアルの設定値をCPUがGPUに送る処理です。 Draw CallはCPUがGPUに、描画を命令することです。 CPUから…
UPRのLitシェーダーのライティング処理を一通り解説します。 ライティングの流れ ライティングの流れは大まかに以下のようになっています。 最終ライトカラー値 = ①メインライト + ②追加ライト(ピクセル単位) + ③追加ライト(頂点単位) + ④大域照明ライト…