1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Sinen - Vulkanベースのクリエイティブコーディングフレームワーク

Last updated at Posted at 2025-01-09

本当は日中に執筆しようと思ったのだけれど、今から紹介するSinenが、MoltenVKによってMacに対応したことによって、Win/Mac/Linuxのクロスプラットフォーム対応になったことにワクワクしてしまって寝付けないので、思い切ってその勢いで記事を書きたい。

Sinenは、Vulkanをベースにしたクリエイティブコーディングフレームワークで、2D/3Dに対応し、フォントの読み込み、GLTFモデルの読み込みなど、基本的な機能は一通り揃っていて、シンプルでとても使いやすい印象を持つ。言語はLuaとC++に対応している。

2021年から開発が進められていた様子で、当初はOpenGLを使っていたのが、2023年頃にVulkanレンダラーに刷新された様子。ちなみに作者によると、Paranoixaという新しい描画基盤(RHI)を開発中とのことで、これにも期待していきたい。

Hello World (2D)

local hello_texture = {}
local hello_font = {}
local hello_drawer = {}

-- Create a texture
hello_texture = texture()
-- Create a draw2D
hello_drawer = draw2d(hello_texture)
-- Create a font
hello_font = font()
-- Load a font from file(96px)
hello_font:load("mplus/mplus-1p-medium.ttf", 96)
-- Render text to texture
hello_font:render_text(hello_texture, "Hello Sinen World!",
    color(1, 1, 1, 1))
-- Set scale to texture size
hello_drawer.scale = hello_texture:size()

function update()
    -- Draw
    hello_drawer:draw()
end

hello_world.png

3D Example (works)

スクリーンショット 2025-01-09 21.26.06.png

Editor (Experimental)

editor_sample.png

API

Lua APIとC++ APIは、以下より確認が可能。

解説

APIやサンプルを見ていただければ分かると思うが、個人的には、クリエイティブコーディングの基盤としてちょうど良いミニマル具合1。というか、まさにこういうものがほしかったという印象を持っている。

現時点ではまだ、メッシュなどの中間レベルのAPIが存在していないため (現時点でVertexArray等でメッシュ等に対応済みの様子なので、追って追記。) 例えば、球体や立方体を描くにはGLTFなどのモデルのロードが必要で、円や長方形を描くには、画像を読み込むかImGuiなどのGUIを利用するしかないのだけれど、個人的には正直それで十分な気がしていて、Vulkan APIが使えるのでそのあたりは今後簡単に対応・拡張していけるのではないかと感じている。

3Dを扱う上では、まだライティングに関するAPIが本当に最低限しかないものの、シェーダには対応しているので、これも必要に応じて拡張していけると思うし、3D Example (works) のスクリーンショットを見ていただければわかるように、現時点でもいわゆるUnlit風な描画であれば特に問題なく使っていくことができる。

OpenGLからVulkanになって以降、ゲームエンジンのような厚いレイヤーのものは多くあるものの、こういうミニマルなものが少なかった印象なので、ProcessingOpenFrameworksLove2D 2 のようなものが欲しかったという層にはまさにクリーンヒットするフレームワークではないだろうか。

前述のメッシュやライティングについては、個人的に今後コントリビュートしていきたいという思いがあるので、是非今後に期待してほしいと思う。 (現時点でメッシュは対応済みの様子なので、使い方について追記していきたい。)

  1. 方向性は少し違うものの、ミニマルという意味では、Clojure/LWJGL3/BGFXで書かれたminimaxというゲームエンジンと近しいようにも思う。ちなみにminimaxは現時点でMacでしか動かないが、ライブラリ自体はクロスプラットフォーム対応のはずなので、こちらも今後自分自身がコントリビュートしてWin/Linuxでも動くようにしたいなと思っている。

  2. Love2Dに関しては、最近同様のAPIでVulkan実装の3D対応版(LÖVR)がリリースされているので、こちらも比較対象とすると良いと思う。 https://lovr.org/

1
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?