orklev2-txi
orkidのTextureInterface(TXI)、Texture/TextureArrayクラス、Image(CPUピクセル)、テクスチャフォーマット、サンプリングモード、ミップチェーン、テクスチャの作成/読み込み、共有メモリテクスチャ(ShmTex)、およびPythonのテクスチャ/イメージバインディングについてのご質問にお答えします。ユーザーがテクスチャ、イメージ、テクスチャアレイ、サンプリング、またはテクスチャ読み込みについて質問する際に使用してください。
description の原文を見る
Answer questions about orkid's TextureInterface (TXI), Texture/TextureArray classes, Image (CPU pixels), texture formats, sampling modes, mip chains, texture creation/loading, shared memory textures (ShmTex), and Python texture/image bindings. Use when the user asks about textures, images, texture arrays, sampling, or texture loading.
SKILL.md 本文
Orkid TextureInterface (TXI) リファレンス
orkidのテクスチャ、イメージ、またはテクスチャ管理に関する質問に答える場合は、以下のファイルを参照してください。すべて ork.lev2/ 配下にあります。
キーファイル
| コンポーネント | ファイル |
|---|---|
| TXI インターフェース | inc/ork/lev2/gfx/txi.h (lines 63–130) |
| Texture / TextureArray / MipChain | inc/ork/lev2/gfx/texman.h |
| Image (CPU側) | inc/ork/lev2/gfx/image.h |
| 共有メモリテクスチャ | inc/ork/lev2/gfx/shmtexture.h |
| 列挙型 (フォーマット、型) | inc/ork/lev2/gfx/gfxenv_enum.h |
| Vulkan TXI | src/gfx/vulkan/vulkan_txi.cpp |
| Vulkan データアップロード | src/gfx/vulkan/vulkan_txi_from_data.cpp |
| Vulkan アレイ | src/gfx/vulkan/vulkan_txi_from_array.cpp |
| Python Image バインディング | pyext/src/pyext_gfx_image.cpp |
| Python Texture バインディング | pyext/src/pyext_gfx.cpp (lines 371–936) |
TXI インターフェース (txi.h:63–130)
| メソッド | 説明 |
|---|---|
initTextureFromData(tex, TextureInitData) | CPU バッファを GPU にアップロード |
initTextureArray2DFromData(arr, data) | 2D テクスチャアレイを作成 |
initTextureArray2D(arr) | 空のアレイを割り当て |
initTextureArray2DAsync(arr) | 非同期アレイ割り当て |
updateTextureArraySlice(slice, image) | 単一のアレイスライスを更新 |
updateTextureArray(array) | アレイ全体を更新 |
createFromMipChain(chain) | 事前計算されたミップから作成 |
generateMipMaps(tex) | GPU 上にミップチェーンを生成 |
ApplySamplingMode(tex) | フィルター/アドレスモードを適用 |
destroyTexture(tex) | GPU リソースを解放 |
initTextureFromGpuExternalSurface(tex) | IOSurface/DMA-BUF インポート |
initFromShm(tex, consumer) | 共有メモリテクスチャ |
Texture (texman.h:157–249)
| メンバー | 型 | 説明 |
|---|---|---|
_width, _height, _depth | int | 寸法 |
_num_mips | int | ミップマップレベル |
_texFormat | EBufferFormat | ピクセルフォーマット |
_texType | ETextureType | 1D/2D/3D/CUBE/ARRAY |
_source | ETextureSource | 作成方法 |
mTexSampleMode | TextureSamplingModeData | フィルタリング設定 |
_impl | svarshp_t | GPU実装 |
_chain | MipChain* | CPU側ミップデータ |
_isDepthTexture | bool | デプステクスチャフラグ |
静的メソッド: LoadUnManaged(path)、createBlank(w,h,fmt)
TextureArray (texman.h:252–277)
_width, _height, _maxslices— 寸法とスライス数_format— すべてのスライスの EBufferFormatload(path)— パスのイメージを新しいスライスに読み込みresize(w, h, maxslices, fmt)— 割り当てslice(index)→TextureArraySliceRef
ETextureType
ETEXTYPE_1D、ETEXTYPE_2D、ETEXTYPE_3D、ETEXTYPE_CUBE、ETEXTYPE_1D_ARRAY、ETEXTYPE_2D_ARRAY、ETEXTYPE_3D_ARRAY
ETextureSource
FROM_DATA、FROM_RTG、FROM_IMAGE、FROM_TENSOR、FROM_MIPCHAIN、FROM_XTX、FROM_DDS、FROM_ASSET、FROM_ARRAY、FROM_DEFAULT、MOVIE
サンプリングモード (texman.h:104–118)
TextureSamplingModeData {
TextureAddressMode _texAddrModeS/T/R; // CLAMP or WRAP
ETextureMinifyFilterMode _texFiltModeMin; // NEAREST, LINEAR, LINEAR_MIPMAP_LINEAR, etc.
ETextureMagnifyFilterMode _texFiltModeMag; // NEAREST, LINEAR
float _maxAnisotropy; // 1–16x
int _maxMipLevel; // default 8
};
プリセット: presetPointAndClamp()、presetTrilinearWrap()、presetTrilinearClamp()
MipChain (texman.h:122–153)
_levels— MipChainLevel (幅、高さ、データ、長さ) のベクタ_format— EBufferFormat- レベルごとの
sample<T>(x, y)— 型付きピクセルアクセス
Image (image.h:104–212) — CPU側ピクセルデータ
作成
createFromFile(path)— ディスクから読み込みinitWithFormat(w, h, fmt)— フォーマット付きの空イメージinitRGB8WithColor(w, h, fvec3)/initRGBA8WithColor(w, h, fvec4)— 単色塗りつぶしfromSvgString(svg, w, h)— SVGをラスタライズ
処理
resizedOf(inp, w, h)— リサンプリングdownsample()— 2倍削減gaussianBlur(out, kernel_size)— ブラーseparableConvolve(out, kernel, threshold)— 1D畳み込みinvert(mask)、gamma(val, mask)、contrast(val, mid, mask)、combine(fmtx4)— 色操作
トランスフォーム
rotated90cw/ccw()、hFlipped/vFlipped()— 新しいイメージを返すrotate90cw/ccw()、hFlip/vFlip()— インプレース
フォーマット変換
convertToRGBA(out, force_8bc)、convertToFormat(fmt)
圧縮
compressedMipChainBC7()— BC7圧縮ミップ (ISPCビルド)compressedMipChainDefault()— 自動フォーマット検出uncompressedMipChain()— 非圧縮ミップ
I/O
writeToFile(path)/readFromFile(path)
ピクセルアクセス
pixel8(x,y)、pixel16(x,y)、pixel32f(x,y)— 取得/設定
共有メモリテクスチャ (shmtexture.h)
ShmTexProducer — ヘッドレスプロセスがフレームを書き込み
create(config)→ プロデューサーbeginWrite()→ バッファポインタendWrite(timestamp_ns)— フレーム送信- トリプルバッファリング、GPUコンテキスト不要
ShmTexConsumer — GPUプロセスがフレームを読み取り
create(config)→ コンシューマー (SHMセグメントにアタッチ)update(ctx)— ポーリングして新しいフレームを GPU にアップロードtexture()→ 現在のGPUテクスチャ
Python API
from orkengine import lev2
# Image
img = lev2.Image.createFromFile("photo.png")
img = lev2.Image.createRGBA8FromColor(256, 256, fvec4(1,0,0,1))
img = lev2.Image.fromSvgString(svg_xml, 512, 512)
img.invert()
img.gamma(2.2)
resized = img.resized(128, 128)
img.writeToFile("output.png")
# Texture
tex = lev2.Texture.load("texture.xtx")
tex = txi.createColorTexture(fvec4(1,1,1,1), 64, 64)
txi.updateTexture(tex, img, async=True)
txi.applySamplingMode(tex)
# Texture Array
texarray = lev2.TextureArray(w=256, h=256, slices=32, fmt="RGBA8", mipmapped=True)
slice_ref = texarray.load("slice.png")
txi.updateTextureArray(texarray)
回答方法
- TXI メソッド について:
txi.h:63–130を確認 - Texture クラス について:
texman.h:157–249を確認 - Image 処理 について:
image.h:104–212を確認 - サンプリング/フィルタリング について:
texman.h:104–118のTextureSamplingModeDataを確認 - フォーマット について:
gfxenv_enum.h:121–161を確認 - 共有メモリ について:
shmtexture.hを確認 - Python について:
pyext_gfx.cppとpyext_gfx_image.cppを確認
ライセンス: MIT(寛容ライセンスのため全文を引用しています) · 原本リポジトリ
詳細情報
- 作者
- tweakoz
- リポジトリ
- tweakoz/orkid
- ライセンス
- MIT
- 最終更新
- 2026/5/8
Source: https://github.com/tweakoz/orkid / ライセンス: MIT