Updated shaders, UI

This commit is contained in:
saschawillems 2018-09-04 21:18:14 +02:00
parent 0dd76f4ce3
commit 25e296be55
3 changed files with 22 additions and 15 deletions

View file

@ -4,16 +4,19 @@ layout (location = 0) in vec3 inPos;
layout (location = 1) in vec3 inNormal; layout (location = 1) in vec3 inNormal;
layout (location = 2) in vec3 inColor; layout (location = 2) in vec3 inColor;
layout (set = 0, binding = 0) uniform UBO layout (set = 0, binding = 0) uniform UBO {
{
mat4 projection; mat4 projection;
mat4 view;
mat4 model; mat4 model;
} ubo; } ubo;
layout (set = 1, binding = 0) uniform Node {
mat4 matrix;
} node;
layout(push_constant) uniform PushBlock { layout(push_constant) uniform PushBlock {
vec4 offset; vec4 baseColorFactor;
vec4 color; } material;
} pushBlock;
layout (location = 0) out vec3 outNormal; layout (location = 0) out vec3 outNormal;
layout (location = 1) out vec3 outColor; layout (location = 1) out vec3 outColor;
@ -28,14 +31,14 @@ out gl_PerVertex
void main() void main()
{ {
outNormal = inNormal; outNormal = inNormal;
outColor = inColor * pushBlock.color.rgb; outColor = material.baseColorFactor.rgb;
vec4 pos = vec4(inPos + pushBlock.offset.xyz, 1.0); vec4 pos = vec4(inPos, 1.0);
gl_Position = ubo.projection * ubo.model * pos; gl_Position = ubo.projection * ubo.view * ubo.model * node.matrix * pos;
outNormal = mat3(ubo.model) * inNormal; outNormal = mat3(ubo.view * ubo.model * node.matrix) * inNormal;
vec4 localpos = ubo.model * pos; vec4 localpos = ubo.view * ubo.model * node.matrix * pos;
vec3 lightPos = vec3(1.0f, -1.0f, 1.0f); vec3 lightPos = vec3(10.0f, -10.0f, 10.0f);
outLightVec = lightPos.xyz - localpos.xyz; outLightVec = lightPos.xyz - localpos.xyz;
outViewVec = -localpos.xyz; outViewVec = -localpos.xyz;
} }

View file

@ -38,7 +38,8 @@ public:
struct { struct {
glm::mat4 projection; glm::mat4 projection;
glm::mat4 modelview; glm::mat4 view;
glm::mat4 model;
} uboVS; } uboVS;
vks::Buffer uniformBuffer; vks::Buffer uniformBuffer;
@ -57,8 +58,8 @@ public:
settings.overlay = true; settings.overlay = true;
camera.type = Camera::CameraType::lookat; camera.type = Camera::CameraType::lookat;
camera.setPerspective(45.0f, (float)width / (float)height, 0.1f, 512.0f); camera.setPerspective(45.0f, (float)width / (float)height, 0.1f, 512.0f);
camera.setRotation(glm::vec3(-9.0f, -55.0f, 0.0f)); camera.setRotation(glm::vec3(-2.25f, -52.0f, 0.0f));
camera.setTranslation(glm::vec3(3.45f, 3.15f, -22.0f)); camera.setTranslation(glm::vec3(1.9f, -2.05f, -18.0f));
camera.rotationSpeed *= 0.25f; camera.rotationSpeed *= 0.25f;
/* /*
@ -267,7 +268,8 @@ public:
void updateUniformBuffers() void updateUniformBuffers()
{ {
uboVS.projection = camera.matrices.perspective; uboVS.projection = camera.matrices.perspective;
uboVS.modelview = glm::scale(camera.matrices.view, glm::vec3(0.1f , -0.1f, 0.1f)); uboVS.view = glm::scale(camera.matrices.view, glm::vec3(0.1f , -0.1f, 0.1f));
uboVS.model = glm::translate(glm::mat4(1.0f), scene.dimensions.min);
memcpy(uniformBuffer.mapped, &uboVS, sizeof(uboVS)); memcpy(uniformBuffer.mapped, &uboVS, sizeof(uboVS));
} }
@ -373,6 +375,7 @@ public:
} }
ImGui::NewLine(); ImGui::NewLine();
ImGui::BeginChild("InnerRegion", ImVec2(200.0f, 400.0f), false);
for (auto node : scene.linearNodes) { for (auto node : scene.linearNodes) {
// Add visibility toggle checkboxes for all model nodes with a mesh // Add visibility toggle checkboxes for all model nodes with a mesh
if (node->mesh) { if (node->mesh) {
@ -381,6 +384,7 @@ public:
} }
} }
} }
ImGui::EndChild();
} }
} }