Skip to content

Latest commit

 

History

History
217 lines (165 loc) · 6.18 KB

File metadata and controls

217 lines (165 loc) · 6.18 KB

Config

Why use YAML?

orgeでは初期化時の設定をYAMLファイルあるいはYAML形式の文字列で与える。 これは初期化関数のAPIをなるべく簡潔に保つためである。

レンダーパスやグラフィックスパイプラインの定義を平坦な引数で与えると煩雑になってしまう。 確かに、これらの設定だけ別途C++で与えるようにしても良い。 あるいは、例外的に構造体を定義してもらうようにしても良い。 しかし、orgeのコンセプトはFFIを持つどの言語からも楽に使えることである。 そのため、このような設計になっている。

Parameters

# ========== Basic Settings ==================== #

# ウィンドウタイトル
title: string

# ウィンドウの内側のサイズ
# フルスクリーン時はこのサイズのアスペクト比を保ってスケーリングされる
width: unsigned int
height: unsigned int

# フルスクリーン状態で開始するか
# 省略された場合、falseとみなされる
fullscreen: bool

# 垂直同期を無効化するか
# 省略された場合、falseとみなされる
disable-vsync: bool

# Alt+ReturnあるいはCmd+Returnでのフルスクリーン・非フルスクリーンを許可するか
# 省略された場合、trueとみなされる
alt-return-toggle-fullscreen: bool

# 音声チャンネルの数
# 省略された場合、16とみなされる
audio-channel-count: unsigned int

# ========== Assets Definition ================= #

# アセットファイル名
# 省略可能
assets: string[]

# ========== Meshes Definition ================= #

# メッシュアセット名
# 省略可能
meshes: []
  - vertices: string
    indices: string

# ========== Text Rendering Settings =========== #

# 省略可能
fonts:
  - id: string

    # フォントアセット名
    file: string

    # 1文字の幅および高さの最大値 (px)
    # 0より大きい整数であること
    char-size: unsigned int

    # テクスチャアトラスにロードする文字の列・行数
    # 0より大きい整数であること
    char-atlus-col: unsigned int
    char-atlus-row: unsigned int

# 最大文字数
# 省略された場合、256とみなされる
char-count: unsgined int

# ========== Attachment Definition ============= #

attachments: []
  - id: string

    # アタッチメントのフォーマット
    # 取りうる値は以下:
    #   - render-target
    #   - depth-buffer
    #   - share-color-attachment
    #   - signed-share-color-attachment
    format: string

    # レンダーパス終了時にアタッチメントの内容を破棄するか
    # 省略された場合、falseとみなされる
    discard: bool

    # アタッチメントのクリア値
    # - カラーアタッチメントであればfloat[4]を、
    # - 深度アタッチメントであればfloatを指定する
    clear-value: float[4] | float

# ========== Pipeline Definition =============== #

# 省略可能
pipelines: []
  # 通常のレンダリングパイプライン
  - id: string

    # シェーダアセット名
    vertex-shader: string
    fragment-shader: string

    # ディスクリプタセットの配列
    # 省略可能
    desc-sets: []
        # アロケートするこのディスクリプタセットの個数
      - count: unsigned int

        # ディスクリプタの配列
        bindings: []
            # ディスクリプタの種類
            # 取りうる値は以下:
            #   - texture
            #   - sampler
            #   - uniform-buffer
            #   - storage-buffer
            #   - input-attachment
          - type: string

            # ディスクリプタの数
            # 省略された場合、1とみなされる
            count: unsigned int

            # ディスクリプタが見えるパイプラインステージ
            # 取りうる値は以下:
            #   - vertex
            #   - fragment
            #   - vertex-and-fragment
            stage: string

    # 各頂点入力属性のサイズの配列
    # 各値は1から4まで
    # 省略された場合、空配列とみなされる
    vertex-input-attributes: unsigned int[]

    # シェーダ内でメッシュを構築するか
    # 省略された場合、falseとみなされる
    mesh-in-shader: bool

    # カリングを行うか
    # 省略された場合、falseとみなされる
    culling: bool

    # 深度テストを行うか
    # 省略された場合、falseとみなされる
    depth-test: bool

    # 各カラーアタッチメントのカラーブレンドを行うかの配列
    color-blends: bool[]

# ========== Render Pass Definition ================ #

render-passes: []
  - id: string

    subpasses: []
      - id: string

        # 入力となるアタッチメントのIDの配列
        # 省略可能
        inputs: string[]

        # 出力となるカラーアタッチメントのIDの配列
        outputs: string[]

        # 関連付ける深度アタッチメント
        # 省略可能
        depth:
            id: string
            read-only: bool

        # 依存するサブパスのIDの配列
        # 既に定義されているサブパスのIDであること
        # 省略可能
        depends: string[]

        # 対応するすべてパイプラインID
        # テキストレンダリングパイプラインを使う場合は @text@ を指定する
        pipelines: string[]

# ========== Compute Pipeline Definition ================ #

# 省略可能
compute-pipelines: []
  - id: string

    # シェーダアセット名
    shader: string

    desc-sets: []
        # アロケートするこのディスクリプタセットの個数
      - count: unsigned int

        # ディスクリプタの配列
        bindings: []
            # ディスクリプタの種類
            # 取りうる値は以下:
            #   - texture
            #   - sampler
            #   - uniform-buffer
            #   - storage-buffer
            #   - storage-image
          - type: string

            # ディスクリプタの数
            # 省略された場合、1とみなされる
            count: unsigned int