示例#1
0
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),
                               ())
示例#3
0
        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, ), ())
示例#5
0
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, ), ())
示例#6
0
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), ())