Acabei de escrever o código para meus objetos de textura e amostra, mas agora não sei como implementar os descritores separados em GLSL.
Acessando um amostrador de imagens combinado no conjunto de descritores 0, a ligação 0 seria feita usando:
layout(set = 0, binding = 0) uniform sampler2D texSampler;
O fragment shader então amostraria a imagem usando sampler2D
a texture
função:
layout(location = 0) in vec2 fragTexCoord;
layout(location = 0) out vec4 outColor;
void main() {
outColor = texture(texSampler, fragTexCoord);
}
Pelo que entendi, um conjunto de descritores (ou ligação) é criado para um amostrador usando VK_DESCRIPTOR_TYPE_SAMPLER
e outro é criado para uma imagem amostrada com o tipo VK_DESCRIPTOR_TYPE_SAMPLED_IMAGE
. No entanto, não sei qual sintaxe seria usada para acessar os descritores separados.
layout(set = 0, binding = 0) uniform /* idk what type it is */ sampler
layout(set = 0, binding = 1) uniform /* idk */ sampledImage
// alternatively...
layout(set = 0, binding = 0) uniform /* idk */ sampler
layout(set = 1, binding = 0) uniform /* idk */ sampledImage
Os samplers e imagens são armazenados em diferentes conjuntos/ligações conforme especificado ao criar os conjuntos de descritores?
Se sampler2D
for usado para amostras de imagens combinadas com o descritor type VK_DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER
, qual será a sintaxe usada para cada um dos tipos separados?
VK_DESCRIPTOR_TYPE_SAMPLER
, VK_DESCRIPTOR_TYPE_SAMPLED_IMAGE
, VK_DESCRIPTOR_TYPE_STORAGE_IMAGE
, VK_DESCRIPTOR_TYPE_UNIFORM_TEXEL_BUFFER
, e VK_DESCRIPTOR_TYPE_STORAGE_TEXEL_BUFFER
?
Como esses objetos separados seriam chamados main
para definir o outColor
valor?