@@ -53,16 +53,19 @@ Scene* scene = nullptr;
53
53
Renderer* renderer = nullptr ;
54
54
55
55
std::vector<string> sceneFiles;
56
+ std::vector<string> envMaps;
56
57
57
58
float mouseSensitivity = 0 .01f ;
58
59
bool keyPressed = false ;
59
- int sampleSceneIndex = 0 ;
60
+ int sampleSceneIdx = 0 ;
60
61
int selectedInstance = 0 ;
61
62
double lastTime = SDL_GetTicks();
63
+ int envMapIdx = 0 ;
62
64
bool done = false ;
63
65
64
66
std::string shadersDir = " ../src/shaders/" ;
65
67
std::string assetsDir = " ../assets/" ;
68
+ std::string envMapDir = " ../assets/HDR/" ;
66
69
67
70
RenderOptions renderOptions;
68
71
@@ -93,6 +96,27 @@ void GetSceneFiles()
93
96
tinydir_close (&dir);
94
97
}
95
98
99
+ void GetEnvMaps ()
100
+ {
101
+ tinydir_dir dir;
102
+ int i;
103
+ tinydir_open_sorted (&dir, envMapDir.c_str ());
104
+
105
+ for (i = 0 ; i < dir.n_files ; i++)
106
+ {
107
+ tinydir_file file;
108
+ tinydir_readfile_n (&dir, &file, i);
109
+
110
+ std::string ext = std::string (file.extension );
111
+ if (ext == " hdr" )
112
+ {
113
+ envMaps.push_back (envMapDir + std::string (file.name ));
114
+ }
115
+ }
116
+
117
+ tinydir_close (&dir);
118
+ }
119
+
96
120
void LoadScene (std::string sceneName)
97
121
{
98
122
delete scene;
@@ -304,20 +328,30 @@ void MainLoop(void* arg)
304
328
SaveFrame (" ./img_" + to_string (renderer->GetSampleCount ()) + " .png" );
305
329
}
306
330
331
+ // Scenes
307
332
std::vector<const char *> scenes;
308
333
for (int i = 0 ; i < sceneFiles.size (); ++i)
309
- {
310
334
scenes.push_back (sceneFiles[i].c_str ());
311
- }
312
335
313
- if (ImGui::Combo (" Scene" , &sampleSceneIndex , scenes.data (), scenes.size ()))
336
+ if (ImGui::Combo (" Scene" , &sampleSceneIdx , scenes.data (), scenes.size ()))
314
337
{
315
- LoadScene (sceneFiles[sampleSceneIndex ]);
338
+ LoadScene (sceneFiles[sampleSceneIdx ]);
316
339
SDL_RestoreWindow (loopdata.mWindow );
317
340
SDL_SetWindowSize (loopdata.mWindow , renderOptions.windowResolution .x , renderOptions.windowResolution .y );
318
341
InitRenderer ();
319
342
}
320
343
344
+ // Environment maps
345
+ std::vector<const char *> envMapsList;
346
+ for (int i = 0 ; i < envMaps.size (); ++i)
347
+ envMapsList.push_back (envMaps[i].c_str ());
348
+
349
+ if (ImGui::Combo (" EnvMaps" , &envMapIdx, envMapsList.data (), envMapsList.size ()))
350
+ {
351
+ scene->AddHDR (envMaps[envMapIdx]);
352
+ InitRenderer ();
353
+ }
354
+
321
355
bool optionsChanged = false ;
322
356
323
357
optionsChanged |= ImGui::SliderFloat (" Mouse Sensitivity" , &mouseSensitivity, 0 .001f , 1 .0f );
@@ -498,7 +532,8 @@ int main(int argc, char** argv)
498
532
else
499
533
{
500
534
GetSceneFiles ();
501
- LoadScene (sceneFiles[sampleSceneIndex]);
535
+ GetEnvMaps ();
536
+ LoadScene (sceneFiles[sampleSceneIdx]);
502
537
}
503
538
504
539
// Setup SDL
0 commit comments