compute-shader

    0热度

    1回答

    我正在用HLSL中的计算着色器编写纹理。 创作纹理的: D3D11_TEXTURE2D_DESC textureDesc; ZeroMemory(&textureDesc, sizeof(textureDesc)); textureDesc.Width = 512; textureDesc.Height = 512; textureDesc.MipLevels = 1; textureD

    1热度

    1回答

    给定一个计算着色器,我已经将每个维度的局部大小设置为值x,y和z,有什么办法让我从C++代码中访问这些信息?即, //Pseudo Code c++ int size[3] x = get local sizes from linked compute shader print(x); //GLSL Code layout (local_size_x = a number, local

    0热度

    1回答

    我正在做计算着色器的一些工作,并且我注意到如果两次调用使用imageStore写入到纹理上的同一位置,当纹理从访问以来呈现时,您会得到闪烁效果速度是不能保证的,所以有时候一个调用会最后到达,有时候是另一个。我希望我的最终颜色值是红色值最高的值。有没有办法让我确定在着色器中? 我觉得有一些混乱,所以我只是给一些更多的信息。我与我的CPU为GL_UNSIGNED_BYTE开往数据的工作,我就用 lay

    0热度

    1回答

    我的GPU是NVIDIA GeForce GT440,其计算能力版本是2.x. NVIDIA的官方CUDA_C_Programming_Guide指出 限制1.每块= 1024 限制2.每多居民的最大线程数的最大线程数= 1536 但是,有两个OpenGL的计算机着色器实现限制是 极限3. GL_MAX_COMPUTE_WORK_GROUP_INVOCATIONS = 1536 我的问题是 1.为

    1热度

    1回答

    我使用ARB_sparse_texture extension呈现实时立体效果,使用非常大的虚拟3D纹理。 而且我可以找到关于它如何与自动纹理贴图代(glGenerateMipmap())进行交互的任何信息。 我正确地用数据填充纹理的0级,并正确提交使用的块。一切运作良好,但我也需要这种纹理的mipmap链,我不知道如何自动完成它(我发现它在spec for ARB_sparse_texture或

    -1热度

    1回答

    我正在尝试在我的计算着色器中使用for循环填充image3D。 以下三行的代码是有效的,当外部for循环中,由于程序将运行并给出预期结果: position = ivec3(gl_GlobalInvocationID.xyz); colour = vec4(0.5, 0.0, 0.0, 1.0); imageStore(visualTexture, position, colo

    0热度

    1回答

    我有一个计算着色器,它将一些流体模拟为粒子。粒子从缓冲区读取。每个粒子在一个线程中处理。在执行线程期间,一个粒子移动其uv位置并添加到名为Water的无人机的像素。因此,每个线程都会在纹理上留下其移动轨迹。 _watTx[texID] += watAddition * cellArea.x; 的问题是有很多颗粒的移动和最多倍数存在于同一texID。由于每次运行模拟的结果都略有不同,似乎存在竞争

    0热度

    1回答

    我想在计算着色器中使用灰度纹理。对于rgba8它工作正常,但是当我宣布 layout(binding=1, r8) uniform mediump writeonly image2D resultImage; 它产生以下错误: 0:25: S0059: Expected layout qualifier identifier, got 'r8' 是r8不允许图像或者是我的平台不支持r8?

    1热度

    2回答

    我是图形编程和Vulkan的新手。 我知道我们需要将缓冲区绑定到描述符集,但是我想知道是否需要为每个缓冲区设置一个新的描述符集,或者我可以将descriptorSet集绑定2个或更多个缓冲区? 如果是的话,这是什么经验法则?

    1热度

    1回答

    我目前正在使用OpenGl中的计算着色器,我的目标是从一个纹理渲染到另一个纹理上进行一些修改。但是,它似乎并不像我的计算着色器对纹理有任何影响。 创建计算着色器后,我做了以下 //Use the compute shader program (*shaderPtr).useProgram(); //Get the uniform location for a uniform called "