Hacktoberfest 2026: as issues que os mantenedores marcaram para outubro, abertas e boas para iniciantes. Ver issues do Hacktoberfest

Inconsistensies with the Compute Shader tutorial

Aberta
#501 0 comentários 0 reações 0 responsáveis Ver no GitHub

Ninguém assumiu esta issue ainda.

Avaliação

Dificuldade
3/5
Tempo estimado
1-2 dias
Facilidade para iniciantes
68/100
Tipo de issue
Documentação
Clareza
Razoavelmente clara
Status de atividade
Ativa
Stack de tecnologia
cpp

Direção de pesquisa

Compare o tutorial de Compute Shader com as seções referenciadas de Drawing a Triangle, especialmente Logical device and queues e Loading compute shaders. Revise os exemplos de queue, shader-stage, dispatch, createBuffer, descriptor-binding e particle quanto à consistência e à ausência de definições. A tarefa estará concluída quando o tutorial de compute seguir o estilo atual da API e introduzir cada símbolo necessário antes de usá-lo.

Escrita pelo modelo de indexação a partir do texto da issue.

Descrição

I've been trying to follow along with the compute shader tutorial after doing everything up till this tutorial, and it seems like the compute shader section is based off an older version of the tutorial, as there are multiple inconsistencies with how the code is structured. These are a couple of the issues I've found:

In Drawing a Triangle / Setup / Logical device and queues, the graphics queue is created like so:

graphicsQueue = vk::raii::Queue(device, graphicsIndex, 0);

In the compute shader section, the compute queue is created like so:

computeQueue = std::make_unique<vk::raii::Queue>( *device, graphicsAndComputeIndex, 0 );

The "Loading compute shaders" section states to load in the shader with

vk::PipelineShaderStageCreateInfo computeShaderStageInfo({}, vk::ShaderStageFlagBits::eCompute, shaderModule, "compMain");

but this gives errors with constructor parameter mismatches. Seems like the fix is to create the computer shader stage in the same way the vertex/fragment shader stages are created in the other tutorial section:

vk::PipelineShaderStageCreateInfo computeShaderStageInfo {
	.stage = vk::ShaderStageFlagBits::eCompute,
	.module = shaderModule,
	.pName = "compMain"
};

When dispatching work, the tutorial says

Now it’s time to actually tell the GPU to do some compute. This is done by calling computeCommandBuffers[frameIndex]→dispatch inside a command buffer. While not perfectly true, a dispatch is for compute as a draw call like commandBuffers[frameIndex]→draw is for graphics. This dispatches a given number of compute work items in at max. three dimensions.

yet commandBuffers[frameIndex]→draw isn't used before in the tutorial. There are a few others (e.g the createBuffer function having a different prototype than the one in earlier sections, the std::array layoutBindings also needing to be created with structs, instead of vk::DescriptorSetLayoutBinding, etc.)

The computer shader tutorial also assume a lot more than the previous sections. When creating the compute queue, it assigns to a computeQueue variable that hasn't appeared anywhere before up till this point. A few sections later, in the loop where the particle positions are initialized, it creates std::vector<Particle> particles(PARTICLE_COUNT);. This is the first time PARTICLE_COUNT is mentioned, and the first time the C++ Particle struct is mentioned. Neither are defined or mentioned anywhere after (though the Particle struct is added onto later).

Linguagem predominante
C++
Estrelas
434
Forks
135
Merge médio
9d 16h
PRs com merge (30d)
4

Preparar o ambiente

Primeiros passos

  1. Leia a issue inteira e depois o guia de contribuição do projeto.
  2. Comente na issue dizendo que vai assumir — evita que duas pessoas façam o mesmo trabalho.
  3. Faça um fork do repositório e trabalhe em uma branch.
  4. Abra um pull request que referencie o número da issue.

Mais de KhronosGroup/Vulkan-Tutorial

Todas as issues de KhronosGroup/Vulkan-Tutorial

Issues semelhantes

Mais issues de C++

Receba novas issues na sua caixa de entrada

Um resumo curto de issues do GitHub para quem está começando.