You've already forked godot
mirror of
https://github.com/godotengine/godot.git
synced 2025-11-07 12:30:27 +00:00
Rationalize certain cases of texture usage flags
- Check for exhaustive usage flags for depth buffer - Remove uneeded storage flag from normal-roughness buffer
This commit is contained in:
@@ -345,7 +345,7 @@ void RenderForwardClustered::RenderBufferDataForwardClustered::configure(RID p_c
|
|||||||
|
|
||||||
color_msaa = RD::get_singleton()->texture_create(tf, RD::TextureView());
|
color_msaa = RD::get_singleton()->texture_create(tf, RD::TextureView());
|
||||||
|
|
||||||
tf.format = RD::get_singleton()->texture_is_format_supported_for_usage(RD::DATA_FORMAT_D24_UNORM_S8_UINT, RD::TEXTURE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT) ? RD::DATA_FORMAT_D24_UNORM_S8_UINT : RD::DATA_FORMAT_D32_SFLOAT_S8_UINT;
|
tf.format = RD::get_singleton()->texture_is_format_supported_for_usage(RD::DATA_FORMAT_D24_UNORM_S8_UINT, RD::TEXTURE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT | RD::TEXTURE_USAGE_SAMPLING_BIT) ? RD::DATA_FORMAT_D24_UNORM_S8_UINT : RD::DATA_FORMAT_D32_SFLOAT_S8_UINT;
|
||||||
tf.usage_bits = RD::TEXTURE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT | RD::TEXTURE_USAGE_CAN_COPY_FROM_BIT | RD::TEXTURE_USAGE_SAMPLING_BIT;
|
tf.usage_bits = RD::TEXTURE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT | RD::TEXTURE_USAGE_CAN_COPY_FROM_BIT | RD::TEXTURE_USAGE_SAMPLING_BIT;
|
||||||
|
|
||||||
depth_msaa = RD::get_singleton()->texture_create(tf, RD::TextureView());
|
depth_msaa = RD::get_singleton()->texture_create(tf, RD::TextureView());
|
||||||
@@ -435,7 +435,7 @@ void RenderForwardClustered::_allocate_normal_roughness_texture(RenderBufferData
|
|||||||
tf.usage_bits = RD::TEXTURE_USAGE_SAMPLING_BIT | RD::TEXTURE_USAGE_STORAGE_BIT;
|
tf.usage_bits = RD::TEXTURE_USAGE_SAMPLING_BIT | RD::TEXTURE_USAGE_STORAGE_BIT;
|
||||||
|
|
||||||
if (rb->msaa != RS::VIEWPORT_MSAA_DISABLED) {
|
if (rb->msaa != RS::VIEWPORT_MSAA_DISABLED) {
|
||||||
tf.usage_bits |= RD::TEXTURE_USAGE_CAN_COPY_TO_BIT | RD::TEXTURE_USAGE_STORAGE_BIT;
|
tf.usage_bits |= RD::TEXTURE_USAGE_CAN_COPY_TO_BIT;
|
||||||
} else {
|
} else {
|
||||||
tf.usage_bits |= RD::TEXTURE_USAGE_COLOR_ATTACHMENT_BIT;
|
tf.usage_bits |= RD::TEXTURE_USAGE_COLOR_ATTACHMENT_BIT;
|
||||||
}
|
}
|
||||||
@@ -448,7 +448,7 @@ void RenderForwardClustered::_allocate_normal_roughness_texture(RenderBufferData
|
|||||||
fb.push_back(rb->normal_roughness_buffer);
|
fb.push_back(rb->normal_roughness_buffer);
|
||||||
rb->depth_normal_roughness_fb = RD::get_singleton()->framebuffer_create(fb, RD::INVALID_ID, rb->view_count);
|
rb->depth_normal_roughness_fb = RD::get_singleton()->framebuffer_create(fb, RD::INVALID_ID, rb->view_count);
|
||||||
} else {
|
} else {
|
||||||
tf.usage_bits = RD::TEXTURE_USAGE_COLOR_ATTACHMENT_BIT | RD::TEXTURE_USAGE_CAN_COPY_FROM_BIT | RD::TEXTURE_USAGE_SAMPLING_BIT | RD::TEXTURE_USAGE_STORAGE_BIT;
|
tf.usage_bits = RD::TEXTURE_USAGE_COLOR_ATTACHMENT_BIT | RD::TEXTURE_USAGE_CAN_COPY_FROM_BIT | RD::TEXTURE_USAGE_SAMPLING_BIT;
|
||||||
tf.samples = rb->texture_samples;
|
tf.samples = rb->texture_samples;
|
||||||
rb->normal_roughness_buffer_msaa = RD::get_singleton()->texture_create(tf, RD::TextureView());
|
rb->normal_roughness_buffer_msaa = RD::get_singleton()->texture_create(tf, RD::TextureView());
|
||||||
|
|
||||||
|
|||||||
@@ -3097,7 +3097,7 @@ void RendererSceneRenderRD::render_buffers_configure(RID p_render_buffers, RID p
|
|||||||
tf.texture_type = RD::TEXTURE_TYPE_2D_ARRAY;
|
tf.texture_type = RD::TEXTURE_TYPE_2D_ARRAY;
|
||||||
}
|
}
|
||||||
if (rb->msaa == RS::VIEWPORT_MSAA_DISABLED) {
|
if (rb->msaa == RS::VIEWPORT_MSAA_DISABLED) {
|
||||||
tf.format = RD::get_singleton()->texture_is_format_supported_for_usage(RD::DATA_FORMAT_D24_UNORM_S8_UINT, RD::TEXTURE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT) ? RD::DATA_FORMAT_D24_UNORM_S8_UINT : RD::DATA_FORMAT_D32_SFLOAT_S8_UINT;
|
tf.format = RD::get_singleton()->texture_is_format_supported_for_usage(RD::DATA_FORMAT_D24_UNORM_S8_UINT, (RD::TEXTURE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT | RD::TEXTURE_USAGE_SAMPLING_BIT)) ? RD::DATA_FORMAT_D24_UNORM_S8_UINT : RD::DATA_FORMAT_D32_SFLOAT_S8_UINT;
|
||||||
} else {
|
} else {
|
||||||
tf.format = RD::DATA_FORMAT_R32_SFLOAT;
|
tf.format = RD::DATA_FORMAT_R32_SFLOAT;
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user