我正在尝试实现体积线着色器,如下所示:http://prideout.net/blog/?p=61。基本上,为每个线段生成边界体网格,然后将线段的2个端点转换为屏幕空间并传递到片段着色器。在片段着色器中,计算片段与屏幕空间中的线段端点之间的屏幕空间距离。该距离用于遮蔽线条。
以上部分有效。问题是上面计算的距离在屏幕空间中。因此,渲染的线段半径与其屏幕尺寸相关联。同样,缩小或放大相机不会使渲染的线条在屏幕中变得更小或更大。
如何调整上述计算的距离(或任何其他方法),使线条根据与相机的距离显得更大或更小?
这是一张显示问题的图片:
当相机变焦很远时,我应该调整距离衰减但我不知道如何计算正确的距离衰减使用。例如,要在世界空间中绘制半径为1.0的线,而不在屏幕空间中绘制1.0。