はじめに 環境 Normal 草のノーマルマップのサンプリング 岩と崖のノーマルマップのブレンド 崖のディテールテクスチャ ノーマルマップのブレンド Normalの出力 Smoothness 岩の滑らかさ 水のマスクとブレンドする Ambient Occlusion PBR 結果 ソースコード …
はじめに 環境 CliffShader Albedo 草のテクスチャのサンプリング 崖のテクスチャのサンプリング 草のマスク 草のマスクの補完 草のマスクの補完される値 崖テクスチャ 接空間をワールド空間に変換 Inを計算する 水のマスク Albedoの出力 結果 はじめに 今回…
はじめに 環境 ソースコード TagとLayer SortingLayer 使い方 はじめに TagsAndLayersで使用しているものをリストアップするエディタ拡張を制作しました。 TagsAndLayersはEdit/Project Settings...にある、以下の部分になります。 環境 Unity 2021.3.6f1 ソ…
はじめに ソースコード ScriptableRendererFeature ScriptableRenderPass シェーダー SwapBufferとは 以前との比較 描画結果 参考サイト様 はじめに 今回はURP12で追加されたSwapBufferを解説します。 Unity 2021.3.6f1 Universal RP 12.1.7 ソースコード Sc…
はじめに コード ShaderGraph Raymerching.hlsl GetLight.hlsl 円の描画 カメラの位置 レイの向き レイをすすめる RayMarching.hlsl CustomFunctionのinspector レイにあたった部分を描画 円を表示するレイマーチングの全体 描画結果 ライティング ライトの…
はじめに ソースコード ScriptableRendererFeature ScriptableRenderPass シェーダー スクリプト側について URP Assetの設定 シェーダーをURPに対応 TransformObjectToHClip SAMPLE_DEPTH_TEXTURE Linear01Depth 結果 Threshold Attenuation Intensity 不明…
はじめに ソースコード ScriptableRendererFeature ScriptableRenderPass シェーダー RendererFeature ScriptableRendererFeature ScriptableRenderPass コンストラクタ CoreUtils.CreateEngineMaterial RenderPassEvent RenderTargetHandle Execute Command…
はじめに シェーダー 拡散反射光 求め方 _WorldSpaceLightPos0 鏡面反射光 求め方 環境光 求め方 ShadeSH9 深堀り 使わなかったもの 各光の描画結果 拡散反射光 鏡面反射光 環境光 上記3つを合わせたもの 他のライトの実装 他のライトを追加した描画結果 参…
はじめに Forward Rendering ライティング パス 問題点 Differd Rendering パス G-Buffer メリット デメリット 半透明のオブジェクトを正しく描画できない MSAAが使えない MSAA 実装 結果 CameraDepthTexture ShadowMapTexture GBufferTexture0 GBufferTextu…
はじめに 深度を渡すシェーダー 影を受け取るシェーダー 解説 深度を渡すシェーダー 頂点シェーダー フラグメントシェーダー 影を受け取るシェーダー 頂点シェーダー フラグメントシェーダー 影の重み Near Far 参考 影の計算 結果 はじめに 前回、CSMsのス…
はじめに 実装 Unity上 カメラのInspector PlaneのInspector ソースコード スクリプト 影を描画するシェーダー 影を受け取るシェーダー 解説 初期化 視錐台 DirectionalLightカメラ Update MainCameraを4分割した、視錐台の計算 各視錐台のnearとfar 各視錐…
Cascade Shadow Mapsとは ジャギーが目立ってしまっている例 発生してしまう原因 考え方 CSMsでのシャドウマップイメージ ソースコード無しでの実装 オブジェクトの配置 ライトの設定 影をレンダリングするカメラの距離を伸ばす 設定後 Cascadeの追加 Cascad…
はじめに 実装 Unity上 オブジェクト マテリアル スクリプト シェーダー 解説 Trail() InverseTransformDirection バーテックスシェーダー weight tex2Dlod tex2Dlodの詳しい解説 結果 参考サイト様 はじめに UnityのTrailRendererに似た、オブジェクトに追…
投影テクスチャシャドウとは 実装 Unity上 影用のカメラのInspector オブジェクト Scene スクリプト シェーダー 解説 CameraSettings() depth allowHDR UpdateRenderTexture() フラグメントシェーダー 結果 参考サイト様 投影テクスチャシャドウとは 前回行…
前回の成果 オブジェクトの影を受け取った。 soramamenatan.hatenablog.com 今回やること 投影テクスチャマッピングを実装します。 light11.hatenadiary.com 事前準備 Scene上にGameObjectを配置し、今回制作したスクリプトをアタッチします。 スクリーンと…
前回の成果 オブジェクトの影を落とした。 soramamenatan.hatenablog.com 今回やること 前回のコードのままですと、他のオブジェクトからの影を受け取ることができません。 なので、その部分を修正します。 影を受け取れていない 手前のオブジェクトが前回、…
前回の成果 Bloomシェーダーについて学んだ。 soramamenatan.hatenablog.com 今回やること シェーダーでの影について学んでいきます。 事前準備 Scene上にCubeを配置します。 Cubeの影が出るようにPlaneを配置して準備は完了となります。 影 Unityのデフォル…
前回の成果 3Dモデルを液体のようにするシェーダーについて学んだ。 soramamenatan.hatenablog.com 今回やること 以下のサイト様を参考に、Bloomシェーダーを実装します。 www.shibuya24.info 事前準備 Scene上にSpriteRendererを配置します。 そして、MainC…
前回の成果 その他のオペレータについてまとめた。 soramamenatan.hatenablog.com 今回やること 以下のサイト様を参考に、3Dモデルを液体のようにするシェーダーを制作します。 qiita.com 事前準備 Scene上に適当な3Dモデルを配置します。 そして、今回制作…
前回の成果 Observableが完了したときに処理を行うオペレータについてまとめた。 soramamenatan.hatenablog.com 今回やること その他のオペレータについてまとめます。 前回の成果 今回やること 購読時に指定したメッセージを最初の値として発行する StartWi…
前回の成果 エラーハンドリングのオペレータをまとめた。 soramamenatan.hatenablog.com 今回やること Observableが完了時に処理を行うオペレータをまとめます。 前回の成果 今回やること ストリームのOnCompletedが呼ばれたら、同じストリームを生成する Re…
前回の成果 非同期処理のオペレータをまとめた。 soramamenatan.hatenablog.com 今回やること エラーハンドリング系のオペレータをまとめます。 前回の成果 今回やること 例外発生時に、例外を補足せずに処理を行う DoOnError ソースコード 結果 例外発生時…
前回の成果 時間系のオペレータについて学んだ。 soramamenatan.hatenablog.com 今回やること 今回は非同期処理のオペレータについてまとめます。 前回の成果 今回やること 処理を別スレッドで実行したい ToAsync ソースコード 結果 Invoke()の呼ぶタイミン…
前回の成果 メッセージを変換するオペレータについて学んだ。 soramamenatan.hatenablog.com 今回やること 今回は時間系のオペレータについてまとめます。 前回の成果 今回やること 一定時間後にメッセージを発行したい Timer 一定時間後にメッセージを発行 …
前回の成果 Observableを分岐させるオペレータについて学んだ。 soramamenatan.hatenablog.com 今回やること 今回はメッセージの変換をするオペレータについてまとめます。 前回の成果 今回やること 値を変換したい Select 値を変換する 結果 型変換をし、失…
前回の成果 メッセージを合成するオペレータについて学んだ。 soramamenatan.hatenablog.com 今回やること 今回はObservableを分岐させるオペレータについてまとめます。 いわゆるHot変換になりますので、そちらに関しては以下を参考にしてみてください。 so…
前回の成果 Observable自体を合成するオペレータについて学んだ。 soramamenatan.hatenablog.com 今回やること 今回はメッセージ同士の合成についてまとめます。 前回の成果 今回やること 前回のメッセージの結果と今回の結果を使用したい Scan 前回のメッセ…
前回の成果 Obsevableを合成するオペレータについて学んだ。 soramamenatan.hatenablog.com 今回やること 今回はObservable自体の変換をまとめます。 前回の成果 今回やること ObservableをReadOnlyReactivePropertyに変換 ToReadOnlyReactiveProperty ToRea…
前回の成果 メッセージのフィルタリングをするオペレータについて学んだ。 soramamenatan.hatenablog.com 今回やること 今回はObservableを合成するオペレータについてまとめます。 前回の成果 今回やること 複数のObservableから一番早く値が流れてきたもの…
前回の成果 ファクトリメソッド系のオペレータについて学んだ。 soramamenatan.hatenablog.com 今回やること 今回はメッセージのフィルタのオペレータについてまとめます。 前回の成果 今回やること メッセージのフィルタ 条件を満たすものを流す Where 結果…