Skip to content

Instantly share code, notes, and snippets.

@inonote
Last active November 26, 2024 10:38
Show Gist options
  • Select an option

  • Save inonote/4d100277f797b55581d4317ffb4f2ce0 to your computer and use it in GitHub Desktop.

Select an option

Save inonote/4d100277f797b55581d4317ffb4f2ce0 to your computer and use it in GitHub Desktop.
UPM 形式の仕様

UPM 形式仕様

仕様

  • 文字コード UTF-8
  • パラメーター間の区切りは水平タブ文字 \t
  • Plain text で 3D オブジェクトを表現する。
  • 複数のオブジェクトを埋め込むことも可能。
  • 頂点シェーダーとフラグメントシェーダーを必ず用意する必要があります。GLSL に対応。

構文

VERSION バージョン指定

VERSION <num>

パラメーター

  • num ここでは 1

OBJ オブジェクトデータ開始

OBJ <id>

パラメーター

  • id オブジェクトの ID

USE 機能有効化

OBJ <funcName>

パラメーター

  • funcName 機能名
    • DEPTH_TEST 深度判定を有効化
    • DEPTH_WRITE 深度書き込みを有効化
    • UV UV 座標指定の有効化
    • TRI 三角ポリゴン用の序数 index 値指定の有効化
    • DIF 頂点色指定の有効化
    • NRM 法線ベクトル指定の有効化

BLEND 合成モード

BLEND <blendMode>

パラメーター

  • blendMode 合成モード
    • ALPHA アルファ
    • ADD 加算

TEX テクスチャ指定

TEX <index> <filepath> <wrapS> <wrapT> <minFilter> <magFilter>

パラメーター

  • index テクスチャインデックス
    • シェーダー内では tex とここで指定した番号を結合した変数名でテクスチャを参照できます。 ( 例: 1 の場合、tex1 )
  • filepath テクスチャのファイルパス (相対)
    • DDS 形式のファイルのみ読み込むことができます。
    • 対応コーデック
      • BC1
      • BC3
      • 8.8.8 RGB
      • 8.8.8.8 RGBA
  • wrapS wrapT UV 座標が範囲外を示したときの処理方法
    • wrapS が U 座標、wrapT が V 座標の場合の処理です。
    • 以下のいずれかの値を指定します。
      • CLAMP 0.0 ~ 1.0 の範囲にクランプします。
      • REPEAT 値の整数部分を無視して繰り返しパターンにします。
      • MIRROR 値の整数部分を無視して繰り返しパターンにしますが、値の整数部分が奇数の場合は反転します。
  • minFilter magFilter 縮小(min) / 拡大(mag) する際に適用するフィルター
    • 以下のいずれかの値を指定します。
      • NEAREST 座標にもっとも近いピクセルの色を採用します。 (最近傍補間)
      • LINEAR 座標を囲む 4 ピクセルの加重平均の色を採用します。 (線形補間)
    • 以下は minFilter でのみ指定できます。
      • MIP_NEAREST 最も近いミップマップから NEAREST の方式で色を採用します。
      • MIP_LINEAR 最も近いミップマップから LINEAR の方式で色を採用します。
      • MIP_NEAREST2 最も近い 2 つのミップマップから NEAREST の方式で色を採用します。
      • MIP_LINEAR2 最も近い 2 つのミップマップから LINEAR の方式で色を採用します。

SHADER シェーダー指定

SHADER <type> <filepath>

パラメーター

  • type 適用する種類
    • VTX 頂点シェーダー
    • FRG フラグメントシェーダー
  • filepath 読み込むシェーダーのファイルパス (相対)
    • glsl のソースコードのみ読み込むことができます。

ANM アニメーション指定

ANM <animation>

パラメーター

未実装

BEGIN_DATA 頂点データ開始

BEGIN_DATA <type>

パラメーター

  • type 種類
    • VTX 頂点座標
    • NMR 法線ベクトル
    • DIF 頂点色
    • UV UV 座標
    • TRI 三角ポリゴン用の序数 index 値配列
    • ANM_TREE アニメーション構造 (未実装)

END_DATA 頂点データ終了

END_DATA

パラメーター

なし

LINK_DATA 他のオブジェクトの頂点データを参照する

LINK_DATA <type> <objId>

パラメーター

  • type 頂点データの種類
  • objId 参照元のオブジェクト ID

CAMERA カメラ

CAMERA <px> <py> <pz> <rx> <ry> <rz>
  • px 位置 X
  • py 位置 Y
  • pz 位置 Z
  • rx 回転 X
  • ry 回転 Y
  • rz 回転 Z
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment