什么是太阳
太阳是位于太阳系中心的恒星,其能量通过核聚变反应产生,为地球及太阳系其他行星提供光和热。 宇宙中约85%的质量为暗物质,不参与电磁相互作用,无法反射或发光,所以背景是黑色的。
渲染太阳
I是坐标轴输入,输入范围是[0,1]。首先将坐标偏移到[-1, 1],调整Y轴拉伸效果,不受分辨率影响。
vec2 I = (v_TexCoord - 0.5 ) * 2.0;
I.y *= u_Resolution.y / u_Resolution.x;
基础颜色选用为橙色:
越靠近太阳中心位置,亮度越高,即坐标(0,0)温度最高,越靠近边缘亮度越低。
O=vec(1,.5,.2,1)/dot(I,I)
颜色处理
可以看到上一步处理得到的图片会有颜色跳变,是因为每个通道颜色分别运算导致的,比如从(400, 200,80) -> (300, 150, 60), r通道颜色并未改变,双曲正切函数表达式如下,他的主要作用是将值域[-∞,+∞]映射到[-1,1],让颜色在高亮度区域不会超出shader的颜色范围:
最终得到图片