Dario Manesku 12 سال پیش
والد
کامیت
b354a817db
1فایلهای تغییر یافته به همراه103 افزوده شده و 82 حذف شده
  1. 103 82
      examples/18-ibl/ibl.cpp

+ 103 - 82
examples/18-ibl/ibl.cpp

@@ -612,18 +612,39 @@ int _main_(int /*_argc*/, char** /*_argv*/)
 	Mesh meshBunny;
 	meshBunny.load("meshes/bunny.bin");
 
-	float settings_speed = 0.37f;
-	float settings_glossiness = 1.0f;
-	float settings_exposure = 0.0f;
-	float settings_diffspec = 0.65f;
-	float settings_rgbDiff[3] = { 0.2f, 0.2f, 0.2f };
-	float settings_rgbSpec[3] = { 1.0f, 1.0f, 1.0f };
-	bool settings_diffuse = true;
-	bool settings_specular = true;
-	bool settings_diffuseIbl = true;
-	bool settings_specularIbl = true;
-	bool settings_singleSliderDiff = false;
-	bool settings_singleSliderSpec = false;
+	struct Settings
+	{
+		float m_speed;
+		float m_glossiness;
+		float m_exposure;
+		float m_diffspec;
+		float m_rgbDiff[3];
+		float m_rgbSpec[3];
+		bool m_diffuse;
+		bool m_specular;
+		bool m_diffuseIbl;
+		bool m_specularIbl;
+		bool m_singleSliderDiff;
+		bool m_singleSliderSpec;
+	};
+
+	Settings settings;
+	settings.m_speed = 0.37f;
+	settings.m_glossiness = 1.0f;
+	settings.m_exposure = 0.0f;
+	settings.m_diffspec = 0.65f;
+	settings.m_rgbDiff[0] = 0.2f;
+	settings.m_rgbDiff[1] = 0.2f;
+	settings.m_rgbDiff[2] = 0.2f;
+	settings.m_rgbSpec[0] = 1.0f;
+	settings.m_rgbSpec[1] = 1.0f;
+	settings.m_rgbSpec[2] = 1.0f;
+	settings.m_diffuse = true;
+	settings.m_specular = true;
+	settings.m_diffuseIbl = true;
+	settings.m_specularIbl = true;
+	settings.m_singleSliderDiff = false;
+	settings.m_singleSliderSpec = false;
 
 	float time = 0.0f;
 
@@ -646,13 +667,13 @@ int _main_(int /*_argc*/, char** /*_argv*/)
 
 		imguiLabel("Shade:");
 		imguiSeparator();
-		imguiBool("Diffuse",      settings_diffuse);
-		imguiBool("Specular",     settings_specular);
-		imguiBool("IBL Diffuse",  settings_diffuseIbl);
-		imguiBool("IBL Specular", settings_specularIbl);
+		imguiBool("Diffuse",      settings.m_diffuse);
+		imguiBool("Specular",     settings.m_specular);
+		imguiBool("IBL Diffuse",  settings.m_diffuseIbl);
+		imguiBool("IBL Specular", settings.m_specularIbl);
 
 		imguiSeparatorLine();
-		imguiSlider("Speed", &settings_speed, 0.0f, 1.0f, 0.01f);
+		imguiSlider("Speed", &settings.m_speed, 0.0f, 1.0f, 0.01f);
 
 		imguiSeparatorLine();
 		imguiLabel("Environment:");
@@ -665,7 +686,7 @@ int _main_(int /*_argc*/, char** /*_argv*/)
 									   );
 
 		imguiSeparator();
-		imguiSlider("Exposure", &settings_exposure, -8.0f, 8.0f, 0.01f);
+		imguiSlider("Exposure", &settings.m_exposure, -8.0f, 8.0f, 0.01f);
 		imguiEndScrollArea();
 
 		static int32_t leftScrollArea = 0;
@@ -673,43 +694,43 @@ int _main_(int /*_argc*/, char** /*_argv*/)
 
 		imguiLabel("Material properties:");
 		imguiSeparator();
-		imguiSlider("Diffuse - Specular", &settings_diffspec,   0.0f, 1.0f, 0.01f);
-		imguiSlider("Glossiness"        , &settings_glossiness, 0.0f, 1.0f, 0.01f);
+		imguiSlider("Diffuse - Specular", &settings.m_diffspec,   0.0f, 1.0f, 0.01f);
+		imguiSlider("Glossiness"        , &settings.m_glossiness, 0.0f, 1.0f, 0.01f);
 
 		imguiSeparatorLine();
 		imguiLabel("Diffuse color:");
 		imguiSeparator();
