知識0からのUnityShader勉強

知識0からのUnityShader勉強

UnityのShaderをメインとして、0から学んでいくブログです。

2021-01-01から1年間の記事一覧

【UnityShader】Cascade Shadow Maps【2】 #113

はじめに 実装 Unity上 カメラのInspector PlaneのInspector ソースコード スクリプト 影を描画するシェーダー 影を受け取るシェーダー 解説 初期化 視錐台 DirectionalLightカメラ Update MainCameraを4分割した、視錐台の計算 各視錐台のnearとfar 各視錐…

【UnityShader】Cascade Shadow Maps【1】 #112

Cascade Shadow Mapsとは ジャギーが目立ってしまっている例 発生してしまう原因 考え方 CSMsでのシャドウマップイメージ ソースコード無しでの実装 オブジェクトの配置 ライトの設定 影をレンダリングするカメラの距離を伸ばす 設定後 Cascadeの追加 Cascad…

【UnityShader】オブジェクトに軌跡をつける #111

はじめに 実装 Unity上 オブジェクト マテリアル スクリプト シェーダー 解説 Trail() InverseTransformDirection バーテックスシェーダー weight tex2Dlod tex2Dlodの詳しい解説 結果 参考サイト様 はじめに UnityのTrailRendererに似た、オブジェクトに追…

【UnityShader】投影テクスチャシャドウ #110

投影テクスチャシャドウとは 実装 Unity上 影用のカメラのInspector オブジェクト Scene スクリプト シェーダー 解説 CameraSettings() depth allowHDR UpdateRenderTexture() フラグメントシェーダー 結果 参考サイト様 投影テクスチャシャドウとは 前回行…

【UnityShader】投影テクスチャマッピング #109

前回の成果 オブジェクトの影を受け取った。 soramamenatan.hatenablog.com 今回やること 投影テクスチャマッピングを実装します。 light11.hatenadiary.com 事前準備 Scene上にGameObjectを配置し、今回制作したスクリプトをアタッチします。 スクリーンと…

【UnityShader】オブジェクトの影を受け取る #108

前回の成果 オブジェクトの影を落とした。 soramamenatan.hatenablog.com 今回やること 前回のコードのままですと、他のオブジェクトからの影を受け取ることができません。 なので、その部分を修正します。 影を受け取れていない 手前のオブジェクトが前回、…

【UnityShader】オブジェクトの影を落とす #107

前回の成果 Bloomシェーダーについて学んだ。 soramamenatan.hatenablog.com 今回やること シェーダーでの影について学んでいきます。 事前準備 Scene上にCubeを配置します。 Cubeの影が出るようにPlaneを配置して準備は完了となります。 影 Unityのデフォル…

【UnityShader】Bloomシェーダー #106

前回の成果 3Dモデルを液体のようにするシェーダーについて学んだ。 soramamenatan.hatenablog.com 今回やること 以下のサイト様を参考に、Bloomシェーダーを実装します。 www.shibuya24.info 事前準備 Scene上にSpriteRendererを配置します。 そして、MainC…

【UnityShader】3Dモデルを液体のようにする #105

前回の成果 その他のオペレータについてまとめた。 soramamenatan.hatenablog.com 今回やること 以下のサイト様を参考に、3Dモデルを液体のようにするシェーダーを制作します。 qiita.com 事前準備 Scene上に適当な3Dモデルを配置します。 そして、今回制作…

【UniRx】その他のオペレータ #104

前回の成果 Observableが完了したときに処理を行うオペレータについてまとめた。 soramamenatan.hatenablog.com 今回やること その他のオペレータについてまとめます。 前回の成果 今回やること 購読時に指定したメッセージを最初の値として発行する StartWi…

【UniRx】Observableが完了時に処理を行うオペレータ #103

前回の成果 エラーハンドリングのオペレータをまとめた。 soramamenatan.hatenablog.com 今回やること Observableが完了時に処理を行うオペレータをまとめます。 前回の成果 今回やること ストリームのOnCompletedが呼ばれたら、同じストリームを生成する Re…

【UniRx】エラーハンドリング系のオペレータ #102

前回の成果 非同期処理のオペレータをまとめた。 soramamenatan.hatenablog.com 今回やること エラーハンドリング系のオペレータをまとめます。 前回の成果 今回やること 例外発生時に、例外を補足せずに処理を行う DoOnError ソースコード 結果 例外発生時…

【UniRx】非同期処理のオペレータ #101

前回の成果 時間系のオペレータについて学んだ。 soramamenatan.hatenablog.com 今回やること 今回は非同期処理のオペレータについてまとめます。 前回の成果 今回やること 処理を別スレッドで実行したい ToAsync ソースコード 結果 Invoke()の呼ぶタイミン…

【UniRx】時間系のオペレータ #100

前回の成果 メッセージを変換するオペレータについて学んだ。 soramamenatan.hatenablog.com 今回やること 今回は時間系のオペレータについてまとめます。 前回の成果 今回やること 一定時間後にメッセージを発行したい Timer 一定時間後にメッセージを発行 …

