当我从远处观察我的点云时,所有点似乎都重叠,给人一种连续表面的印象,这就是我想要达到的效果。但是,当我靠近云时,您可以看到各个点的正方形以及它们之间的间隙。我怎样才能摆脱这些差距呢?例如,当相机变小时,使点尺寸更大?
这是working example。如果按向上箭头放大,最终会看到单个点而不是连续的"云"
顺便说一下 - 如果你想要更多的背景,那么这个问题here会有更详细的版本。
由于
尼尔
答案 0 :(得分:0)
我已经在the particle vertex shader for my Cubes中完成了这项工作,可能是以不必要的冗长方式。
// Compute pixel scale for points
vec4 testPosition = eyePosition;
testPosition.x = uPixelsPerClipUnit.x / uTileSize * 1.2/*appearance fudge factor*/;
testPosition.y = 0.0;
testPosition = uPMatrix * testPosition;
gl_PointSize = testPosition.x / testPosition.w * animationScale;
这些是您需要提供的变量(以u
开头的变量):
eyePosition
是眼睛空间中的点的位置(即,恰好在应用投影矩阵之前,并且在应用模型/视图矩阵/矩阵之后)。我们实际关心的唯一部分是z
轴。
uPixelsPerClipUnit
是一个vec2
,设置为视口像素尺寸的一半 - 它只是从-1到1剪辑空间比例的转换因子像素。
uTileSize
和animationScale
只是我游戏特有的关于积分应该有多大的参数。他们不需要在两个不同的地方。
uPMatrix
是投影矩阵。
我们在这里真正做的是获得
的产品并使用它来设置磅值。
(我想提供一个独立的工作示例,但我不认为我会解决它,所以你得到了片段和半生不熟的解释。)< / p>