-		imguiBool("Single slider", settings_singleSliderDiff);
-		if (settings_singleSliderDiff)
+		imguiBool("Single slider", settings.m_singleSliderDiff);
+		if (settings.m_singleSliderDiff)
 		{
-			imguiSlider("RGB:", &settings_rgbDiff[0], 0.0f, 1.0f, 0.01f);
-			settings_rgbDiff[1] = settings_rgbDiff[0];
-			settings_rgbDiff[2] = settings_rgbDiff[0];
+			imguiSlider("RGB:", &settings.m_rgbDiff[0], 0.0f, 1.0f, 0.01f);
+			settings.m_rgbDiff[1] = settings.m_rgbDiff[0];
+			settings.m_rgbDiff[2] = settings.m_rgbDiff[0];
 
 		}
 		else
 		{
-			imguiSlider("R:", &settings_rgbDiff[0], 0.0f, 1.0f, 0.01f);
-			imguiSlider("G:", &settings_rgbDiff[1], 0.0f, 1.0f, 0.01f);
-			imguiSlider("B:", &settings_rgbDiff[2], 0.0f, 1.0f, 0.01f);
+			imguiSlider("R:", &settings.m_rgbDiff[0], 0.0f, 1.0f, 0.01f);
+			imguiSlider("G:", &settings.m_rgbDiff[1], 0.0f, 1.0f, 0.01f);
+			imguiSlider("B:", &settings.m_rgbDiff[2], 0.0f, 1.0f, 0.01f);
 		}
 
 		imguiSeparatorLine();
 		imguiLabel("Specular color:");
 		imguiSeparator();
-		imguiBool("Single slider", settings_singleSliderSpec);
-		if (settings_singleSliderSpec)
+		imguiBool("Single slider", settings.m_singleSliderSpec);
+		if (settings.m_singleSliderSpec)
 		{
-			imguiSlider("RGB:", &settings_rgbSpec[0], 0.0f, 1.0f, 0.01f);
-			settings_rgbSpec[1] = settings_rgbSpec[0];
-			settings_rgbSpec[2] = settings_rgbSpec[0];
+			imguiSlider("RGB:", &settings.m_rgbSpec[0], 0.0f, 1.0f, 0.01f);
+			settings.m_rgbSpec[1] = settings.m_rgbSpec[0];
+			settings.m_rgbSpec[2] = settings.m_rgbSpec[0];
 
 		}
 		else
 		{
-			imguiSlider("R:", &settings_rgbSpec[0], 0.0f, 1.0f, 0.01f);
-			imguiSlider("G:", &settings_rgbSpec[1], 0.0f, 1.0f, 0.01f);
-			imguiSlider("B:", &settings_rgbSpec[2], 0.0f, 1.0f, 0.01f);
+			imguiSlider("R:", &settings.m_rgbSpec[0], 0.0f, 1.0f, 0.01f);
+			imguiSlider("G:", &settings.m_rgbSpec[1], 0.0f, 1.0f, 0.01f);
+			imguiSlider("B:", &settings.m_rgbSpec[2], 0.0f, 1.0f, 0.01f);
 		}
 
 		imguiSeparatorLine();
