【问题标题】:Opengl, three.js - how to draw circular sunOpengl,three.js - 如何绘制圆形太阳
【发布时间】: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


【解决方案1】:

那是透视失真。您只需要缩小相机的视野即可。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-08-19
    • 1970-01-01
    • 1970-01-01
    • 2019-11-16
    • 1970-01-01
    • 2012-07-10
    • 2016-07-11
    • 1970-01-01
    相关资源
    最近更新 更多