Module bedrock::resources
[−]
[src]
Vulkan Resources
(以下メモ)
バッファの作成
BufferDesc
で作成する
let buffer = BufferDesc::new(4 * 4 * 3, BufferUsage::VERTEX_BUFFER.transfer_dest()).crete(&device)?;
new
からcreate
までにメソッドチェーンを用いて以下のようなバッファの詳細を指定できる。
sparse_binding_opt
: SparseBinding時の許可される挙動を指定する。デフォルトでは"なし"- [
BufferSparseBinding::Bound
]でSparseBindingによってメモリにバインドできることを示す - [
BufferSparseBinding::Residency
]で部分的にメモリにバインドできることを示す - [
BufferSparseBinding::Aliased
]で、バインド先のメモリ範囲が他のバッファに同時に使われる可能性を示す - [
BufferSparseBinding::Both
]はResidency
とAliased
の両方を示す
- [
sharing_queue_families
: 複数のキューでアイテムを共有する際に、共有したいキューファミリの番号を指定する。デフォルトは空(占有)
イメージの作成
ImageDesc
で作成する
let image = ImageDesc::new(&Extent2D(128, 128), VK_FORMAT_R8G8B8A8_UNORM, ImageUsage::SAMPLED.color_attachment(), ImageLayout::General) .create(&device)?;
ImageDesc::new
の第一引数に
Extent1D
を指定すると1DテクスチャExtent2D
を指定すると2DテクスチャExtent3D
を指定すると3Dテクスチャ
を生成するようになる。
new
からcreate
までにメソッドチェーンを用いて以下のようなイメージの詳細を指定できる。
sample_counts
: イメージの要素ごとのサンプル数を2^nの値(1, 2, 4, 8, 16, 32, 64)で指定する。デフォルトは1。 以下の条件を一つでも満たす場合は1を設定する必要がある。- 最適タイリング(
VK_IMAGE_TILING_OPTIMAL
)が使われていない(use_linear_tiling
を併用する場合) - 2Dテクスチャではない(
new
の第一引数がExtent2D
でない場合) - キューブテクスチャである(
flags
にImageFlags::CUBE_COMPATIBLE
を指定している場合) - 指定したフォーマットがカラーアタッチメントもしくは深度/ステンシルアタッチメントとしての利用に対応していない場合
- RGBAフォーマットやDSフォーマットを指定している分には気にする必要はない
- 最適タイリング(
use_linear_tiling
: イメージデータのメモリ上での配列を線形に強制する(デフォルトではデバイス最適な並びを使うようになっている)- ディスクから読み込んだピクセルデータなどを
map
して流し込む場合はこれが必要
- ディスクから読み込んだピクセルデータなどを
array_layers
: 配列イメージの要素数を指定する。デフォルトは1(配列ではない)mip_levels
: ミップマップの最大縮小レベルを指定する。デフォルトは1(ミップマップを使用しない)sharing_queue_families
: 複数のキューでアイテムを共有する際に、共有したいキューファミリの番号を指定する。デフォルトは空(占有)flags
:ImageFlags
を指定する。デフォルトでは"なし"
BufferUsage
の種類
BufferUsage
はメソッドチェーンを利用してビットフラグを指定する。メソッド名は定数名をすべて小文字にしたもの。
BufferUsage::VERTEX_BUFFER.transfer_dest()
入力/利用形態系
VERTEX_BUFFER
: 頂点バッファ として頂点入力時に使用できるINDEX_BUFFER
: インデックスバッファ として頂点入力時に使用できるUNIFORM_BUFFER
: 定数バッファ としてデスクリプタ入力時に使用できるSTORAGE_BUFFER
: ストレージバッファ としてデスクリプタ入力時に使用できる- 定数バッファより大容量
UNIFORM_TEXEL_BUFFER
: 1Dのイメージアイテムとして適用可能な定数バッファとしてデスクリプタ入力時に使用できるSTORAGE_TEXEL_BUFFER
: 1Dのイメージアイテムとして適用可能なストレージバッファとしてデスクリプタ入力時に使用できるINDIRECT_BUFFER
: 間接実行コマンドの 引数バッファ として使用できる
転送系
TRANSFER_SRC
: 転送コマンドでソースアイテムとして指定可能であることを示すTRANSFER_DEST
: 転送コマンドで対象アイテムとして指定可能であることを示す- このバッファに対してクリア、値埋めコマンドを適用したい場合もこれを指定する必要がある
ImageUsage
の種類
ImageUsage
もメソッドチェーンを利用してビットフラグを指定する。
ImageUsage::SAMPLED.color_attachment()
シェーダ入力系
SAMPLED
: シェーダによってサンプル可能であることを示す- シェーダで テクスチャ として使用できるようにする場合はこれ
INPUT_ATTACHMENT
: シェーダによって入力アタッチメントとしての扱いを受けることができる- シェーダで入力アタッチメントとして指定したい場合(中間バッファなど)はこれ
STORAGE
: シェーダのイメージ入力として使用可能であることを示すSAMPLED
との違いは、こちらはサンプラーによるサンプリングを使用できない点
出力系
COLOR_ATTACHMENT
: [Framebuffer
]の出力(カラーもしくはマルチサンプル解決)アイテムとして利用可能であることを示す- 要するに、 コマンドで描画した結果を受け取る ことができる
- プロシージャルテクスチャの作成やオフスクリーンレンダリングの出力として使いたい場合はこれ
DEPTH_STENCIL_ATTACHMENT
: [Framebuffer
]での深度/ステンシルバッファとして利用可能であることを示す- オフスクリーンレンダリングなどで深度バッファが必要な場合はこれ
転送系
TRANSFER_SRC
: 転送コマンドでソースアイテムとして指定可能であることを示す- このテクスチャが何らかのコピー元になる場合はこれ
TRANSFER_DEST
: 転送コマンドで対象アイテムとして指定可能であることを示す- このテクスチャが何らかのコピー先になる場合はこれ
- このテクスチャに対してクリア、値埋めコマンドを適用したい場合はこれ
その他
TRANSIENT_ATTACHMENT
: 色、深度/ステンシル、マルチサンプル解決、および入力アイテムとして指定可能であることを示す- テクスチャが
VK_MEMORY_PROPERTY_LAZILY_ALLOCATED_BIT
が指定された[DeviceMemory
]にバインドされることを想定している - パス間の中間バッファなどで、一時的に確保される必要があるバッファに指定するとメモリ使用量が少なくて済むかもしれない?
- テクスチャが
Structs
AspectMask |
Bitmask specifying which aspects of an image are included in a view |
Buffer |
Opaque handle to a buffer object(constructed via |
BufferDesc |
Builder structure specifying the parameters of a newly created buffer object |
BufferUsage |
Bitmask specifying allowed usage of a buffer |
BufferView |
Opaque handle to a buffer view object |
ComponentMapping |
Structure specifying a color component mapping |
DeviceMemory |
Opaque handle to a device memory object |
Image |
Opaque handle to a image object(constructed via |
ImageDesc |
Builder structure specifying the parameters of a newly created image object |
ImageFlags |
Bitmask specifying additional parameters of an image |
ImageSubresourceRange |
Structure specifying a image subresource range |
ImageUsage |
Bitmask specifying intended usage of an image |
ImageView |
Opaque handle to a image view object |
MappedMemoryRange |
Specifies the block of mapped memory in a |
Sampler |
Opaque handle to a sampler object |
SamplerBuilder |
Builder object for constructing the sampler object |
Enums
AddressingMode |
Specify behavior of sampling with texture coordinates outside an image |
BorderColor |
Specify border color used for texture lookups |
BufferSparseBinding |
Bitset specifying additional parameters of a buffer |
ComponentSwizzle |
Specify how a component is swizzled |
FilterMode |
Specify filter used for texture lookups |
ImageLayout |
Layouts of image and image subresources |
MipmapFilterMode |
Specify mipmap mode used for texture lookups |
Traits
ImageSize |
Image Dimension by corresponding extent type |