「定数バッファ」の版間の差分

編集の要約なし
編集の要約なし
 
(同じ利用者による、間の8版が非表示)
27行目: 27行目:
ほとんどのプラットフォームで「定数バッファの要素」は「16byteアライメント」となっています。
ほとんどのプラットフォームで「定数バッファの要素」は「16byteアライメント」となっています。
構造体のフィールド変数を上から順番に足したものが16バイト単位でなければなりません。
構造体のフィールド変数を上から順番に足したものが16バイト単位でなければなりません。


; 問題ない例
; 問題ない例
35行目: 36行目:
}
}
</source>
</source>


; ダメな例
; ダメな例
56行目: 58行目:
</source>
</source>


; もっとも確実な解決策
 
もっとも簡単な解決方法は「すべて16バイトのfloat4(vec4)を使うこと」です。
=== もっとも確実な解決策 ===
無駄だと思っても16バイトのVector4で代用しましょう。
もっとも簡単な解決方法は「すべて16バイトの float4 ( vec4 ) を使うこと」です。
定数バッファがバカみたいに巨大化するようなことはまずないので、今の高速なPCだとたった数十バイトで体感速度なんて変わりません。
 
数バイトが無駄だと思っても16バイトのfloat4で代用しましょう。
 
定数バッファがバカみたいに巨大化するようなことはまずなく、[[スマートウォッチ]]の[[SoC]]ですら初代[[プレイステーション]]より高性能で高速な今の時代、たった数十バイトで体感速度なんて変わりません。
 
その数十バイトであらゆる悩みから解放されます。
その数十バイトであらゆる悩みから解放されます。


71行目: 77行目:
[[category: 3DCG]]
[[category: 3DCG]]
[[category: シェーディング言語]]
[[category: シェーディング言語]]
[[category: HLSL]]