Unity のシェーダ内でスクリーンの色と深度を取得するときの注意点
Screen Space で色々やることになったときのメモ。慣れてなかったのでめちゃ混乱しました。
Screen Space で色々やることになったときのメモ。慣れてなかったのでめちゃ混乱しました。
マーチングキューブ法によるメッシュの生成ではいくつかのケースで曖昧性があり、解像度が不十分だと穴が開いてしまうことがあることが知られていますが、実は分類方法と三角形の作り方を工夫することで穴が開かない lookup table を作ることができます。
ググってもすぐに見つからなかったので、lookup table を手動で作るためのツールを作りました。22パターンあって面倒ですが頑張ってください(記事の最後に自分で作ったテーブルを載せておきます)。
毎回忘れて計算し直してるのでメモ。
面は反時計回りを表とする三角形で構成されています。適当に加工して使ってください。
虹色のゼリーを粉砕できるシミュレーションを作りました。
シミュレーションは WebGL 2.0 の機能をふんだんに利用した GPGPU で行われています。機種依存のバグが多すぎてスマホの対応が大変でした(まだ対応できていないスマホもあります)。
やってしまいました。
ここに vec2
の変数があります。
vec2 v;
各要素の精度を 16 ビットまで落として、一つの 32 ビット整数に pack します。
uint a = packHalf2x16(v);
そのままでは出力できなかったので、同じく 32 ビットの浮動小数点数である float
に変換して書き出します。
float output = uintBitsToFloat(a);
次読んだときにはデータは消えていました。
欲しかったので作ってしまいました。HGSL 開発リポジトリはこちら。Haxe の環境を VSCode に導入すれば誰でも使えます。
以下開発経緯や言語の特長、技術的解説、苦労した話などが続きます。
WebGL 2.0 で使える GLSL ES 3.0 における各種データ型やコンストラクタの挙動を自分用にまとめます[1]。
先日とある方からの報告により発覚したのでメモ。
WebGL で浮動小数点数テクスチャ (float, half-float) を使うときに注意しておかないと、特定のデバイスで「本当はサポートされているのに浮動小数点数テクスチャが使えない」状況に陥ります。
長々と開発中だった SandVox Simulator を公開しました。Falling-sand game と呼ばれているゲームの一種で、それの3D版です。スマホとPCどちらからでも遊べます。ある程度のスペックがあれば……。
以下では開発に至った経緯や小話、技術関連の話と近況について書いておきます。