【发布时间】:2017-10-26 22:59:59
【问题描述】:
我正在使用 three.js 开发基于 glsl-atmosphere (https://github.com/wwwtyro/glsl-atmosphere) 的大气着色器
首先我只是将这个着色器应用到一个球体上,我得到了非常好的结果:)
原来的着色器没有太阳绘图元素,所以我只是用它来制作的
float spot = smoothstep(0.0, 1000.0, pMie)*10.0;
然后将这部分添加到return语句中:
return iSun * (spot*totalMie+pRlh * kRlh * totalRlh + pMie * kMie * totalMie);
它变成了一个椭球体......
我能做些什么来解决它?
【问题讨论】:
-
要回答您的问题,我们需要分析您链接的着色器,我怀疑有人会这样做...我正在使用不同的方法,请参阅my GLSL Atmospheric scattering。我基本上测试相机光线是否与太阳圆盘相交(我最多支持 3 颗本地恒星)如果是,我在散射积分之前将颜色和强度设置为太阳。在代码中搜索
_star_colide。这会从任何角度产生圆形圆盘,并为我们的 White Sun like here 正确设置从红色到黄色的颜色。
标签: javascript three.js glsl webgl shader