1

我的问题在理论上很简单——将每个人脸数据输入到像素着色器的最佳方法是什么?如果它是通过一个简单的 cbuffer 数组注入的,我可以使用 SV_PrimitiveID 值访问数据。然而,每个 cbuffer 8096 个浮点数的限制对于任何适度详细的模型来说显然都是一个问题。

这种方法有替代方法吗?可能使用单独的顶点流?

理想情况下,我会在每个顶点的基础上输入数据,但数据是每个面,以保存纹理的索引,用于在纹理数组中查找的每个面。如果按顶点使用,跨顶点的 texcoord 数据插值肯定会弄乱这个索引,对吗?但是,如果要按顶点执行此操作,我会全神贯注!

非常感谢您提供的任何帮助。

4

1 回答 1

2

几何着色器按面运行,可用于将每个多边形的数据传递给像素着色器。

在三角形上使用时,它们将 3 个顶点作为输入并输出 3 个顶点,但此时它们本质上是去重的,因此从几何着色器开始,多个三角形之间共享一个顶点这一事实并不重要。由于未对 uint 进行插值,因此在这方面没有问题,因此索引取自三角形中的“前导”顶点。

MSDN 上的几何着色器

于 2014-02-17T17:38:26.860 回答