一:有关天空盒
二:有关shader
1:用shader实现蓝天。
(1)蓝天的效果是天是蓝的,下面是白色的,用text的值加上sin扰动来作为变量来实现颜色的线性差值。mix 函数是来实现颜色线性差值的。
(2)计算太阳光的角度
或者计算太阳光方向在Z轴的投影长度用来判断太阳是否在地平线上。
(3)通过混合算出最终的天空颜色
具体实现代码如下:
vec4 skyColor = vec4(mix(vec3(1.0,1.0,1.0),vec3(0.4,0.8,1.0),sin(v_texCoord.z * 1.5707963267948966)),czm_morphTime);
float dotNum = dot(vec3(0.0,0.0,1.0),czm_lightDirectionWC);
float directionMix = 1.0;
if( dotNum < 0.0 ) {
gl_FragColor = spaceColor;
return;
} else {
directionMix = clamp(dotNum / 0.1, 0.0, 1.0);
gl_FragColor = mix(spaceColor, skyColor, directionMix);
}