compute-shader相关内容

我可以将R8G8B8A8放在UBO中,并将其用作ve4吗?

我尝试优化工作的计算着色器。它的目的是创建一个图像:找到好的颜色(使用一个小调色板),然后调用imageStore(image, ivec2, vec4)。 颜色在统一缓冲区的uint数组中进行索引。 此UBO中的一种颜色被包装在一个Uint内,如{0-255,0-255,0-255,0-255}。 代码如下: struct Entry { *some other da ..
发布时间:2022-08-04 14:01:43 其他开发

带字节的着色器存储缓冲区对象

我正在使用一个计算着色器,其中的输出将写入SSBO。现在,此缓冲区的使用者是CUDA,它希望它包含无符号字节。我目前无法找到如何在SSB中为每个索引写入一个字节的方法。使用纹理或图像,规范化浮点到无符号字节的转换由OpenGL处理。例如,我可以附加内部格式为R8的纹理,并按条目存储字节。但是使用SSBO不可能做到这一点。是吗 实际上,我希望能够做到以下几点: 计算着色器: #ve ..
发布时间:2022-03-01 17:30:51 其他开发

一个片段可以访问 WebGL GLSL 中的所有纹理像素值吗?(不仅仅是它自己的 TexCoord)

假设我正在使用 WebGL 和 GLSL 制作计算着色器. 在这个着色器中,每个片段(或像素)都想查看纹理上的每个像素,然后决定它自己的颜色. 通常一个片段从几个纹理中采样它提供的纹理坐标(UV 值),但我想有效地从单个纹理中为单个片段采样所有 UV 值. 这可能吗? 解决方案 编辑:我能够从 128x128 纹理中的每个像素进行采样,但移动到 256x256 会导致 C ..
发布时间:2022-01-09 09:45:55 其他开发

用于并行求和的 Vulkan 计算着色器

我想实现这个算法https://dournac.org/info/gpu_sum_reduction在 Vulkan 的计算着色器中.在 OpenCL 中,这很容易,因为我可以明确声明哪些缓冲区是 __local,哪些是 __global.不幸的是,我似乎无法找到Vulkan 中的任何此类机制.请有经验的人给我举个例子,如何让这些东西在 Vulkan 中工作? 解决方案 Vulkan 中的 ..
发布时间:2021-09-20 20:32:34 其他开发

如何测量计算着色器的时间性能?

我需要测量计算着色器的时间.但这当然不是小事.从 OpenGL Wiki - Performance 我得到,在前后使用 glFinish() 很有用着色器调用.但他们也说使用它并不是那么好.是否有可能测量我的着色器的时间?有没有可能测量计算着色器的时间? 我的代码看起来像这样: renderloop(){//(1)//(2)if(updateFunction)//在开始时只执行一次{// ..
发布时间:2021-06-12 20:05:58 C/C++开发

OpenCL和OpenGL的计算着色器之间有什么区别?

我知道OpenCL可以控制GPU的内存架构,因此可以实现更好的优化,但是,撇开这一点,我们可以使用Compute Shaders进行矢量运算(加法,乘法,求逆等)吗? 解决方案 与其他OpenGL着色器类型相比,计算着色器与计算机图形不直接相关,并且提供了与CUDA类似的更直接的底层硬件抽象和OpenCL.它提供可自定义的工作组大小,共享内存,组内同步以及CUDA和OpenCL已知和喜爱的 ..
发布时间:2021-05-13 18:38:47 其他开发

使用计算着色器从GLSL中的一个周末进行光线跟踪的非递归ray_color函数

我正在尝试使用opengl 4.3中的计算着色器编写实时光线跟踪器.我知道这是一个相当受欢迎的问题.我已经检查了此和,但是那里提供的体系结构与我的用例并不完全对应. 我只是想转换P. Shirley的书ray_color 函数 ="nofollow noreferrer">此处. 提到的 ray_color 函数: color ray_color(const ray&r,const h ..
发布时间:2021-05-11 19:05:32 其他开发

计算着色器共享内存包含工件

我一直在尝试编写通用的计算着色器高斯模糊实现. 它基本上可以工作,但是它包含的伪像会在场景静止的情况下改变每一帧.我花了过去的几个小时来调试它.我已经尽力确保不超出范围,展开所有循环,用常量替换制服,但是工件仍然存在. 我已经在3种不同的机器/GPU(2个nvidia,1个intel)上使用工件对原始代码进行了测试,它们均产生相同的结果.通过使用普通C ++代码向前和向后执行的工作组来 ..
发布时间:2021-05-11 19:05:00 其他开发

将SSBO绑定到片段着色器

我有一个SSBO,它存储屏幕上每个像素的vec4颜色值,并在主循环之前由计算着色器预先填充这些值. 我现在正在尝试将这些数据显示在屏幕上,我想这涉及使用片段着色器(尽管如果您知道一种更好的方法,我欢迎您提出建议) 因此,我试图将缓冲区或至少其中的数据获取到片段着色器,以便可以将每个片段的颜色设置为缓冲区中的相应值,但是找不到任何方法? 有人告诉我可以将SSBO绑定到片段着色器,但 ..
发布时间:2021-05-09 19:25:03 其他开发

在Vulkan中并行执行计算着色器?

我有几个计算着色器(我们称它们为compute1,compute2等),它们具有多个输入绑定(在着色器代码中定义为layout (...) readonly buffer)和多个输出绑定(定义为layout (...) writeonly buffer).我将带有数据的缓冲区绑定到它们的描述符集,然后尝试并行执行这些着色器 . 我尝试过的事情: vkQueueSubmit(),其中Vk ..
发布时间:2020-11-16 02:12:43 C/C++开发

DirectX 11计算着色器,用于光线/网格相交

我最近将DirectX 9应用程序转换为DirectX 11,该应用程序使用D3DXIntersect查找射线/网格交点到DirectX11。由于D3DXIntersect在DX11中不可用,因此我编写了自己的代码来查找交点,该交点仅遍历了所有三角形。对网格进行测试,并跟踪最接近原点的点。这是在CPU端完成的,可以很好地通过GUI进行拾取,但是我有应用程序的另一部分,它基于几种不同的观点从现有的网 ..
发布时间:2020-10-22 04:08:39 其他开发

OpenGL计算着色器-奇怪的结果

我正在尝试实现用于图像处理的多遍计算着色器。 每遍都有输入图像和输出图像。 下一遍的输入图像是前一个的输出图像。 这是我第一次在OpenGL中使用计算着色器,因此可能存在一些问题与我的设置。 我使用OpenCV的Mat作为读取/复制操作的容器。 代码的某些部分与问题无关,因此我不包括在内。其中一些部分包括加载图像或初始化上下文。 初始化: //纹理初始化 glGe ..
发布时间:2020-09-27 00:06:06 C/C++开发

DirectX Compute Shaders是否在共享内存中支持2D阵列?

我想在DirectX Compute Shader中使用groupshared内存以减少全局内存带宽并希望提高性能.我的输入数据是Texture2D,我可以使用2D索引访问它,如下所示: Input[threadID.xy] 我想要一个共享内存的2D数组来缓存部分输入数据,所以我尝试了显而易见的方法: groupshared float SharedInput[32, 32]; ..
发布时间:2020-07-21 19:34:08 其他开发

如何使用顶点缓冲区将计算着色器结果馈入不包含顶点着色器的顶点中?

在详细介绍问题之前,我先概述一下问题: 我使用RWStructuredBuffers存储我的计算着色器(CS)的输出.由于无法从RWStructuredBuffers读取顶点和像素着色器,因此我将StructuredBuffer映射到同一插槽(u0/t0)和(u4/t4): cbuffer cbWorld : register (b1) { float4x4 worldVie ..

是否有DirectX准则用于在绘制调用之间绑定和解除绑定资源?

所有DirectX书籍和教程都强烈建议将绘图调用之间的资源分配减至最少 –但我找不到任何能使细节更多的指南.回顾网络上的许多示例代码,我得出的结论是,程序员在此主题上的编码原理完全不同.有些甚至设置和取消设置 VS/PS VS/PS ResourceViews RasterizerStage DepthStencilState PrimitiveTopology ... 每次抽奖之 ..
发布时间:2020-07-03 19:11:28 其他开发

在DirectX 11中通过一遍渲染为多个纹理

我正在尝试使用C ++ Directx 11 SDK一次渲染到两个纹理.我希望一个纹理包含结果图像每个像素的颜色(渲染3D场景时通常在屏幕上看到的颜色),另一个纹理包含每个像素和深度的法线(法线3个浮点,1个浮点)深度).现在,我能想到的是创建两个渲染目标,并将第一遍渲染为颜色,第二遍将法线和深度分别传递给每个渲染目标.但是,这似乎很浪费时间,因为我可以在第一遍中获得每个像素的颜色,法线和深度的信 ..

D3D12使用后缓冲表面作为无序访问视图(UAV)

我想为学校项目制作一个简单的raytracer,假设应该使用计算着色器来阴影三角形或其他一些图元. 为此,我想直接在计算着色器中写入backbuffer-surface,然后直接呈现结果.我确定可以在DX11中实现,尽管我似乎无法使其在DX12中正常工作. 我无法收集到太多有关此的信息,但是我发现 是否有任何方法可以实现raytracer,而无需写入单独的纹理,然后在管道中采样或将其复制到 ..
发布时间:2020-06-11 19:37:23 其他开发

一个片段可以访问WebGL GLSL中的所有纹理像素值吗? (不仅仅是它自己的TexCoord)

假装我正在使用WebGL和GLSL制作计算着色器. 在此着色器中,每个片段(或像素)都希望查看纹理上的每个像素,然后确定其自身的颜色. 通常,一个片段采样会从一些纹理中提供纹理坐标(UV值),但是我想针对单个片段从单个纹理中有效地采样所有UV值. 这可能吗? 解决方案 编辑:我能够对128x128纹理中的每个像素进行采样,但是移动到256x256会导致Chrome失败.这 ..
发布时间:2020-05-21 00:18:22 其他开发

计算着色器未写入缓冲区

我正在寻找使用QOpenGLFunctions_4_3_Core OpenGL函数从Qt调用计算着色器的帮助. 具体地说,我对glDispatchCompute(1024, 1, 1);的调用似乎对绑定到它的缓冲区没有任何影响. 如何将缓冲区绑定到QT中的计算着色器,以便可以将着色器的结果读回到C ++ ? 我创建我的程序并将其与( Squircle.cpp ): com ..
发布时间:2020-05-21 00:02:59 C/C++开发