Dae*_*all 6 opengl gpgpu hardware-acceleration
换句话说,如果要尝试使用GPGPU(CUDA,OpenCL)重新实现OpenGL或DirectX(或模拟),那么NVIDIA和AMD卡上的库存实现的位置和原因会更慢?
我可以看到如何使用GPGPU使顶点/片段/几何/ tesselation着色器变得漂亮和快速,但是生成要渲染的片段列表,剪切,纹理采样等等呢?
我纯粹是为了学术兴趣.
Ant*_*eru 12
现代GPU仍有许多固定功能硬件,这些硬件对计算APIS是隐藏的.这包括:混合阶段,三角形光栅化和许多片上队列.着色器当然都可以很好地映射到CUDA/OpenCL - 毕竟,着色器和计算语言都使用GPU的相同部分 - 通用着色器核心.将这些单元视为一堆非常宽的SIMD CPU(例如,GTX 580具有16个内核和32个宽SIMD单元.)
您可以通过着色器访问纹理单元,因此无需在"计算"中实现.如果您愿意,您的性能最有可能是因为您无法访问针对空间布局进行优化的纹理缓存.
您不应低估光栅化所需的工作量.这是一个主要问题,如果你抛出所有GPU,你可以获得大约25%的光栅硬件性能(参见:GPU上的高性能软件光栅化).这包括混合成本,这也是通过固定的功能单位通常.
Tesselation还有一个固定功能部分,难以有效模拟,因为它将输入放大到1:4096,你肯定不想预先保留这么多的内存.
接下来,由于您无法访问帧缓冲区压缩,因此您会受到很多性能损失,因为当您处于仅计算模式时,会再次使用专用硬件.最后,由于你没有任何片上队列,很难达到与"图形管道"相同的效用率(例如,它可以根据着色器负载轻松缓冲顶点着色器的输出,你可以不要灵活地切换着色器.)
| 归档时间: |
|
| 查看次数: |
1016 次 |
| 最近记录: |