着色器太阳位置 - glsl
问题描述:
我想做一个着色器,模拟太阳位置和它在对象中反射的光线。着色器太阳位置 - glsl
要模拟太阳的轨迹我有一个计时器,和光源的位置被定义为:
fvLightPosition.x=-cos(Time)*speed;
fvLightPosition.y=sin(Time)*speed;
fvLightPosition.z=100.0;
定时器是一个变量float Time0_X
我几乎得到正确的轨道,但上攻下来,不知何故看起来有点奇怪。谁能给我一个提示如何以正确的方式模拟太阳轨迹?
我正在使用RenderMonkey来制作着色器。
答
确保您缩放Time
的值,使其位于0
和2*PI
弧度之间(分别对应于0度和180度)。如果您的原始Time
值范围从0
到某个数字MAX
,您可以按如下方式进行缩放:(Time/MAX) * 2PI
。
我不确定speed
指的是什么,但是您应该很可能不会乘以此值。 cos
和sin
值表示太阳和原点之间的矢量的X和Y分量,所以您应该乘以距离场景中心的太阳距离(通常是恒定的)。