Opengl es 如何根据与摄影机的距离将颜色与背景混合

Opengl es 如何根据与摄影机的距离将颜色与背景混合,opengl-es,glsl,webgl,fragment-shader,Opengl Es,Glsl,Webgl,Fragment Shader,因此,我正在用JS编写一个WebGL代码,它使用gl_点绘制给定函数的近似值,我试图使这些点的颜色与背景颜色混合,距离摄影机越远。所以,每当用户移动或旋转相机时,颜色都会改变。我曾想过使用混合函数,但我应该主要在片段着色器中实现该功能 到目前为止,我只知道碎片着色器有vec2 gl_FragCoord内置变量,但这似乎没有多大帮助,因为它是屏幕上唯一的位置,并没有真正保留我可以使用的任何z坐标。我遗漏了什么吗?gl_FragCoord确实保留了一个z值。这是否有用取决于你想做什么。如果你想得到帮

因此,我正在用JS编写一个WebGL代码,它使用
gl_点
绘制给定函数的近似值,我试图使这些点的颜色与背景颜色混合,距离摄影机越远。所以,每当用户移动或旋转相机时,颜色都会改变。我曾想过使用混合函数,但我应该主要在片段着色器中实现该功能


到目前为止,我只知道碎片着色器有
vec2 gl_FragCoord
内置变量,但这似乎没有多大帮助,因为它是屏幕上唯一的位置,并没有真正保留我可以使用的任何z坐标。我遗漏了什么吗?

gl_FragCoord确实保留了一个z值。这是否有用取决于你想做什么。如果你想得到帮助,你可能需要在你的问题中贴一个。当然,您可以通过改变片段着色器中的操作来将Z传递给片段着色器,或者使用
gl_FragCoord.Z
yep您可以在片段着色器中按距离调节输出颜色的alpha通道,并设置混合函数以使用alpha。。。您要做的是将一些值从顶点着色器传递到片段着色器中。假设顶点着色器中有摄影机位置,则可以计算该点与摄影机之间的距离。然后可以使用该值,使该值离摄影机越远,不透明度越低。正如另一位所说,确保设置混合函数,使alpha值影响不透明度。