Răsfoiți Sursa

Fixing debug assertion with imgui

mriegger 4 ani în urmă
părinte
comite
b76774dfc3

+ 1 - 1
Gem/Code/Source/AreaLightExampleComponent.cpp

@@ -595,7 +595,7 @@ namespace AtomSampleViewer
             ScriptableImGui::EndCombo();
         }
 
-        if (ScriptableImGui::SliderFloat("Lumens", &m_config.m_intensity, 0.0f, 1000.0f, "%.3f", 2.0f))
+        if (ScriptableImGui::SliderFloat("Lumens", &m_config.m_intensity, 0.0f, 1000.0f, "%.3f", ImGuiSliderFlags_Logarithmic))
         {
             lightsNeedUpdate = true;
         }

+ 6 - 6
Gem/Code/Source/Automation/ScriptableImGui.cpp

@@ -338,11 +338,11 @@ namespace AtomSampleViewer
         return ActionHelper<float>(label, imguiAction, reportScriptableAction, handleScriptedAction);
     }
 
-    bool ScriptableImGui::SliderFloat(const char* label, float* v, float v_min, float v_max, const char* format, float power)
+    bool ScriptableImGui::SliderFloat(const char* label, float* v, float v_min, float v_max, const char* format, ImGuiSliderFlags flags)
     {
         auto imguiAction = [&]()
         {
-            return ImGui::SliderFloat(label, v, v_min, v_max, format, power);
+            return ImGui::SliderFloat(label, v, v_min, v_max, format, flags);
         };
 
         auto reportScriptableAction = [&](const AZStd::string& pathToImGuiItem)
@@ -359,11 +359,11 @@ namespace AtomSampleViewer
         return ActionHelper<float>(label, imguiAction, reportScriptableAction, handleScriptedAction);
     }
 
-    bool ScriptableImGui::SliderFloat2(const char* label, float v[2], float v_min, float v_max, const char* format, float power)
+    bool ScriptableImGui::SliderFloat2(const char* label, float v[2], float v_min, float v_max, const char* format, ImGuiSliderFlags flags)
     {
         auto imguiAction = [&]()
         {
-            return ImGui::SliderFloat2(label, v, v_min, v_max, format, power);
+            return ImGui::SliderFloat2(label, v, v_min, v_max, format, flags);
         };
 
         auto reportScriptableAction = [&](const AZStd::string& pathToImGuiItem)
@@ -400,11 +400,11 @@ namespace AtomSampleViewer
         return ActionHelper<AZ::Vector3>(label, imguiAction, reportScriptableAction, handleScriptedAction);
     }
 
