今日はちょっとだけ進捗をしました。そういえば高速化?はうまくいきました。
元々大量にUdonBehaviourがあってめちゃくちゃ走りまくっていたわけですが、根本的な負荷の原因は何かが重いとかそういうのじゃなくて。
Udonは、1命令そのもののコストが掛かるというだけです。
だから一番いいのはアセンブリレベルで読むこと。インタプリタってそういうものですよね。
で、じゃあどうするかというと要らない命令を実行しないようにするのが一番なわけです。
非自明な圧縮をして高速化するのは人間的にやるべきことじゃないと思うので、まぁ、当然のことをしました。
元々書いていた処理は「ある時間になったら処理を実行する」ものなんですが、その時間になるまで「時間が来るかどうか」をチェックしつづけていたわけです。
実際これは唐突に状況が変わったりするので必要な部分はあるわけですが、全てが必要なわけではもちろんありません。
「次に実行すべき時間」になるまでのんびり待ってもらうのと、唐突に状況に変化が生まれたら待ち時間をなくす。それでほぼ実行コストはなくなりました。そりゃそうよね。
というわけでとうぶん気にせずのんびり書いてられます。まぁ最終段階でまたprofilerとにらめっこしましょうかね。
今日は空を作りました。…その過程で大気の構造とかいろいろ調べました。密度とか。
— phi16 (@phi16_) 2020年7月2日
これは「大気の密度が高度に対して指数関数的減衰するとしたときの a = cosθ
方向の半直線上の大気量」です。計算できませんでした (しんどい関数が出てくるらしい)。そう。
諦めて一定密度である程度の高さで丁度なくなることを仮定して計算しています。いっぱんてきだ。
基本的に「関数の調節」というのは正解を参考にしながら好き勝手に弄るものだと思うんですよね。
正解というのは物理的に考えたときの値で。でもそれは計算するのが面倒な場合もあり、思ったようなヴィジュアルが出ない場合もあり。
そういうときにアーティスティックに調節する、というのは私は大事だと思っているんです。で。
シェーダじゃないと「関数を調節する」行為ってなかなか出来なさそうだから。そういう点でシェーダをアーティストが使うのはすごい正しいと思うんですよ。
だからもっと気軽に使えばいいのになと思います。萎縮させるようなモノは好きではありません。
まぁ、私はそこまでちゃんとしたアーティストじゃないので色々調べて適用して調節して、をひたすらやっていますが。
これでうまくいったらいいな。良い世界になりますように。
今日はこんなはずではなかったんですよ。試作いじってたら気づいたらこんな時間になっていた。
頑張ってつくっていきます。おやすみなさい。