2023/5/28(日)

Vulkan入門とOpenXR入門を書き進めた。

Vulkan入門はステージングバッファの話がだるくてそこでストップしていたのだが、やる気出してちゃんとやったらちゃんと進んだ。5章が書き終わったら気分的にかなり一息つける。

ユニフォームバッファはデバイスローカルにする必要があるのか?というところについて、自分自身よく分かっていなかったのだが、ネット情報によると最近のGPUには大概「デバイスローカルかつホストビジブル」なデバイスメモリがあってそいつを使うと良いらしい。完全な新知識を仕入れてしまった、どうしよう。確かに手元のRTX3060Tiでvulkaninfosdkを使ったらそのようなデバイスメモリがあることが確認できた。

この領域はあまり広くないため、容量がデカいし頻繁にいじるものでもないテクスチャとか頂点バッファとかはここに置くべきではないが、容量が小さく頻繁にいじるユニフォームバッファのようなデータにはうってつけらしい。また、もしこのような領域が無い場合は仕方が無いので、他と同様にデバイスローカルなメモリへ毎フレーム転送するべきらしい。補講の方でまとめることにする。

OpenXR入門の方は、スタンドアロンVR向けの環境構築の話をするのが非常にだるいので、どうせ後で付け足せば良いし飛ばすことにした。

一応Androidベース機器の場合にやる必要のある設定処理があったりするのでその辺の記述もしておきたいのだが、本編がある程度一段落してやる気が出たらでいいやということにする。


ARC161に出た。

A: AをソートしたものをB、P=(N+1)/2として、B_1, B_(P+1), B_2, B_(P+2), …と並べればよい。厳密な照明はしてない…

B: Nの最大値が10^18程度ということは、立てるビットの位置は60通り程度であり、しかも3か所しかないのでパターン数は結構少ない。$O(T(\log N)^3)$はやや大きいのでちょっと枝狩りしてやれば通る。

C: 解けず。葉から決めて行けば良さそうだが、あまりにも複雑で整理するのに途方もない時間がかかってしまった。とりあえずある程度行けそうなのが出来たが通らず。

D: まず、Dが多すぎる場合はそもそも組めないのでNoにする。グラフを作ること自体はいけそうな場合、どうやって作るのが良いかを考える。

出力を検証する側の気持ちに立ち、誘導部分グラフの密度が高くなる部分集合Xをどうやって見つけるかを考える。もし密度を高くしようと思ったら、辺の数が少ない頂点を外したい。ということは、全部の頂点が平等ならそういう戦略は厳しくなるのでは?ということで全頂点を円形に並べて適当に1個隣~D個隣までを繋げることにした。そしたらなんか通った。常に行けることの証明はしていないので罪悪感。

Categories: