Archived
1
Fork 0

Only apply shadows to directional lights

This commit is contained in:
Joshua Goins 2018-12-19 20:11:07 -05:00
parent 57a2ae9c0a
commit ad38597505
2 changed files with 16 additions and 2 deletions

View file

@ -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;

View file

@ -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
{