雑多なネタを書いてあとで探しやすくするためのページ.

役に立ったらイイネや紹介してね☆(ゝω・)vキャピ

Simplex頂点に任意の乱数を利用できるSimplex Noise

nagakagachi.hatenablog.com


入力ベクトルの主要軸と第二主要軸を抽出する

ベクトルのコンポーネントについて絶対値が大きい順で第一位(Dominant), 第二位(Secondary)の軸の情報を抽出する.
軸インデックス:x=0, y=1, z=2
と
軸マスクベクトル (1, 0, 0), (0, 1, 0), (0, 0, 1)
を返す.
もっとシンプルな記述ができそうなので後でアップデートするかも.

const float3 abs_dir = abs(in_dir);

const int3 comp0 = abs_dir.xyz > abs_dir.yzx; const int3 comp1 = abs_dir.xyz > abs_dir.zxy; const int3 rank = comp0+comp1;

out_dominant_axis_index = 0; out_secondary_axis_index = 0; out_dominant_axis_mask_vec = float3(0.0, 0.0, 0.0); out_secondary_axis_mask_vec = float3(0.0, 0.0, 0.0); for(int i = 0; i < 3; ++i) { if(2 == rank[i]) { out_dominant_axis_index = i; } if(1 == rank[i]) { out_secondary_axis_index = i; } } out_dominant_axis_mask_vec[out_dominant_axis_index] = 1.0; out_secondary_axis_mask_vec[out_secondary_axis_index] = 1.0;

return out_dominant_axis_mask_vec;


元のはてなブログ記事