くまりゅう日記

もっと過去の日記
[.NET | BeOS | Blender | COLLADA | fossil | mono | monotone | NPR | OpenGL | PeerCastStation | Riko | Ruby | Silverlight | TRPG | XNA | ゲーム | ゲーム作り | ]

2018-12-19

日記

いつも通り何もできていない。

イベントサイトを大幅に手を入れようとしたが、DBをだいぶ作り替えることになってしんどいのであった。 まだちょっと時間かかりそうだけど、サイト自体は公開しておいてあとで直せばいいか……。

Vulkan勉強中

Vulkanの勉強をしているがなかなか難しいな。

SIGGRAPH ASIAでちょうどVulkanのコースがあったんだが、そのコースをやっていた時間は裏で機械学習のコースを聞いてカックンカックン寝てたので聞きに行けなかったのだ。 でも資料はあるのでこれが非常に参考になる。 これと各種サンプルでなんとか。

基本的にはめんどくさいOpenGLという感じだが、実際それらしいデバイスを持ってないとどうなるんだかよくわからんところもあるのが難しいな。 Queueっていくつ作れるんだ?と思ったが、Graphicsキューは基本的に1つで、DB見る限りNVIDIAのだけ16個も作れるらしい。16並列で同時に描画できるの?ほんとにー?

描画はできるが画面表示できるわけでないPhysicalDeviceだのQueueFamilyだのがあるぽい。 どうしてそんなことに……って、GPUが2つ以上ある時だったりするんかな。 単体GPUはあるが、直接画面表示できるのは統合GPU側だけ、とかいう時にそうなるのかもしれない。 でもなるかもしれないってだけなのでよくわからなくて困る……。

F#で書いてるのでSharpVkというバインディングを使ってたんだが、これがC#前提で暗黙的変換を多用しており、F#だと暗黙的変換がほぼ使えねえのでop_Implicitを明示的に呼び出す必要があってめんどい。op_Implicitて名前長いし。

他のでVulkanSharpというのがあってこれは暗黙的変換はあまり無いので良いかと思ったんだが、オブジェクト作成のためのパラメータを格納するクラスがIDisposableになっており内部でメモリ確保してるんだが、このパラメータは入れ子になることがあるのよね。 一時的に作るオブジェクトなのでuseとかで適切にDisposeしたいんだが、入れ子になってると中のオブジェクトまでDisposeしていかないといけないし標準ではしてくれなさそう。 単に一段入れ子になってるくらいならまだ良いんだけど、配列の中に入れ子になったオブジェクトが入ることもあって、それはもうuseじゃなんともならん。 もちろんファイナライザで勝手にメモリ解放はしてくれるのでGC任せでつっぱしれ!ということもできなくはないが、ちょっと気持ち悪いのよなあ。 サンプルではそうしてるし、そんなにオブジェクト頻繁に作るものでもないし、しばらく残ったとしても些細な量というのは確かなんだが、行儀悪いのが気になるわ……。

Vulkanは勉強用やいろいろ試すのに使うだけで、直接Vulkan使って何かリリースするような物作ることはないつもりなんで、どっちでも良いと言えば良いんだがな。

何かリリースする用に使うならVeldridてのが良さそうに見える。 Vulkan素ではなく一段ラップしたようなライブラリでだいたいVulkanなんだけど、バックエンドにVulkan以外にMetalだのD3D11だのOpenGL(ES)だのも選べるのでいろんなところで動きそう。 ラップされてるから新しい機能いじって遊ぶには向いてないけど、何か他所の環境で動く物作るにはよさそうね。


ページのトップへ | トップ «前の日記(2018-12-13) 最新 次の日記(2018-12-25)» | 編集 | kumaryu.net by kumaryu