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 vec3 norm = normalize(inNormal);
|
||||||
|
|
||||||
const float diff = max(dot(norm, lightDir), 0.0);
|
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) {
|
if(lights[i].position.w == 1) {
|
||||||
const float radius = 15.0;
|
const float radius = 15.0;
|
||||||
|
@ -78,6 +77,9 @@ void main() {
|
||||||
att *= att;
|
att *= att;
|
||||||
|
|
||||||
add *= 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;
|
diffuse += add;
|
||||||
|
|
|
@ -293,37 +293,49 @@ RenderTarget* Renderer::createSurfaceRenderTarget(VkSurfaceKHR surface, RenderTa
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// offscreen
|
||||||
target->offscreenColorImages = new VkImage[numFrameResources];
|
target->offscreenColorImages = new VkImage[numFrameResources];
|
||||||
target->offscreenColorMemory = new VkDeviceMemory[numFrameResources];
|
target->offscreenColorMemory = new VkDeviceMemory[numFrameResources];
|
||||||
target->offscreenColorImageViews = new VkImageView[numFrameResources];
|
target->offscreenColorImageViews = new VkImageView[numFrameResources];
|
||||||
|
|
||||||
target->offscreenDepthImages = new VkImage[numFrameResources];
|
target->offscreenDepthImages = new VkImage[numFrameResources];
|
||||||
target->offscreenDepthMemory = new VkDeviceMemory[numFrameResources];
|
target->offscreenDepthMemory = new VkDeviceMemory[numFrameResources];
|
||||||
target->offscreenDepthImageViews = new VkImageView[numFrameResources];
|
target->offscreenDepthImageViews = new VkImageView[numFrameResources];
|
||||||
|
|
||||||
target->offscreenFramebuffers = new VkFramebuffer[numFrameResources];
|
target->offscreenFramebuffers = new VkFramebuffer[numFrameResources];
|
||||||
|
|
||||||
|
// dof
|
||||||
target->nearFieldImages = new VkImage[numFrameResources];
|
target->nearFieldImages = new VkImage[numFrameResources];
|
||||||
target->nearFieldMemory = new VkDeviceMemory[numFrameResources];
|
target->nearFieldMemory = new VkDeviceMemory[numFrameResources];
|
||||||
target->nearFieldImageViews = new VkImageView[numFrameResources];
|
target->nearFieldImageViews = new VkImageView[numFrameResources];
|
||||||
target->nearFieldFramebuffers = new VkFramebuffer[numFrameResources];
|
target->nearFieldFramebuffers = new VkFramebuffer[numFrameResources];
|
||||||
|
|
||||||
target->farFieldImages = new VkImage[numFrameResources];
|
target->farFieldImages = new VkImage[numFrameResources];
|
||||||
target->farFieldMemory = new VkDeviceMemory[numFrameResources];
|
target->farFieldMemory = new VkDeviceMemory[numFrameResources];
|
||||||
target->farFieldImageViews = new VkImageView[numFrameResources];
|
target->farFieldImageViews = new VkImageView[numFrameResources];
|
||||||
target->farFieldFramebuffers = new VkFramebuffer[numFrameResources];
|
target->farFieldFramebuffers = new VkFramebuffer[numFrameResources];
|
||||||
|
|
||||||
|
// smaa
|
||||||
target->edgeImages = new VkImage[numFrameResources];
|
target->edgeImages = new VkImage[numFrameResources];
|
||||||
target->edgeMemorys = new VkDeviceMemory[numFrameResources];
|
target->edgeMemorys = new VkDeviceMemory[numFrameResources];
|
||||||
target->edgeImageViews = new VkImageView[numFrameResources];
|
target->edgeImageViews = new VkImageView[numFrameResources];
|
||||||
target->edgeFramebuffers = new VkFramebuffer[numFrameResources];
|
target->edgeFramebuffers = new VkFramebuffer[numFrameResources];
|
||||||
target->edgeDescriptorSets = new VkDescriptorSet[numFrameResources];
|
target->edgeDescriptorSets = new VkDescriptorSet[numFrameResources];
|
||||||
|
|
||||||
target->blendImages = new VkImage[numFrameResources];
|
target->blendImages = new VkImage[numFrameResources];
|
||||||
target->blendMemorys = new VkDeviceMemory[numFrameResources];
|
target->blendMemorys = new VkDeviceMemory[numFrameResources];
|
||||||
target->blendImageViews = new VkImageView[numFrameResources];
|
target->blendImageViews = new VkImageView[numFrameResources];
|
||||||
target->blendFramebuffers = new VkFramebuffer[numFrameResources];
|
target->blendFramebuffers = new VkFramebuffer[numFrameResources];
|
||||||
target->blendDescriptorSets = new VkDescriptorSet[numFrameResources];
|
target->blendDescriptorSets = new VkDescriptorSet[numFrameResources];
|
||||||
|
|
||||||
|
// imgui
|
||||||
target->imguiVertexBuffers = new VkBuffer[numFrameResources];
|
target->imguiVertexBuffers = new VkBuffer[numFrameResources];
|
||||||
target->imguiVertexMemorys = new VkDeviceMemory[numFrameResources];
|
target->imguiVertexMemorys = new VkDeviceMemory[numFrameResources];
|
||||||
target->imguiVertexBufferSizes = new size_t[numFrameResources];
|
target->imguiVertexBufferSizes = new size_t[numFrameResources];
|
||||||
target->imguiIndexBuffers = new VkBuffer[numFrameResources];
|
target->imguiIndexBuffers = new VkBuffer[numFrameResources];
|
||||||
target->imguiIndexMemorys = new VkDeviceMemory[numFrameResources];
|
target->imguiIndexMemorys = new VkDeviceMemory[numFrameResources];
|
||||||
target->imguiIndexBufferSizes = new size_t[numFrameResources];
|
target->imguiIndexBufferSizes = new size_t[numFrameResources];
|
||||||
|
|
||||||
for(uint32_t i = 0; i < numFrameResources; i++) {
|
for(uint32_t i = 0; i < numFrameResources; i++) {
|
||||||
// offscreen image
|
// offscreen image
|
||||||
{
|
{
|
||||||
|
|
Reference in a new issue