From ad385975056fbf74440e862db1e09061a2bb069e Mon Sep 17 00:00:00 2001 From: Joshua Goins Date: Wed, 19 Dec 2018 20:11:07 -0500 Subject: [PATCH] Only apply shadows to directional lights --- shaders/mesh.frag | 6 ++++-- src/renderer.cpp | 12 ++++++++++++ 2 files changed, 16 insertions(+), 2 deletions(-) diff --git a/shaders/mesh.frag b/shaders/mesh.frag index 0efe766..997183c 100644 --- a/shaders/mesh.frag +++ b/shaders/mesh.frag @@ -66,9 +66,8 @@ void main() { const vec3 norm = normalize(inNormal); const float diff = max(dot(norm, lightDir), 0.0); - const float shadow = shadowFilterPCF == 1 ? filterPCF(inShadowPos / inShadowPos.w) : textureProj(inShadowPos / inShadowPos.w, vec2(0, 0)); - vec3 add = vec3(diff) * lights[i].color.rgb * shadow; + vec3 add = vec3(diff) * lights[i].color.rgb; if(lights[i].position.w == 1) { const float radius = 15.0; @@ -78,6 +77,9 @@ void main() { att *= att; add *= att; + } else if(lights[i].position.w == 2) { + const float shadow = shadowFilterPCF == 1 ? filterPCF(inShadowPos / inShadowPos.w) : textureProj(inShadowPos / inShadowPos.w, vec2(0, 0)); + add *= shadow; } diffuse += add; diff --git a/src/renderer.cpp b/src/renderer.cpp index 3edc196..777885e 100644 --- a/src/renderer.cpp +++ b/src/renderer.cpp @@ -293,37 +293,49 @@ RenderTarget* Renderer::createSurfaceRenderTarget(VkSurfaceKHR surface, RenderTa } } + // offscreen target->offscreenColorImages = new VkImage[numFrameResources]; target->offscreenColorMemory = new VkDeviceMemory[numFrameResources]; target->offscreenColorImageViews = new VkImageView[numFrameResources]; + target->offscreenDepthImages = new VkImage[numFrameResources]; target->offscreenDepthMemory = new VkDeviceMemory[numFrameResources]; target->offscreenDepthImageViews = new VkImageView[numFrameResources]; + target->offscreenFramebuffers = new VkFramebuffer[numFrameResources]; + + // dof target->nearFieldImages = new VkImage[numFrameResources]; target->nearFieldMemory = new VkDeviceMemory[numFrameResources]; target->nearFieldImageViews = new VkImageView[numFrameResources]; target->nearFieldFramebuffers = new VkFramebuffer[numFrameResources]; + target->farFieldImages = new VkImage[numFrameResources]; target->farFieldMemory = new VkDeviceMemory[numFrameResources]; target->farFieldImageViews = new VkImageView[numFrameResources]; target->farFieldFramebuffers = new VkFramebuffer[numFrameResources]; + + // smaa target->edgeImages = new VkImage[numFrameResources]; target->edgeMemorys = new VkDeviceMemory[numFrameResources]; target->edgeImageViews = new VkImageView[numFrameResources]; target->edgeFramebuffers = new VkFramebuffer[numFrameResources]; target->edgeDescriptorSets = new VkDescriptorSet[numFrameResources]; + target->blendImages = new VkImage[numFrameResources]; target->blendMemorys = new VkDeviceMemory[numFrameResources]; target->blendImageViews = new VkImageView[numFrameResources]; target->blendFramebuffers = new VkFramebuffer[numFrameResources]; target->blendDescriptorSets = new VkDescriptorSet[numFrameResources]; + + // imgui target->imguiVertexBuffers = new VkBuffer[numFrameResources]; target->imguiVertexMemorys = new VkDeviceMemory[numFrameResources]; target->imguiVertexBufferSizes = new size_t[numFrameResources]; target->imguiIndexBuffers = new VkBuffer[numFrameResources]; target->imguiIndexMemorys = new VkDeviceMemory[numFrameResources]; target->imguiIndexBufferSizes = new size_t[numFrameResources]; + for(uint32_t i = 0; i < numFrameResources; i++) { // offscreen image {