イラスト、モデリング、Unity、VR関連

unityとかblenderとかvr関連の作業メモ

Shader 遭遇した問題とその解決

++

距離で補正を掛けたい場合などはpos.wにz値が入ってるのでこれを使用すればよい。

 

++乱数を使った表示がばぐる

f:id:arumogina:20200322064135p:plain

これは乱数で値を出し、0.5以下なら以上なら1を表示している。

画像では一部01両方が表示されてしまってるのが確認できる。

乱数のシード値に使ってる浮動小数点の丸目誤差の問題だったようで、小数点下3桁を切り捨てたら解決

seed = trunc(seed*1000)/1000;

 

++メッシュの中心のワールド座標を乱数に使う場合

f:id:arumogina:20200323195853p:plain


このように表示がバグる場合があった。

理屈は分からないが

float3 wpos = trunc(i.wpos*1000+0.1);

と処理をしてから使うことで解決。(0.1がないとwposが整数値のときにバグる)

=>駄目なときもある。適当に小数値を掛けたり足したりすれば回避出来た。

 

++unrollを書け、とコンパイラが言ってくるから書いたのにエラーを吐いてくる場合

for(int i =0;i<_Num;i++){}

=>

for(int i=0;i<(_Numの最大値);i++{

  if(i>=_Num) break;

...

}