メインコンテンツまでスキップ

TSMPCodec

名前空間: K13A.TSMP

コーデック ハンドラーの基本タイプ。

コーデック ハンドラーは、エンコーダーにペイロード バイトをピクセルに書き込む方法を指示し、デコーダーにペイロード バイトを回復するためにどのマテリアル/オプションを使用する必要があるかを指示します。

パブリックフィールド

分野タイプ使用
codecIdushortフレームヘッダーに書き込まれる安定したコーデック ID。
displayNamestring編集者向けの名前。
codecOptionBytesbyte[]フレームヘッダーからコピーされたデコーダ側のオプションバイト。
selectedDecodeMaterialMaterialバイトデコードに使用されるマテリアル。
payloadStartRowintデコード用の最初のペイロード行。
payloadBlockCountintデコードするペイロード ブロックの数。
byteCountint要求されたペイロードのバイト数。

ランタイム エンコーダーのクエリ結果フィールドは、Udon イベント ブリッジで使用するためにパブリックです。これらは OnTSMPEncoderQuery()OnTSMPEncoderWritePayload() によって割り当てられます。

ランタイムエンコードメソッド

方法使用
GetEncoderSymbolMode()フレームヘッダーのシンボルモードを返します。
GetEncoderPayloadStartRow(width, blockSize)最初のペイロード行を返します。
GetEncoderPayloadCapacityBytes(width, height, blockSize)ペイロードのバイト容量を返します。
GetEncoderCodecOptionByteCount()オプションのバイト数を返します (最大 5)。
GetEncoderCodecOptionByte(index)1 つのオプション バイトを返します。
WriteEncoderPayload(...)ペイロード バイトをエンコーダ ピクセルに書き込みます。
ApplyDecodeOptions()ヘッダー/オプションからデコーダーの状態を適用します。

コーデックを VRChat 内で実行する必要がある場合、これらのメソッドは UdonSharp と互換性がある必要があります。

ヘルパー メソッド

方法使用
ReadCodecOptionByte(index, fallback)フォールバックを使用して 1 つのコーデック オプションを読み取ります。
ReadCodecOptionFlag(index, fallback)1 つのオプションをブール値として読み取ります。
GetEncoderActiveWidthBlocks(width, blockSize)書き込み可能なブロック幅を計算します。
GetEncoderActiveHeightBlocks(height, blockSize)書き込み可能なブロックの高さを計算します。
WriteEncoderColorBlockAtIndex(...)1 つのエンコードされたブロックを色で塗りつぶします。
ReadEncoderBits(...)ペイロードバイトから任意のビットを読み取ります。

エディター/ネイティブ メソッド

COMPILER_UDONSHARP 以外でも利用可能:

方法使用
SymbolModeネイティブ シンボル モードのプロパティ。
TryWriteFrame(...)完全なフレームを Texture2D に書き込みます。
GetCodecOptionBytes()ネイティブ コーデック オプションのバイト配列。
DecodeMaterialCountデコードマテリアルの数。
GetDecodeMaterial(index)マテリアル ルックアップをデコードします。
DebugMaterialCountデバッグマテリアルの数。
GetDebugMaterial(index)デバッグマテリアルのルックアップ。
ConfigureMaterials(context)デコード/デバッグマテリアルを設定します。

うどんイベントブリッジ

TSMPCodec は、エンコーダーによって使用されるパブリック イベント メソッドを公開します。

方法目的
OnTSMPEncoderQuery()エンコーダのクエリ結果フィールドに値を入力します。
OnTSMPEncoderWritePayload()WriteEncoderPayload を呼び出し、結果を保存します。

エンコーダはこのブリッジを使用するため、コーデック クラスをハードコーディングせずにオプションのコーデック パッケージを呼び出すことができます。