// Define material properties
PushConstantBlock pushConstants{};
pushConstants.baseColorFactor = {1.0f, 1.0f, 1.0f, 1.0f};
pushConstants.metallicFactor = 1.0f;
pushConstants.roughnessFactor = 0.5f;
pushConstants.baseColorTextureSet = 0;
pushConstants.physicalDescriptorTextureSet = 1;
pushConstants.normalTextureSet = 2;
pushConstants.occlusionTextureSet = 3;
pushConstants.emissiveTextureSet = 4;
pushConstants.alphaMask = 0.0f;
pushConstants.alphaMaskCutoff = 0.5f;
// Push constants to shader using vk::raii
commandBuffer.pushConstants(
*pipelineLayout,
vk::ShaderStageFlagBits::eFragment, // Which shader stages will receive the data
0, // Offset
sizeof(PushConstantBlock), // Size
&pushConstants // Data
);