Hacktoberfest 2026: los issues que los mantenedores marcaron para octubre, abiertos y aptos para principiantes. Explorar issues de Hacktoberfest

Inconsistensies with the Compute Shader tutorial

Abierto
#501 0 comentarios 0 reacciones 0 asignados Ver en GitHub

Los mantenedores suelen responder en 2 días

Nadie ha tomado este issue todavía.

Evaluación

Dificultad
3/5
Tiempo estimado
1-2 días
Aptitud para principiantes
68/100
Tipo de issue
Documentación
Claridad
Bastante claro
Estado de actividad
Activo
Stack tecnológico
cpp

Línea de trabajo

Compara el tutorial de Compute Shader con las secciones referenciadas de Drawing a Triangle, especialmente Logical device and queues y Loading compute shaders. Revisa los ejemplos de queue, shader-stage, dispatch, createBuffer, descriptor-binding y particle para comprobar su coherencia y detectar definiciones ausentes. Se considerará terminado cuando el tutorial de compute siga el estilo actual de la API e introduzca cada símbolo requerido antes de usarlo.

Escrito por el modelo de indexación a partir del texto del issue.

Descripción

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).

Lenguaje dominante
C++
Estrellas
430
Forks
131
Merge medio
2 d 22 h
PR fusionados (30 d)
7

Preparar el entorno

Primeros pasos

  1. Lee el issue completo y luego la guía de contribución del proyecto.
  2. Comenta en el issue que vas a ocuparte — evita que dos personas hagan lo mismo.
  3. Haz un fork del repositorio y trabaja en una rama.
  4. Abre un pull request que haga referencia al número del issue.

Más de KhronosGroup/Vulkan-Tutorial

Todos los issues de KhronosGroup/Vulkan-Tutorial

Issues similares

Más issues de C++

Recibe los nuevos issues en tu correo

Un resumen breve de issues de GitHub para principiantes.