@@ -90,7 +90,7 @@ void LoadTextures()
9090*/
9191glutil::ObjectData g_objectData =
9292{
93- glm::vec3 (0 .0f , 1 .0f , 0 .0f ),
93+ glm::vec3 (0 .0f , 1 .0f , 2 .0f ),
9494 glm::fquat (1 .0f , 0 .0f , 0 .0f , 0 .0f ),
9595};
9696
@@ -136,6 +136,7 @@ GLint g_unlitModelToCameraMatrixUnif;
136136GLint g_unlitObjectColorUnif;
137137GLuint g_unlitProg;
138138Framework::Mesh *g_pSphereMesh = NULL ;
139+ Framework::NodeRef g_bumpMapNode;
139140
140141
141142
@@ -147,6 +148,8 @@ void LoadAndSetupScene()
147148
148149 AssociateUniformWithNodes (nodes, g_lightNumBinder, " numberOfLights" );
149150 SetStateBinderWithNodes (nodes, g_lightNumBinder);
151+
152+ Framework::NodeRef bumpMapNode = pScene->FindNode (" object" );
150153
151154 GLuint unlit = pScene->FindProgram (" p_unlit" );
152155 Framework::Mesh *pSphereMesh = pScene->FindMesh (" m_sphere" );
@@ -162,6 +165,7 @@ void LoadAndSetupScene()
162165 g_unlitProg = unlit;
163166 g_unlitModelToCameraMatrixUnif = glGetUniformLocation (unlit, " modelToCameraMatrix" );
164167 g_unlitObjectColorUnif = glGetUniformLocation (unlit, " objectColor" );
168+ g_bumpMapNode = bumpMapNode;
165169
166170 std::swap (nodes, g_nodes);
167171 nodes.clear (); // If something was there already, delete it.
@@ -257,11 +261,18 @@ using Framework::Timer;
257261
258262bool g_bDrawCameraPos = false ;
259263bool g_bDrawLightPos = true ;
264+ bool g_bLongLightRange = false ;
260265
261266int g_displayWidth = 500 ;
262267int g_displayHeight = 500 ;
263268
264- const glm::vec4 g_lightPosOffset = glm::vec4(1 .0f , 0 .0f , 0 .0f , 1 .0f );
269+ inline glm::vec4 GetLightOffset ()
270+ {
271+ const glm::vec4 g_lightOffsetShort = glm::vec4 (-2 .0f , 0 .0f , 0 .0f , 1 .0f );
272+ const glm::vec4 g_lightOffsetLong = glm::vec4 (-4 .0f , 0 .0f , 0 .0f , 1 .0f );
273+
274+ return g_bLongLightRange ? g_lightOffsetLong : g_lightOffsetShort;
275+ }
265276
266277void BuildLights ( const glm::mat4 &camMatrix )
267278{
@@ -278,7 +289,7 @@ void BuildLights( const glm::mat4 &camMatrix )
278289 if (g_pObjPole)
279290 {
280291 lightData.lights [1 ].cameraSpaceLightPos = camMatrix * g_pObjPole->CalcMatrix () *
281- g_lightPosOffset ;
292+ GetLightOffset () ;
282293 }
283294 else
284295 {
@@ -327,8 +338,12 @@ void display()
327338 }
328339
329340 {
330- glm::mat4 temp (1 .0f );
331- g_nodes[0 ].SetNodePreTransform (glm::rotate (temp, 20 .0f , glm::vec3 (0 .0f , 1 .0f , 0 .0f )));
341+ glm::mat4 temp (
342+ glm::vec4 (1 .0f , 0 .0f , 0 .0f , 0 .0f ),
343+ glm::vec4 (1 .0f , 1 .0f , 0 .0f , 0 .0f ),
344+ glm::vec4 (0 .0f , 0 .0f , 1 .0f , 0 .0f ),
345+ glm::vec4 (0 .0f , 0 .0f , 0 .0f , 1 .0f ));
346+ g_bumpMapNode.SetNodePreTransform (temp);
332347 }
333348
334349 g_pScene->Render (modelMatrix.Top ());
@@ -337,8 +352,8 @@ void display()
337352 {
338353 glutil::PushStack stackPush (modelMatrix);
339354 modelMatrix.ApplyMatrix (g_pObjPole->CalcMatrix ());
340- modelMatrix.Translate (glm::vec3 (g_lightPosOffset. x , g_lightPosOffset. y , g_lightPosOffset. z ));
341- modelMatrix.Scale (0 .0625f );
355+ modelMatrix.Translate (glm::vec3 (GetLightOffset () ));
356+ modelMatrix.Scale (0 .125f );
342357
343358 glUseProgram (g_unlitProg);
344359 glUniformMatrix4fv (g_unlitModelToCameraMatrixUnif, 1 , GL_FALSE,
@@ -410,6 +425,9 @@ void keyboard(unsigned char key, int x, int y)
410425 case ' g' :
411426 g_bDrawLightPos = !g_bDrawLightPos;
412427 break ;
428+ case ' i' :
429+ g_bLongLightRange = !g_bLongLightRange;
430+ break ;
413431 case ' p' :
414432 g_timer.TogglePause ();
415433 break ;
0 commit comments