一个3D模型可能包含成千上万个顶点,当这个模型离摄像机很远时,模型的细节在屏幕上并不能很好的呈现出来,这时再一一计算模型的顶点进行渲染会造成很大的计算资源的浪费。利用细分着色器的特性,可以很好的避免这种情况。只需要提供一个相对粗糙的模型,使用细分着色器根据模型与摄像机的距离,对模型的patch进行一一细分,再提供一个高度图,对细分的坐标进行偏移。
//细分控制着色器
//世界坐标,计算顶点与摄像机的距离
float EyeToVertexDistance0 = distance(gEyeWorldPos, WorldPos_ES_in[0]);
float EyeToVertexDistance1 = distance(gEyeWorldPos, WorldPos_ES_in[1]);
float EyeToVertexDistance2 = dista