Javascript Opengl,three.js-如何绘制圆形太阳
我正在使用three.js开发基于glsl大气的大气着色器 首先,我将此着色器应用于球体,并获得了非常好的结果: 原始着色器没有太阳绘图元素,所以我只是使用Javascript Opengl,three.js-如何绘制圆形太阳,javascript,three.js,glsl,webgl,shader,Javascript,Three.js,Glsl,Webgl,Shader,我正在使用three.js开发基于glsl大气的大气着色器 首先,我将此着色器应用于球体,并获得了非常好的结果: 原始着色器没有太阳绘图元素,所以我只是使用 float spot = smoothstep(0.0, 1000.0, pMie)*10.0; 然后将此部分添加到return语句中: return iSun * (spot*totalMie+pRlh * kRlh * totalRlh + pMie * kMie * totalMie); 从这个角度看,它看起来不错,但当它靠近屏幕
float spot = smoothstep(0.0, 1000.0, pMie)*10.0;
然后将此部分添加到return语句中:
return iSun * (spot*totalMie+pRlh * kRlh * totalRlh + pMie * kMie * totalMie);
从这个角度看,它看起来不错,但当它靠近屏幕边界时:
它变成了一个椭球体
我能做些什么来修复它呢?那是透视失真。您所需要的只是缩小相机的视野。要回答您的问题,我们需要分析您链接的着色器,我怀疑任何人都不会这样做。。。我正在使用不同的方法,请参见。我基本上测试相机光线是否与太阳圆盘相交,我最多支持3颗本地恒星,如果是,我在散射积分到太阳之前设置颜色和强度。在代码中搜索星号。这会从任何角度形成圆形,也会为我们的白色太阳设置适当的颜色,从红色到黄色。