2023-01-01から1ヶ月間の記事一覧
Note: You can only draw a maximum of 1023 instances at once. ドキュメントにもあるように Graphics.DrawMeshInstanced で一度に生成できるインスタンス数の上限は 1023 となっており、1023を超える数を生成すると以下のエラーが表示される ArgumentOutOf…
Graphics.DrawMeshInstanced は GPU Instancing を利用してメッシュを不要なゲームオブジェクトを作成するオーバーヘッドなしで メッシュを描画することができます 座標と Mesh、Material を指定するだけなのでかなりシンプルに利用することができます using…
Graphics.RenderMeshInstanced を利用していたところ以下のエラーが出て原因を探していたところ DrawMeshInstanced does not support the shader 'ShaderName' because it does not read any instanced properties. Try switching to DrawMeshInstancedProce…
Graphics.RenderMeshIndirect を利用することで、CPUを経由して描画するのではなく、GPUを直接利用して描画することができるため、大量の草などを軽く描画することができます 今回は10個の草を描画してみます 以下がスクリプトで、バッファを複数利用して描…
C#8.0 から Index型とRange型が追加されたようで、以下にあるように範囲指定や、最後からn番目の指定ができるようになりました var array = new []{ 1, 2, 3, 4, 5}; array[1..^1]; // 1番目から最後の1つ手前 (2, 3, 4) array[1..]; // 1番目から最後 (2…
環境: Unity2021.3.16f1 URP12.0.8 hacchi-man.hatenablog.com こちらはすでにURPのカスタマイズができる状態にしてることを前提に話を進めます Unity の GBuffer の内容は以下のようになっており GBuffer0、ARGB32 フォーマット: ディフューズ色 (RGB)、オ…
環境: Unity2022.2.b16, URP14.0.3 Exposed を false にした _GBuffer0, _GBuffer1, _GBuffer2 を Properties に定義する ことにより ShaderGraph で GBuffer を参照できるようになります Texture を参照する際も SampleTexture2D ノードを利用するだけで問…
環境: Unity2021.3.16f1, URP12.1.8 Shader 側で GBuffer + Depth を利用するためには、特にスクリプト側で設定する必要は無く、 _CameraDepthTexture _GBuffer0 _GBuffer1 _GBuffer2 を定義するだけで参照することができる Shader "Hidden/GBufferFullScree…
hacchi-man.hatenablog.com 以前の処理では途中で半径を変えられなかったため、半径を変える処理を追加したものが以下になります using UnityEngine; public class RoundTarget : MonoBehaviour { [SerializeField] private Transform _center; [SerializeFi…
デフォルトの設定では JobSystems 側でエラーログが発生したとしても以下のように細かい情報が表示されない System.IndexOutOfRangeException: Index {0} is out of range of '{1}' Length. This Exception was thrown from a job compiled with Burst, whic…
Jobsystem を利用すると処理時間が早くなるということなので、実際にメインスレッドと JobSystem でノイズテクスチャを生成してみました メインスレッド private void CreateTexture(int size) { var texture = new Texture2D(size, size, TextureFormat.RGB…
https://hacchi-man.hatenablog.com/entry/2023/01/14/220000hacchi-man.hatenablog.com 上記の記事で書いたように、Unity2021、2022では Physics.queriesHitBackfaces = true だとしても一部メソッドを除いて正しい挙動を行わない そのため、Unity2021、202…
Physics.queriesHitBackfaces を利用すれば Mesh の裏側から Ray を飛ばしてもヒットするとあったので試してみました 検証 処理はこちら、Physics.Raycast の前に Physics.queriesHitBackfaces = true をすることで裏面もヒットするようにしています private…
using System.Collections; using TMPro; using UnityEngine; [RequireComponent(typeof(TextMeshProUGUI))] public class TextMove : MonoBehaviour { [SerializeField] private float _interval = 0.25f; [SerializeField] private float _moveTime = 0.5f…
床に写ったような表現をさくっとできるコンポーネントを作成しました 現状一番下を0にしてもうっすらとは見えてしまうので、見えてしまう最大範囲を変える場合は対応が必要になります using System.Collections.Generic; using UnityEngine; using UnityEngi…
BaseMeshEffect を用いて同じ画像をスケールを変えて複製することで Outline っぽいものを再現しています using System.Collections.Generic; using UnityEngine; using UnityEngine.UI; [RequireComponent(typeof(Image))] public class OutlineImage : Bas…
洞窟生成アルゴリズムとして利用されている (多分) Perlin worms を試してみたくて Unity で簡単なものを作成してみました 今回複数のフレーム をまたぐ処理がうまいこといかなかったのでそちらに関しては実装していません またシード固定のために Mathf.Per…
【環境】 Unity2021.3.16f1, URP12.1.8, Deferred 以前 は Forward で確認をしましたが、今回は Deferred でライトの白飛びをなんとかしてみます Deferred では Forward とはライトの処理箇所が異なっており、com.unity.render-pipelines.universal/Shaders/…
【環境】 Unity2021.3.16f1, URP12.1.8, Forward 通常 Light の Intensity を大きくすれば遠くまで明るくできるが、近い部分がライトの色が強く反映されてしまう これを URP をカスタマイズすればなんとかできるんじゃないかと思ったのでやってみる URP のカ…
Library/PackageCache/com.unity.render-pipelines.universal@*.*.* を Packages/ 以下に移動することで URP をカスタマイズできるようになります フォルダ名は参照がある場合@があると既存のやつがエラーになるので com.unity.render-pipelines.universal …
https://hacchi-man.hatenablog.com/entry/2023/01/05/220000hacchi-man.hatenablog.com では1地点のみのソナー表現でしたが、Shader側に複数の座標パラメータを渡すことにより複数地点でのソナー表現ができるようになりました パラメータをセットするのは何…
qiita.com 上記の記事を参考に RendererFeature の FullScreen で利用できるソナー表現を作成しました ※ Unity2021 URP12.1.8 Shader "Hidden/SonarImageEffectShader" { SubShader { Cull Off ZWrite Off ZTest Always Pass { HLSLPROGRAM #pragma vertex F…
qiita.com 上記の記事を参考に RendererFeature で利用できるソナー表現を作成しました ※ Unity2022 URP14 RendererFeature を利用することで特定の Material を利用する必要がなく画面全体に効果を適応することができます アセットはこちらからDLできます S…
qiita.com 上記の記事を参考に ShaderGraph でソナー表現ができるようにしてみました 詳しい説明は記事の方でご確認ください アセットはこちらからDLできます
Shader 名の下部分をダブルクリックすることでShaderName を変更できるようになります / で区切ることで、階層を切ることも可能になっています
Unity は初期状態で FPS は Every V Blank に設定されており、プラットフォームのデフォルトFPSになってしまいます そのため、固定する場合には Application.targetFrameRate に指定した FPS を設定する必要があります またドキュメントにも記載してあるよう…