diff --git a/Renderer/Pipeline.cpp b/Renderer/Pipeline.cpp index 24745ce..33e7455 100644 --- a/Renderer/Pipeline.cpp +++ b/Renderer/Pipeline.cpp @@ -93,7 +93,7 @@ GraphicsPipeline::GraphicsPipeline(vk::Device dev, const std::vector& sh const auto raster_info = vk::PipelineRasterizationStateCreateInfo { .depthClampEnable = vk::False, - .polygonMode = type == Type::eGLTF? vk::PolygonMode::eFill : vk::PolygonMode::eLine, + .polygonMode = type == Type::eGLTF? vk::PolygonMode::eFill : vk::PolygonMode::eFill, .cullMode = vk::CullModeFlagBits::eNone, .frontFace = Type::eGLTF ? vk::FrontFace::eClockwise : vk::FrontFace::eCounterClockwise, .depthBiasEnable = vk::False, diff --git a/Renderer/Renderer.cpp b/Renderer/Renderer.cpp index d1790e9..6d88e28 100644 --- a/Renderer/Renderer.cpp +++ b/Renderer/Renderer.cpp @@ -230,7 +230,7 @@ Renderer::Renderer(Window& win) : win(win) { { dev, "assets/shaders/terrain.vert.spv", vk::ShaderStageFlagBits::eVertex }, { dev, "assets/shaders/terrain.tesc.spv", vk::ShaderStageFlagBits::eTessellationControl }, { dev, "assets/shaders/terrain.tese.spv", vk::ShaderStageFlagBits::eTessellationEvaluation }, - { dev, "assets/shaders/terrain.frag.spv", vk::ShaderStageFlagBits::eFragment }, + { dev, "assets/shaders/gooch.frag.spv", vk::ShaderStageFlagBits::eFragment }, }; terrain_pipeline = std::make_unique(dev, terrain_shaders, swapchain->extent, *render_pass, bindings, *terrain->vertex_buffer, GraphicsPipeline::eTERRAIN); diff --git a/Scene/Terrain.cpp b/Scene/Terrain.cpp index 00c8cef..5a5c2aa 100644 --- a/Scene/Terrain.cpp +++ b/Scene/Terrain.cpp @@ -73,7 +73,7 @@ Terrain::Terrain(vk::PhysicalDevice phys_dev, vk::Device dev, Texture& tex) : ph - moores_heights[0][2] - 2.0f * moores_heights[1][2] - moores_heights[2][2] ); /* fill in missing component, first scalar scales bump */ - normal.y = 0.25 * glm::sqrt(glm::abs(1.0 - normal.x*normal.x - normal.z*normal.z)); + normal.y = 15.0 * glm::sqrt(glm::abs(1.0 - normal.x*normal.x - normal.z*normal.z)); vertices[x + y * patch_size].norm = glm::normalize(normal * glm::vec3(2.0f, 1.0f, 2.0f)); diff --git a/UI/UI.cpp b/UI/UI.cpp index 8a84fb4..922f228 100644 --- a/UI/UI.cpp +++ b/UI/UI.cpp @@ -92,7 +92,7 @@ void UI::newFrame() { ImGui::Text("FPS: %f", info.fps); ImGui::Text("Time: %f", info.time); ImGui::Checkbox("Fly Camera", &info.flycam); - ImGui::SliderFloat("Tessellation Factor", &info.tess_factor, 0.0, 100.0); + ImGui::SliderFloat("Tessellation Factor", &info.tess_factor, 0.1, 10.0); ImGui::SliderFloat("Edge Size", &info.tess_edge_size, 0.0, 40.0); ImGui::End(); diff --git a/assets/shaders/gooch.frag b/assets/shaders/gooch.frag index 8a271a5..a60982a 100644 --- a/assets/shaders/gooch.frag +++ b/assets/shaders/gooch.frag @@ -6,9 +6,14 @@ layout (location = 2) in vec3 pos; layout (location = 0) out vec4 FragColor; layout (set = 0, binding = 0) uniform Matrices { - mat4 mvp; + mat4 view; + mat4 proj; float time; vec3 cam_pos; + vec4 frustum[6]; + vec2 viewport; + float tess_factor; + float tess_edge_size; }; layout (set = 0, binding = 1) uniform sampler2D tex; diff --git a/assets/shaders/gooch.frag.spv b/assets/shaders/gooch.frag.spv index f900846..92ef58f 100644 Binary files a/assets/shaders/gooch.frag.spv and b/assets/shaders/gooch.frag.spv differ diff --git a/assets/shaders/terrain.frag b/assets/shaders/terrain.frag index f312305..b12905f 100644 --- a/assets/shaders/terrain.frag +++ b/assets/shaders/terrain.frag @@ -16,13 +16,19 @@ layout (set = 0, binding = 0) uniform Matrices { float tess_edge_size; }; -layout (set = 0, binding = 1) uniform sampler2D tex; +layout (set = 0, binding = 1) uniform sampler2D heightmap; + +float height(vec2 uv) { + return 15.0 * texture(heightmap, uv).r; +} void main() { + vec3 N = norm; + vec3 light_pos = normalize(vec3(cos(time), sin(time), 0.0))*10.0; vec3 L = normalize(light_pos-pos); float r = length(light_pos-pos); - float t = clamp(dot(L, norm), 0.0, 1.0) * 20.0/(r*r); + float t = clamp(dot(L, N), 0.0, 1.0) * 20.0/(r*r); FragColor = vec4(1.0); } \ No newline at end of file diff --git a/assets/shaders/terrain.frag.spv b/assets/shaders/terrain.frag.spv index f41ddc0..21e7eb4 100644 Binary files a/assets/shaders/terrain.frag.spv and b/assets/shaders/terrain.frag.spv differ