Opengl 将屏幕空间距离与世界空间距离相关联

Opengl 将屏幕空间距离与世界空间距离相关联,opengl,raytracing,Opengl,Raytracing,我正在尝试实现一个体积线着色器,如下所示:。基本上,为每个线段生成边界体积网格,然后将线段的2个端点转换为屏幕空间并传递到片段着色器中。在片段着色器中,计算片段与屏幕空间中的线段端点之间的屏幕空间距离。该距离用于对线进行着色 以上部分有效。问题是上面计算的距离是在屏幕空间中。因此,渲染线段半径与其屏幕大小相关联。与中一样,缩小或放大摄影机不会使渲染线在屏幕上看起来变小或变大 如何调整上述计算的距离(或任何其他方法),使线条根据其与摄影机的距离看起来更大或更小 以下是显示问题的图片: 当相机被放

我正在尝试实现一个体积线着色器,如下所示:。基本上,为每个线段生成边界体积网格,然后将线段的2个端点转换为屏幕空间并传递到片段着色器中。在片段着色器中,计算片段与屏幕空间中的线段端点之间的屏幕空间距离。该距离用于对线进行着色

以上部分有效。问题是上面计算的距离是在屏幕空间中。因此,渲染线段半径与其屏幕大小相关联。与中一样,缩小或放大摄影机不会使渲染线在屏幕上看起来变小或变大

如何调整上述计算的距离(或任何其他方法),使线条根据其与摄影机的距离看起来更大或更小

以下是显示问题的图片:


当相机被放大到很远的地方时,我应该调整距离衰减,但我不知道如何计算正确的距离衰减。例如,在世界空间中绘制半径为1.0而在屏幕空间中不是1.0的直线。

可以在几何体着色器中计算两个端点的所需半径,并在片段着色器中在它们之间进行线性插值。但不确定如何计算两个半径..可以在几何体着色器中为两个端点计算所需的半径,并在片段着色器中在它们之间进行线性插值。但不知道如何计算两个半径。。