假设我想在 gpu 管道中为顶点变换构建矩阵,我意识到我当前的实现效率很低,因为它为每个顶点从源材料重建矩阵(而它只需要为每个受影响的顶点构建一次) )。有没有办法修改在单个绘图调用中绘制的整个顶点数组?计算矩阵并将它们存储在 vram 中似乎不是一个很好的选择,因为将同时处理多个顶点,我认为我不能有效地同步它们。我能想到的唯一其他选择是计算着色器,我还没有研究过它的用途,但是有没有可能让它计算矩阵并将它们存储在 gpu 中,以便我以后可以在绘图时访问它们?
问问题
126 次
2 回答
0
Do you have any source code? I never calculate matrices in the shaders, normally do it on the CPU and pass them over in a constant buffer.
于 2012-04-29T19:19:47.487 回答
0
实现这一点的一种方法是预先计算矩阵并将它们作为统一变量发送到着色器。例如,如果您的着色器只需要将 MVP 矩阵与顶点位置相乘,那么您可以在着色器外部预先计算 MVP 矩阵并将其作为 float4x4 统一发送到着色器,那么顶点着色器所做的就是将该单个矩阵与每个顶点相乘。没有比这更优化的了,因为顶点是在 GPU 上并行处理的,并且 GPU 具有针对向量演算优化的指令集。
于 2012-04-29T19:27:24.720 回答