ネストされた構造体を使用して、GLSL でポリモーフィズムのようなものをシミュレートしようとしています。
struct Primitve{
Sphere s;
Plane p;
Triangle t;
int type;
};
整数型は、このプリミティブが実際に何であるかを指定します。このようにして、すべてのプリミティブを 1 つの配列に入れることができます。1 つの欠点は、メモリの浪費です。
だから私の質問は、「パックされた」レイアウトタイプについてです。このタイプのシェーダー ストレージ バッファーを作成すると、
layout(packed) buffer PrimitiveBuffer{
Primitive primitives[];
};
このデータのブロックは、まったく使用されていないメンバーにデータを割り当てないことで最適化されますか? ウィキは、パックされたレイアウトに関して次のように述べています。
私はこれを正しく理解していますか、それともアライメントの制限によりパドリングのみを考慮していますか?