def write_descriptor_sets(): ubo_buffer_info = vk.DescriptorBufferInfo(buffer=uniforms_buffer, offset=0, range=sizeof(ubo_data_type)) light_buffer_info = vk.DescriptorBufferInfo(buffer=uniforms_buffer, offset=sizeof(ubo_data_type), range=sizeof(light_data_type)) mat_buffer_info = vk.DescriptorBufferInfo(buffer=uniforms_buffer, offset=light_buffer_info.offset + light_buffer_info.range, range=sizeof(mat_data_type)) write_set_ubo = hvk.write_descriptor_set( dst_set=descriptor_set, dst_binding=0, descriptor_type=vk.DESCRIPTOR_TYPE_UNIFORM_BUFFER, buffer_info=(ubo_buffer_info, )) write_set_light = hvk.write_descriptor_set( dst_set=descriptor_set, dst_binding=1, descriptor_type=vk.DESCRIPTOR_TYPE_UNIFORM_BUFFER, buffer_info=(light_buffer_info, )) write_set_mat = hvk.write_descriptor_set( dst_set=descriptor_set, dst_binding=2, descriptor_type=vk.DESCRIPTOR_TYPE_UNIFORM_BUFFER, buffer_info=(mat_buffer_info, )) hvk.update_descriptor_sets(api, device, (write_set_ubo, write_set_light, write_set_mat), ())
def write_descriptor_sets(): ubo_buffer_info = vk.DescriptorBufferInfo(buffer=uniforms_buffer, offset=0, range=sizeof(ubo_data_type)) light_buffer_info = vk.DescriptorBufferInfo(buffer=uniforms_buffer, offset=sizeof(ubo_data_type), range=sizeof(light_data_type)) sampler_image_info = vk.DescriptorImageInfo( sampler=texture_sampler, image_view=texture_view, image_layout=texture_image_layout) write_set_ubo = hvk.write_descriptor_set( dst_set=descriptor_set, dst_binding=0, descriptor_type=vk.DESCRIPTOR_TYPE_UNIFORM_BUFFER, buffer_info=(ubo_buffer_info, )) write_set_light = hvk.write_descriptor_set( dst_set=descriptor_set, dst_binding=1, descriptor_type=vk.DESCRIPTOR_TYPE_UNIFORM_BUFFER, buffer_info=(light_buffer_info, )) write_sampler = hvk.write_descriptor_set( dst_set=descriptor_set, dst_binding=2, descriptor_type=vk.DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER, image_info=(sampler_image_info, )) hvk.update_descriptor_sets(api, device, (write_set_ubo, write_set_light, write_sampler), ())
def generate_write_set(obj, wst, descriptor_set): nonlocal uniform_buffer, uniform_offset name, dtype, drange, binding = wst['name'], wst[ 'descriptor_type'], wst['range'], wst['binding'] if dtype == vk.DESCRIPTOR_TYPE_UNIFORM_BUFFER: buffer_info = vk.DescriptorBufferInfo(buffer=uniform_buffer, offset=uniform_offset, range=drange) write_set = hvk.write_descriptor_set( dst_set=descriptor_set, dst_binding=binding, descriptor_type=dtype, buffer_info=(buffer_info, )) uniform_offset += drange elif dtype in (vk.DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER, vk.DESCRIPTOR_TYPE_STORAGE_IMAGE): image_id, view_name, sampler_id = getattr(obj.uniforms, name) data_image = data_images[image_id] data_sampler = data_samplers[sampler_id] data_view = data_image.views.get(view_name, None) if data_view is None: raise ValueError( f"No view named \"{view_name}\" for image \"{data_image.image.name}\"" ) image_info = vk.DescriptorImageInfo( sampler=data_sampler.sampler_handle, image_view=data_view, image_layout=data_image.layout) write_set = hvk.write_descriptor_set(dst_set=descriptor_set, dst_binding=binding, descriptor_type=dtype, image_info=(image_info, )) # Clear the accessed uniforms names for images because we don't actually need to mark them as updated obj.uniforms.updated_member_names.remove(name) else: raise ValueError(f"Unknown descriptor type: {dtype}") return write_set
def write_descriptor_sets(): color_buffer_info = vk.DescriptorBufferInfo(buffer=color_buffer, offset=0, range=vk.WHOLE_SIZE) write_set = hvk.write_descriptor_set( dst_set=descriptor_set, dst_binding=0, descriptor_type=vk.DESCRIPTOR_TYPE_UNIFORM_BUFFER, buffer_info=(color_buffer_info, )) hvk.update_descriptor_sets(api, device, (write_set, ), ())
def write_compute_descriptor_sets(): noise_info = vk.DescriptorImageInfo(sampler=noise_sampler, image_view=noise_view, image_layout=vk.IMAGE_LAYOUT_GENERAL) write_set_ubo = hvk.write_descriptor_set( dst_set=compute_descriptor_set, dst_binding=0, descriptor_type=vk.DESCRIPTOR_TYPE_STORAGE_IMAGE, image_info=(noise_info, )) hvk.update_descriptor_sets(api, device, (write_set_ubo, ), ())
def write_descriptor_sets(): ubo_buffer_info = vk.DescriptorBufferInfo(buffer=uniforms_buffer, offset=0, range=sizeof(ubo_data_type)) sampler_image_info = vk.DescriptorImageInfo( sampler=noise_sampler, image_view=noise_view, image_layout=vk.IMAGE_LAYOUT_SHADER_READ_ONLY_OPTIMAL) write_set_ubo = hvk.write_descriptor_set( dst_set=descriptor_set, dst_binding=0, descriptor_type=vk.DESCRIPTOR_TYPE_UNIFORM_BUFFER, buffer_info=(ubo_buffer_info, )) write_sampler = hvk.write_descriptor_set( dst_set=descriptor_set, dst_binding=1, descriptor_type=vk.DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER, image_info=(sampler_image_info, )) hvk.update_descriptor_sets(api, device, (write_set_ubo, write_sampler), ())