koturnの日記

普通の人です.ブログ上のコードはコピペ自由です.

Unity

シェーダーにおける浮動小数点剰余(mod, fmod)の実装

TL;DR シェーダー言語によってその言語組み込みの fmod() (mod()) の実装は異なるため注意する必要がある. 挙動の罠に引っかからないためには自前で実装するのが安全である. GLSL // Equivalent to mod() in GLSL. float fmodglsl(float x, float y) { r…

Unityのシェーダで原点・XZコンパスを実装した

TL;DR 常に原点を指す,またX軸,Z軸を指す針も含むシェーダを作った. VRChatのアバターに付けるとベンリかもしれない 原点・X軸コンパスシェーダーできた.黄緑矢印が原点方向,赤矢印がX軸方向でアバターの向きに関係なく必ずその方向を指す.青矢印はX軸…

カスタムレンダーテクスチャでライフゲームを実装した

TL;DR カスタムレンダーテクスチャでライフゲームを実装してVRChatのアバターに付けた. ライフゲーム 背景 オタクはすぐにシェーダでライフゲームを実装するもの,らしい. N番煎じではあるが,VRChatのアバターにライフゲーム付けるのはすぐにできるなと思…

ZopfliPNGによるPNGの可逆再圧縮とVRMの容量削減について

この記事はIQ1 Advent Calendar 2020の7日目の記事です. TL;DR zopflipng.dllをいい感じに使うツールを作りました. 並列実行可能 zipアーカイブファイル内のファイルを一時的に書き出すことなく処理可能 更新日時タイムスタンプはそのままで再縮率実施 ま…

Unityでの変数・プロパティのアクセス性について考える

前置き 最近,Unityに触れており,C#を書くことが多い. 古いUnityの文化はわからないが,publicメンバ変数が気持ち悪くて仕方がない. (おそらく,古代のUnityではプロパティを使用できない,あるいは実行処理系がプロパティのインライン展開を行うことが…