From b354a817db7afa54233ea959e37ec7a812e3f43e Mon Sep 17 00:00:00 2001 From: Dario Manesku Date: Fri, 14 Feb 2014 07:56:50 +0100 Subject: [PATCH] Refactor. --- examples/18-ibl/ibl.cpp | 185 ++++++++++++++++++++++------------------ 1 file changed, 103 insertions(+), 82 deletions(-) diff --git a/examples/18-ibl/ibl.cpp b/examples/18-ibl/ibl.cpp index d212e745..0075adc2 100644 --- a/examples/18-ibl/ibl.cpp +++ b/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.