You've already forked godot
mirror of
https://github.com/godotengine/godot.git
synced 2025-11-05 12:10:55 +00:00
Add layer slice support to render device and render buffers
This commit is contained in:
@@ -2294,7 +2294,7 @@ RID RenderingDeviceVulkan::texture_create_from_extension(TextureType p_type, Dat
|
||||
return id;
|
||||
}
|
||||
|
||||
RID RenderingDeviceVulkan::texture_create_shared_from_slice(const TextureView &p_view, RID p_with_texture, uint32_t p_layer, uint32_t p_mipmap, uint32_t p_mipmaps, TextureSliceType p_slice_type) {
|
||||
RID RenderingDeviceVulkan::texture_create_shared_from_slice(const TextureView &p_view, RID p_with_texture, uint32_t p_layer, uint32_t p_mipmap, uint32_t p_mipmaps, TextureSliceType p_slice_type, uint32_t p_layers) {
|
||||
_THREAD_SAFE_METHOD_
|
||||
|
||||
Texture *src_texture = texture_owner.get_or_null(p_with_texture);
|
||||
@@ -2322,7 +2322,11 @@ RID RenderingDeviceVulkan::texture_create_shared_from_slice(const TextureView &p
|
||||
ERR_FAIL_UNSIGNED_INDEX_V(p_layer, src_texture->layers, RID());
|
||||
|
||||
int slice_layers = 1;
|
||||
if (p_slice_type == TEXTURE_SLICE_2D_ARRAY) {
|
||||
if (p_layers != 0) {
|
||||
ERR_FAIL_COND_V_MSG(p_layers > 1 && p_slice_type != TEXTURE_SLICE_2D_ARRAY, RID(), "layer slicing only supported for 2D arrays");
|
||||
ERR_FAIL_COND_V_MSG(p_layer + p_layers > src_texture->layers, RID(), "layer slice is out of bounds");
|
||||
slice_layers = p_layers;
|
||||
} else if (p_slice_type == TEXTURE_SLICE_2D_ARRAY) {
|
||||
ERR_FAIL_COND_V_MSG(p_layer != 0, RID(), "layer must be 0 when obtaining a 2D array mipmap slice");
|
||||
slice_layers = src_texture->layers;
|
||||
} else if (p_slice_type == TEXTURE_SLICE_CUBEMAP) {
|
||||
|
||||
Reference in New Issue
Block a user