【UniRx】メッセージを変換するオペレータ #99

前回の成果 Observableを分岐させるオペレータについて学んだ。 soramamenatan.hatenablog.com 今回やること 今回はメッセージの変換をするオペレータについてまとめます。 前回の成果 今回やること 値を変換したい Select 値を変換する 結果 型変換をし、失…

【UniRx】Observableを分岐させるオペレータ #98

前回の成果 メッセージを合成するオペレータについて学んだ。 soramamenatan.hatenablog.com 今回やること 今回はObservableを分岐させるオペレータについてまとめます。 いわゆるHot変換になりますので、そちらに関しては以下を参考にしてみてください。 so…

【UniRx】メッセージ同士の合成 #97

前回の成果 Observable自体を合成するオペレータについて学んだ。 soramamenatan.hatenablog.com 今回やること 今回はメッセージ同士の合成についてまとめます。 前回の成果 今回やること 前回のメッセージの結果と今回の結果を使用したい Scan 前回のメッセ…

【UniRx】Observable自体を変換するオペレータ #96

前回の成果 Obsevableを合成するオペレータについて学んだ。 soramamenatan.hatenablog.com 今回やること 今回はObservable自体の変換をまとめます。 前回の成果 今回やること ObservableをReadOnlyReactivePropertyに変換 ToReadOnlyReactiveProperty ToRea…

【UniRx】Observableを合成するオペレータ #95

前回の成果 メッセージのフィルタリングをするオペレータについて学んだ。 soramamenatan.hatenablog.com 今回やること 今回はObservableを合成するオペレータについてまとめます。 前回の成果 今回やること 複数のObservableから一番早く値が流れてきたもの…

【UniRx】メッセージをフィルタリングするオペレータ #94

前回の成果 ファクトリメソッド系のオペレータについて学んだ。 soramamenatan.hatenablog.com 今回やること 今回はメッセージのフィルタのオペレータについてまとめます。 前回の成果 今回やること メッセージのフィルタ 条件を満たすものを流す Where 結果…

【UniRx】ファクトリメソッドオペレータ #93

前回の成果 UniTaskのキャンセルについて学んだ。 soramamenatan.hatenablog.com 今回やること UniRxで何かしたいときに、どのオペレータを呼べばよいのか混乱したので、具体例も合わせてまとめます。 前回の成果 今回やること ファクトリメソッド 値を1つだ…

【Unity】UniTask【3】 #92

前回の成果 UniTaskのAwaiterについて学んだ。 soramamenatan.hatenablog.com 今回やること 前回に引き続き、UniTaskについて学んでいきます。 キャンセル 非同期処理ではキャンセルについて考えなければなりません。 UniTaskも同様に、何らかの原因で例外が…

【Unity】UniTask 【2】#91

前回の成果 UniTaskの大まかな概要と静的なメソッド群について学んだ。 soramamenatan.hatenablog.com 今回やること 前回に引き続き、UniTaskについて学んでいきます。 Awaiter Awaiterとは、オブジェクトのawaitに必要なものとなっています。 あるオブジェ…

【Unity】UniTask 【1】#91

前回の成果 UniRxのHotとColdについて理解した。 soramamenatan.hatenablog.com 今回やること UniTaskについて学びます。 UniTaskとは Unityでasync/awaitを最高のパフォーマンスで実現するライブラリ UniTask – Unityでasync/awaitを最高のパフォーマンスで…

【UniRx】HotとCold #90

前回の成果 UniRxとコルーチンの変換について学んだ。 soramamenatan.hatenablog.com 今回やること UniRxのHotとColdについて学びます。 HotとColdとは IObservableの性質になります。 これらを理解せずにUniRxを使用すると意図せぬ挙動となる場合があります…

【Unity】UniRx 【6】#89

前回の成果 Updateをストリームに変換するメリットを学んだ。 soramamenatan.hatenablog.com 今回やること 引き続き以下サイト様の手順に習って、UniRxを学んでいきます。 qiita.com 事前準備 アセットストアからUniRxをインポートします。 assetstore.unity…

【Unity】UniRx【5】 #88

前回の成果 ストリームソースを用意する方法を学んだ。 soramamenatan.hatenablog.com 今回やること 引き続き以下サイト様の手順に習って、UniRxを学んでいきます。 qiita.com 事前準備 アセットストアからUniRxをインポートします。 assetstore.unity.com U…

【Unity】UniRx【4】 #87

前回の成果 ストリームソースを用意する方法として、SubjectシリーズとReactivePropertyシリーズを学んだ。 soramamenatan.hatenablog.com 今回やること 引き続き以下サイト様の手順に習って、UniRxを学んでいきます。 qiita.com 事前準備 アセットストアか…

【Unity】UniRx【3】 #86

前回の成果 IObserverインターフェースとストリームの寿命について学んだ。 soramamenatan.hatenablog.com 今回やること 引き続き以下サイト様の手順に習って、UniRxを学んでいきます。 qiita.com 事前準備 アセットストアからUniRxをインポートします。 ass…