2011-01-22 70 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分量,所以您應該乘以距離場景中心的太陽距離(通常是恆定的)。