0
我想繪製一條線,其中物體與片段着色器中的平面相交。在片段着色器中繪製物體和平面之間的交點
我將平面方程傳遞給片段着色器(a,b,c,d),並且希望以紅色繪製我的對象和此均勻平面之間的交點。
我想路口的寬度是始終不變的,無論我們多麼放大
現在,我從我的對象的距離,飛機在片段着色器爲:
// uPlane: vec4 where values are a.b.c.d (plane equation)
// vPos: wodlPosition of the fragment
vec4 prod = uPlane*vPos;
float distance = (prod.r + prod.g + prod.g + prod.a)/length(uPlane.xyz);
if(abs(distance) < 1.) {
gl_FragColor = vec4(1., 0., 0., .5);
} else {
gl_FragColor = vec4(0., 1., 0., .5);
}
這種方法的問題是,當我放大/縮小時,交叉點的「寬度」會發生變化(請參見下面的截圖)。
這將是在我的對象和飛機制服之間的交點處繪製「2px寬度」線的最佳方法嗎?
一個解決方案可能是將片段位置投影到平面上,然後以某種方式計算投影屏幕座標,然後將投影的屏幕座標與片段屏幕座標進行比較,並使用該信息繪製線條 – Nicolas