@@ -718,80 +739,80 @@ int _main_(int /*_argc*/, char** /*_argv*/)
 
 		if (imguiButton("Gold") )
 		{
-			settings_glossiness = 0.8f;
-			settings_diffspec   = 1.0f;
+			settings.m_glossiness = 0.8f;
+			settings.m_diffspec   = 1.0f;
 
-			settings_rgbDiff[0] = 0.0f;
-			settings_rgbDiff[1] = 0.0f;
-			settings_rgbDiff[2] = 0.0f;
+			settings.m_rgbDiff[0] = 0.0f;
+			settings.m_rgbDiff[1] = 0.0f;
+			settings.m_rgbDiff[2] = 0.0f;
 
-			settings_rgbSpec[0] = 1.0f;
-			settings_rgbSpec[1] = 0.86f;
-			settings_rgbSpec[2] = 0.58f;
+			settings.m_rgbSpec[0] = 1.0f;
+			settings.m_rgbSpec[1] = 0.86f;
+			settings.m_rgbSpec[2] = 0.58f;
 
-			settings_singleSliderSpec = false;
+			settings.m_singleSliderSpec = false;
 		}
 
 		if (imguiButton("Copper") )
 		{
-			settings_glossiness = 0.67f;
-			settings_diffspec   = 1.0f;
+			settings.m_glossiness = 0.67f;
+			settings.m_diffspec   = 1.0f;
 
-			settings_rgbDiff[0] = 0.0f;
-			settings_rgbDiff[1] = 0.0f;
-			settings_rgbDiff[2] = 0.0f;
+			settings.m_rgbDiff[0] = 0.0f;
+			settings.m_rgbDiff[1] = 0.0f;
+			settings.m_rgbDiff[2] = 0.0f;
 
-			settings_rgbSpec[0] = 0.98f;
-			settings_rgbSpec[1] = 0.82f;
-			settings_rgbSpec[2] = 0.76f;
+			settings.m_rgbSpec[0] = 0.98f;
+			settings.m_rgbSpec[1] = 0.82f;
+			settings.m_rgbSpec[2] = 0.76f;
 
-			settings_singleSliderSpec = false;
+			settings.m_singleSliderSpec = false;
 		}
 
 		if (imguiButton("Titanium") )
 		{
-			settings_glossiness = 0.57f;
-			settings_diffspec   = 1.0f;
+			settings.m_glossiness = 0.57f;
+			settings.m_diffspec   = 1.0f;
 
-			settings_rgbDiff[0] = 0.0f;
-			settings_rgbDiff[1] = 0.0f;
-			settings_rgbDiff[2] = 0.0f;
+			settings.m_rgbDiff[0] = 0.0f;
+			settings.m_rgbDiff[1] = 0.0f;
+			settings.m_rgbDiff[2] = 0.0f;
 
-			settings_rgbSpec[0] = 0.76f;
-			settings_rgbSpec[1] = 0.73f;
-			settings_rgbSpec[2] = 0.71f;
+			settings.m_rgbSpec[0] = 0.76f;
+			settings.m_rgbSpec[1] = 0.73f;
+			settings.m_rgbSpec[2] = 0.71f;
 
-			settings_singleSliderSpec = false;
+			settings.m_singleSliderSpec = false;
 		}
 
 		if (imguiButton("Steel") )
 		{
-			settings_glossiness = 0.82f;
-			settings_diffspec   = 1.0f;
+			settings.m_glossiness = 0.82f;
+			settings.m_diffspec   = 1.0f;
 
-			settings_rgbDiff[0] = 0.0f;
-			settings_rgbDiff[1] = 0.0f;
-			settings_rgbDiff[2] = 0.0f;
+			settings.m_rgbDiff[0] = 0.0f;
+			settings.m_rgbDiff[1] = 0.0f;
+			settings.m_rgbDiff[2] = 0.0f;
 
-			settings_rgbSpec[0] = 0.77f;
-			settings_rgbSpec[1] = 0.78f;
-			settings_rgbSpec[2] = 0.77f;
+			settings.m_rgbSpec[0] = 0.77f;
+			settings.m_rgbSpec[1] = 0.78f;
+			settings.m_rgbSpec[2] = 0.77f;
 
-			settings_singleSliderSpec = false;
+			settings.m_singleSliderSpec = false;
 		}
 
 		imguiEndScrollArea();
 		imguiEndFrame();
 
-		s_uniforms.m_glossiness = settings_glossiness;
-		s_uniforms.m_exposure = settings_exposure;
-		s_uniforms.m_diffspec = settings_diffspec;
-		s_uniforms.m_flags[0] = float(settings_diffuse);
-		s_uniforms.m_flags[1] = float(settings_specular);
-		s_uniforms.m_flags[2] = float(settings_diffuseIbl);
-		s_uniforms.m_flags[3] = float(settings_specularIbl);
-		memcpy(s_uniforms.m_rgbDiff, settings_rgbDiff, 3*sizeof(float));
-		memcpy(s_uniforms.m_rgbSpec, settings_rgbSpec, 3*sizeof(float));
+		s_uniforms.m_glossiness = settings.m_glossiness;
+		s_uniforms.m_exposure = settings.m_exposure;
+		s_uniforms.m_diffspec = settings.m_diffspec;
+		s_uniforms.m_flags[0] = float(settings.m_diffuse);
+		s_uniforms.m_flags[1] = float(settings.m_specular);
+		s_uniforms.m_flags[2] = float(settings.m_diffuseIbl);
+		s_uniforms.m_flags[3] = float(settings.m_specularIbl);
+		memcpy(s_uniforms.m_rgbDiff, settings.m_rgbDiff, 3*sizeof(float));
+		memcpy(s_uniforms.m_rgbSpec, settings.m_rgbSpec, 3*sizeof(float));
 
 		s_uniforms.submitPerFrameUniforms();
 
@@ -802,7 +823,7 @@ int _main_(int /*_argc*/, char** /*_argv*/)
 		const double freq = double(bx::getHPFrequency() );
 		const double toMs = 1000.0/freq;
 
-		time += (float)(frameTime*settings_speed/freq);
+		time += (float)(frameTime*settings.m_speed/freq);
 		s_uniforms.m_time = time;
 
 		// Use debug font to print information about this example.