为了简化问题,我们考虑一下球体。假设我有一个球体,在执行之前我知道半径,位置和三角形数。我们还要说三角形数量足够大(例如~50k三角形)。
一般来说,手动创建此球体网格并将所有50k三角形流式传输到图形卡会更快吗,或者发送单个点(表示球体的中心)并使用曲面细分和几何着色器来更快在GPU上构建球体?
如果我将100个这样的球体放在不同的位置,它会更快吗?我可以使用船体/几何着色器创建一些我可以与实例结合的东西吗?
答案 0 :(得分:3)
镶嵌肯定是有价值的。特别是当与高度图的位移组合时。您问题中描述的孤立环境必然不能完全回答您的问题。
在使用曲面细分之前,您需要知道您将成为CPU多边形/三角形边界,因此需要开始使用GPU来帮助您增加游戏/场景的整体三角形。 GPU上的计算速度非常快,所以如果您要这样做,建议使用曲面细分多个细分级别...虽然有时我很高兴只需要从200三平面细分3-4次。
主要是曲面细分用于环境/静态网格场景对象,这样您就可以在角色和其他移动/动画模型上花费三分而不会受到CPU限制。
Checkout引擎(如Unity3D和CryEngine)用于细分示例以帮助学习曲线。
答案 1 :(得分:1)
我恰好正好同时处理这个问题。
就FPS而言,预先计算的方法在这种情况下会更快 ,因为你可以 转储一个巨大的50K三角球有效载荷(与任何其他型号一样)和 从那里把它画在多个地方。
曲面细分方法会因为所有三角形都会变慢 从公式生成,每帧多次。