-    bool ScriptableImGui::SliderFloat3(const char* label, float v[3], float v_min, float v_max, const char* format, float power)
+    bool ScriptableImGui::SliderFloat3(const char* label, float v[3], float v_min, float v_max, const char* format, ImGuiSliderFlags flags)
     {
         auto imguiAction = [&]()
         {
-            return ImGui::SliderFloat3(label, v, v_min, v_max, format, power);
+            return ImGui::SliderFloat3(label, v, v_min, v_max, format, flags);
         };
 
         return ThreeComponentHelper(label, v, imguiAction);

+ 3 - 3
Gem/Code/Source/Automation/ScriptableImGui.h

@@ -72,9 +72,9 @@ namespace AtomSampleViewer
         static bool Combo(const char* label, int* current_item, const char* const items[], int items_count, int height_in_items = -1);
 
         static bool SliderInt(const char* label, int* v, int v_min, int v_max, const char* format = "%d");
-        static bool SliderFloat(const char* label, float* v, float v_min, float v_max, const char* format = "%.3f", float power = 1.0f);
-        static bool SliderFloat2(const char* label, float v[2], float v_min, float v_max, const char* format = "%.3f", float power = 1.0f);
-        static bool SliderFloat3(const char* label, float v[3], float v_min, float v_max, const char* format = "%.3f", float power = 1.0f);
+        static bool SliderFloat(const char* label, float* v, float v_min, float v_max, const char* format = "%.3f", ImGuiSliderFlags flags = 0);
+        static bool SliderFloat2(const char* label, float v[2], float v_min, float v_max, const char* format = "%.3f", ImGuiSliderFlags flags = 0);
+        static bool SliderFloat3(const char* label, float v[3], float v_min, float v_max, const char* format = "%.3f", ImGuiSliderFlags flags = 0);
         static bool SliderAngle(const char* label, float* v, float v_min = -360.0f, float v_max = 360.0f, const char* format = "%.0f deg");
 
         static bool ColorEdit3(const char* label, float v[3], ImGuiColorEditFlags flags);

+ 2 - 2
Gem/Code/Source/CullingAndLodExampleComponent.cpp

@@ -338,7 +338,7 @@ namespace AtomSampleViewer
             const auto lightTrans = Transform::CreateRotationZ(m_directionalLightYaw) * Transform::CreateRotationX(m_directionalLightPitch);
             m_directionalLightFeatureProcessor->SetDirection(m_directionalLightHandle, lightTrans.GetBasis(1));
 
-            if (ImGui::SliderFloat("Intensity##directional", &m_directionalLightIntensity, 0.f, 20.f, "%.1f", 2.f))
+            if (ImGui::SliderFloat("Intensity##directional", &m_directionalLightIntensity, 0.f, 20.f, "%.1f", ImGuiSliderFlags_Logarithmic))
             {
                 m_directionalLightFeatureProcessor->SetRgbIntensity(
                     m_directionalLightHandle,
@@ -432,7 +432,7 @@ namespace AtomSampleViewer
                 UpdateDiskLightCount(diskLightCount);
             }
 
-            if (ImGui::SliderFloat("Intensity##disk", &m_diskLightIntensity, 0.f, 100000.f, "%.1f", 4.f))
+            if (ImGui::SliderFloat("Intensity##disk", &m_diskLightIntensity, 0.f, 100000.f, "%.1f", ImGuiSliderFlags_Logarithmic))
             {
                 for (const DiskLight& light : m_diskLights)
                 {

+ 4 - 5
Gem/Code/Source/ShadowExampleComponent.cpp

@@ -442,12 +442,12 @@ namespace AtomSampleViewer
             ImGui::Text("Directional Light");
             ImGui::Indent();
             {
-                ImGui::SliderFloat("Height##Directional", &m_directionalLightHeight, 1.f, 30.f, "%.1f", 2.f);
+                ScriptableImGui::SliderFloat("Height##Directional", &m_directionalLightHeight, 1.f, 30.f, "%.1f", ImGuiSliderFlags_Logarithmic);
 
                 ScriptableImGui::Checkbox("Auto Rotation##Directional", &m_isDirectionalLightAutoRotate);
                 ScriptableImGui::SliderAngle("Direction##Directional", &m_directionalLightRotationAngle, 0, 360);
 
-                if (ScriptableImGui::SliderFloat("Intensity##Directional", &m_directionalLightIntensity, 0.f, 20.f, "%.1f", 2.f))
+                if (ScriptableImGui::SliderFloat("Intensity##Directional", &m_directionalLightIntensity, 0.f, 20.f, "%.1f", ImGuiSliderFlags_Logarithmic))
                 {
                     AZ::Render::PhotometricColor<AZ::Render::PhotometricUnit::Lux> lightColor(DirectionalLightColor * m_directionalLightIntensity);
                     m_directionalLightFeatureProcessor->SetRgbIntensity(m_directionalLightHandle, lightColor);
@@ -607,8 +607,7 @@ namespace AtomSampleViewer
                 const int index = m_controlTargetDiskLightIndex;
                 const DiskLightHandle lightId = m_diskLightHandles[index];
 
-                ScriptableImGui::SliderFloat("Height##Disk",
-                    &m_diskLightHeights[index], 1.f, 30.f, "%.1f", 2.f);
+                ScriptableImGui::SliderFloat("Height##Disk", &m_diskLightHeights[index], 1.f, 30.f, "%.1f", ImGuiSliderFlags_Logarithmic);
 
                 if (ScriptableImGui::SliderFloat("Cone Angle", &m_outerConeAngles[index], 0.f, 120.f))
                 {
@@ -618,7 +617,7 @@ namespace AtomSampleViewer
                         AZ::DegToRad(m_outerConeAngles[index]));
                 }
 
-                if (ScriptableImGui::SliderFloat("Intensity##Disk", &m_diskLightIntensities[index], 0.f, 20000.f, "%.1f", 2.f))
+                if (ScriptableImGui::SliderFloat("Intensity##Disk", &m_diskLightIntensities[index], 0.f, 20000.f, "%.1f", ImGuiSliderFlags_Logarithmic))
                 {
                     AZ::Render::PhotometricColor<AZ::Render::PhotometricUnit::Candela> lightColor(s_diskLightColors[index] * m_diskLightIntensities[index]);
                     m_diskLightFeatureProcessor->SetRgbIntensity(lightId, lightColor);

+ 2 - 2
Gem/Code/Source/ShadowedBistroExampleComponent.cpp

@@ -410,7 +410,7 @@ namespace AtomSampleViewer
             ScriptableImGui::SliderAngle("Pitch", &m_directionalLightPitch, -90.0f, 0.f);
             ScriptableImGui::SliderAngle("Yaw", &m_directionalLightYaw, 0.f, 360.f);
 
-            if (ScriptableImGui::SliderFloat("Intensity##directional", &m_directionalLightIntensity, 0.f, 20.f, "%.1f", 2.f))
+            if (ScriptableImGui::SliderFloat("Intensity##directional", &m_directionalLightIntensity, 0.f, 20.f, "%.1f", ImGuiSliderFlags_Logarithmic))
             {
                 AZ::Render::PhotometricColor<AZ::Render::PhotometricUnit::Lux> lightColor(DirectionalLightColor * m_directionalLightIntensity);
                 m_directionalLightFeatureProcessor->SetRgbIntensity(m_directionalLightHandle, lightColor);
@@ -551,7 +551,7 @@ namespace AtomSampleViewer
                 UpdateDiskLightCount(diskLightCount);
             }
 
-            if (ScriptableImGui::SliderFloat("Intensity##spot", &m_diskLightIntensity, 0.f, 100000.f, "%.1f", 4.f))
+            if (ScriptableImGui::SliderFloat("Intensity##spot", &m_diskLightIntensity, 0.f, 100000.f, "%.1f", ImGuiSliderFlags_Logarithmic))
             {
                 for (const DiskLight& light : m_diskLights)
                 {

+ 1 - 1
Gem/Code/Source/SkinnedMeshExampleComponent.cpp

@@ -115,7 +115,7 @@ namespace AtomSampleViewer
 
         // Imgui limits slider range to half the natural range of the type
         float segmentCountFloat = static_cast<float>(config.m_segmentCount);
-        configWasModified |= ScriptableImGui::SliderFloat("Segments Per-Mesh", &segmentCountFloat, 2.0f, 2048.0f, "%.0f", 2.0f);
+        configWasModified |= ScriptableImGui::SliderFloat("Segments Per-Mesh", &segmentCountFloat, 2.0f, 2048.0f, "%.0f", ImGuiSliderFlags_Logarithmic);
         configWasModified |= ScriptableImGui::SliderInt("Vertices Per-Segment", &config.m_verticesPerSegment, 4, 2048);
         configWasModified |= ScriptableImGui::SliderInt("Bones Per-Mesh", &config.m_boneCount, 2, 256);
         configWasModified |= ScriptableImGui::SliderInt("Influences Per-Vertex", &config.m_influencesPerVertex, 1, 4);