2011-01-22 115 views
1

我想做一个着色器,模拟太阳位置和它在对象中反射的光线。着色器太阳位置 - glsl

要模拟太阳的轨迹我有一个计时器,和光源的位置被定义为:

fvLightPosition.x=-cos(Time)*speed; 
fvLightPosition.y=sin(Time)*speed; 
fvLightPosition.z=100.0; 

定时器是一个变量float Time0_X

我几乎得到正确的轨道,但上攻下来,不知何故看起来有点奇怪。谁能给我一个提示如何以正确的方式模拟太阳轨迹?

我正在使用RenderMonkey来制作着色器。

回答

1

确保您缩放Time的值,使其位于02*PI弧度之间(分别对应于0度和180度)。如果您的原始Time值范围从0到某个数字MAX,您可以按如下方式进行缩放:(Time/MAX) * 2PI

我不确定speed指的是什么,但是您应该很可能不会乘以此值。 cossin值表示太阳和原点之间的矢量的X和Y分量,所以您应该乘以距离场景中心的太阳距离(通常是恒定的)。