Only apply shadows to directional lights
This commit is contained in:
parent
57a2ae9c0a
commit
ad38597505
2 changed files with 16 additions and 2 deletions
|
@ -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;
|
||||
|
|
|
@ -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
|
||||
{
|
||||
|
|
Reference in a new issue