LOD bias toggle

This commit is contained in:
saschawillems 2016-06-04 13:25:40 +02:00
parent a074cd07a4
commit 8a7a4ce8b4

View file

@ -60,6 +60,7 @@ public:
struct { struct {
glm::mat4 projection; glm::mat4 projection;
glm::mat4 model; glm::mat4 model;
float lodBias = 0.0f;
} uboVS; } uboVS;
struct { struct {
@ -79,7 +80,7 @@ public:
{ {
zoom = -4.0f; zoom = -4.0f;
rotationSpeed = 0.25f; rotationSpeed = 0.25f;
rotation = { -2.25f, -35.0f, 0.0f }; rotation = { -7.25f, 120.0f, 0.0f };
enableTextOverlay = true; enableTextOverlay = true;
title = "Vulkan Example - Cube map"; title = "Vulkan Example - Cube map";
} }
@ -717,6 +718,21 @@ public:
reBuildCommandBuffers(); reBuildCommandBuffers();
} }
void changeLodBias(float delta)
{
uboVS.lodBias += delta;
if (uboVS.lodBias < 0.0f)
{
uboVS.lodBias = 0.0f;
}
if (uboVS.lodBias > cubeMap.mipLevels)
{
uboVS.lodBias = cubeMap.mipLevels;
}
updateUniformBuffers();
updateTextOverlay();
}
virtual void keyPressed(uint32_t keyCode) virtual void keyPressed(uint32_t keyCode)
{ {
switch (keyCode) switch (keyCode)
@ -729,17 +745,29 @@ public:
case GAMEPAD_BUTTON_X: case GAMEPAD_BUTTON_X:
toggleObject(); toggleObject();
break; break;
case 0x6B:
case GAMEPAD_BUTTON_R1:
changeLodBias(0.1f);
break;
case 0x6D:
case GAMEPAD_BUTTON_L1:
changeLodBias(-0.1f);
break;
} }
} }
virtual void getOverlayText(VulkanTextOverlay *textOverlay) virtual void getOverlayText(VulkanTextOverlay *textOverlay)
{ {
std::stringstream ss;
ss << std::setprecision(2) << std::fixed << uboVS.lodBias;
#if defined(__ANDROID__) #if defined(__ANDROID__)
textOverlay->addText("Press \"Button A\" to toggle skybox", 5.0f, 85.0f, VulkanTextOverlay::alignLeft); textOverlay->addText("Press \"Button A\" to toggle skybox", 5.0f, 85.0f, VulkanTextOverlay::alignLeft);
textOverlay->addText("Press \"Button X\" to toggle object", 5.0f, 100.0f, VulkanTextOverlay::alignLeft); textOverlay->addText("Press \"Button X\" to toggle object", 5.0f, 100.0f, VulkanTextOverlay::alignLeft);
textOverlay->addText("LOD bias: " + ss.str() + " (Buttons L1/R1 to change)", 5.0f, 115.0f, VulkanTextOverlay::alignLeft);
#else #else
textOverlay->addText("Press \"s\" to toggle skybox", 5.0f, 85.0f, VulkanTextOverlay::alignLeft); textOverlay->addText("Press \"s\" to toggle skybox", 5.0f, 85.0f, VulkanTextOverlay::alignLeft);
textOverlay->addText("Press \"space\" to toggle object", 5.0f, 100.0f, VulkanTextOverlay::alignLeft); textOverlay->addText("Press \"space\" to toggle object", 5.0f, 100.0f, VulkanTextOverlay::alignLeft);
textOverlay->addText("LOD bias: " + ss.str() + " (numpad +/- to change)", 5.0f, 115.0f, VulkanTextOverlay::alignLeft);
#endif #endif
} }
}; };