「定数バッファ」の版間の差分
Administrator (トーク | 投稿記録) 編集の要約なし |
Administrator (トーク | 投稿記録) 編集の要約なし |
||
| (同じ利用者による、間の8版が非表示) | |||
| 27行目: | 27行目: | ||
ほとんどのプラットフォームで「定数バッファの要素」は「16byteアライメント」となっています。 | ほとんどのプラットフォームで「定数バッファの要素」は「16byteアライメント」となっています。 | ||
構造体のフィールド変数を上から順番に足したものが16バイト単位でなければなりません。 | 構造体のフィールド変数を上から順番に足したものが16バイト単位でなければなりません。 | ||
; 問題ない例 | ; 問題ない例 | ||
| 35行目: | 36行目: | ||
} | } | ||
</source> | </source> | ||
; ダメな例 | ; ダメな例 | ||
| 56行目: | 58行目: | ||
</source> | </source> | ||
=== もっとも確実な解決策 === | |||
もっとも簡単な解決方法は「すべて16バイトの float4 ( vec4 ) を使うこと」です。 | |||
数バイトが無駄だと思っても16バイトのfloat4で代用しましょう。 | |||
定数バッファがバカみたいに巨大化するようなことはまずなく、[[スマートウォッチ]]の[[SoC]]ですら初代[[プレイステーション]]より高性能で高速な今の時代、たった数十バイトで体感速度なんて変わりません。 | |||
その数十バイトであらゆる悩みから解放されます。 | その数十バイトであらゆる悩みから解放されます。 | ||
| 71行目: | 77行目: | ||
[[category: 3DCG]] | [[category: 3DCG]] | ||
[[category: シェーディング言語]] | [[category: シェーディング言語]] | ||
[[category: HLSL]] | |||