てくメモ

trivial な notes

2023-12-01から1ヶ月間の記事一覧

【Godot Shader】2D Doodle エフェクトの作成

横着しようと AIに Unity 用シェーダーの Godot ポートをお願いしてみたところ、上手くいかなかった。 なので、手を動かして学習する。ここでは、Doodle エフェクト1を、Sprite2D にかけてみる。(Godot 4.x) 最初に成果物。以下の画像のような感じ。(外部…

【Godot C#】標準ライブラリと被っていない Mathf メンバー

Godot C# のMathfクラスは、GDScript の数学定数・数学関数に対応するメンバーを提供している。 そのなかには、C# における標準ライブラリ提供のメンバーとオーバーラップしているため、処理がそのまま委譲されているものもある。 独自に提供されている機能…

【Godot C#】Godot C# における Rx、または ProcessAsObservable を自前で用意する方法

【追記】 UniRx の Cysharp から次世代 Rx ライブラリがリリースされ(2024/1~)、明示的に Godot がサポートも含まれています。オレオレ Rx をする理由がなくなりました。 Godot における Rx (Reactive Extensions) について、GDScript には GodotRx があ…

【Godot C#】async/await な流れで落ち物ゲームをつくる

本記事は、Godot Engine Advent Calendar 2023 参加記事となっています。 空きのある日があったので、枯れ木も山の賑わいとばかりに参加させていただきました。不勉強な部分があるかと思いますが、よろしくお願いいたします。 以下の画像(外部サイト投稿の …

【C#】分岐最適化時代の Compare の書き方

C#

※ 大仰なタイトルですが、下記記事の一部分を引き伸ばした内容になります。 Performance Improvements in .NET 8 - .NET Blog 上記記事の Branching の項目で、分岐レス化による最適化が解説されている。 詳細は元記事参照として、Compare 的な処理が例とし…

【C#】Span<byte>.SequenceEqual に代えて数値型で == する方法の確認

C#

下記スライドを学習した際、記事名の内容の効用が気になったので、マイクロベンチマークする。 CEDEC 2023 モダンハイパフォーマンスC# 2023 Edition - Speaker Deck byte列の照合を取る際は通常、SequenceEqualメソッドを用いる。比較するReadOnlySpan<byte>が静</byte>…

【C#】辞書の key への列挙型の利用

C#

enumを数値型にキャストして辞書の key にする、というコードを見たのをきっかけ。enumそのままとintにキャストした key で比較。 結論から言えば、単純な get/set のマイクロベンチマークでは有意な差はなかった。 レガシーな環境以外では実益はなさそう? …

【C#】2つの float が概ね等しいかを得る処理の確認

C#

実用のうえで、近似した2つの浮動小数点数(この記事ではfloat)を等価として扱いたい場合がある。 Console.WriteLine(0.2f * 0.1f == 0.02f); // False // ⇧ 実用のうえで、True として扱ってほしい 記事現在、標準ではその機能を直接提供するメソッドはな…

【C#】null許容型のイディオム

C#

null許容型(プロジェクト設定に応じてT?型または参照型)をパターンマッチングでさっと扱うコードを見て、まだ頭に馴染んでなかったと感じたので記事に書いて馴染ませる。 ついでにパターンマッチング以外も整理する。 null 条件演算子 (?. / ?[]) null 合…

【C#】デリゲートを取る引数に ラムダ式 / 各種メソッド / ローカル関数 を渡した際の違いを確認する

C#

自分の認識と少し状況が変わっているという話を見聞きし、まとめて確認。 ラムダ式、インスタンスメソッド、staticメソッド、拡張メソッド、ローカル関数を渡す メンバーやローカル変数をキャプチャしないのを前提 .NET 8 / C# 12 ケースをフォーカスしてし…

【C#】DefaultInterpolatedStringHandler を StringBuilder 的に使う

C#

本記事は、C# Advent Calendar 2023 12日目参加記事となっています。 11日目:【C#】抽象クラスとインターフェースを併用する理由を考えた by @seiya2130 13日目:ISpanFormattableを使おう by @Shaula C#において、複雑な文字列を組み立てる手段として挙げ…