From 384b43c203bf0b3f622a1af92af87229b02a0d22 Mon Sep 17 00:00:00 2001 From: Jonathan Wilson <jonathandw414@gmail.com> Date: Sat, 9 Dec 2023 21:30:22 +0000 Subject: [PATCH 01/10] storagebuffercontent and uniformbuffercontent traits --- src/core/buffers.rs | 30 ++++++++++++++++++++++++++++++ 1 file changed, 30 insertions(+) diff --git a/src/core/buffers.rs b/src/core/buffers.rs index 7720dac..ced97a2 100644 --- a/src/core/buffers.rs +++ b/src/core/buffers.rs @@ -315,3 +315,33 @@ impl<B: BufferRef> DynamicUniformBuffer<B> { self.inner.create() } } + +trait StorageBufferContent { + fn buffer_content(&self) -> Vec<u8>; +} + +impl<T> StorageBufferContent for T +where + T: ShaderType + WriteInto, +{ + fn buffer_content(&self) -> Vec<u8> { + let mut buffer = StorageBuffer::new(Vec::new()); + buffer.write(self).unwrap(); + buffer.into_inner() + } +} + +trait UniformBufferContent { + fn buffer_content(&self) -> Vec<u8>; +} + +impl<T> UniformBufferContent for T +where + T: ShaderType + WriteInto, +{ + fn buffer_content(&self) -> Vec<u8> { + let mut buffer = UniformBuffer::new(Vec::new()); + buffer.write(self).unwrap(); + buffer.into_inner() + } +} From 477570284ec97940995d5c4bb606e3291a5399c1 Mon Sep 17 00:00:00 2001 From: Jonathan Wilson <jonathandw414@gmail.com> Date: Sat, 9 Dec 2023 21:34:58 +0000 Subject: [PATCH 02/10] pub --- src/core/buffers.rs | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/core/buffers.rs b/src/core/buffers.rs index ced97a2..c1d58a1 100644 --- a/src/core/buffers.rs +++ b/src/core/buffers.rs @@ -316,7 +316,7 @@ impl<B: BufferRef> DynamicUniformBuffer<B> { } } -trait StorageBufferContent { +pub trait StorageBufferContent { fn buffer_content(&self) -> Vec<u8>; } @@ -331,7 +331,7 @@ where } } -trait UniformBufferContent { +pub trait UniformBufferContent { fn buffer_content(&self) -> Vec<u8>; } From 74d692410253a91bf7448ee72702ed09c4c5748a Mon Sep 17 00:00:00 2001 From: Jonathan Wilson <jonathandw414@gmail.com> Date: Sat, 9 Dec 2023 21:47:14 +0000 Subject: [PATCH 03/10] method name change --- src/core/buffers.rs | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/src/core/buffers.rs b/src/core/buffers.rs index c1d58a1..67ce5df 100644 --- a/src/core/buffers.rs +++ b/src/core/buffers.rs @@ -317,14 +317,14 @@ impl<B: BufferRef> DynamicUniformBuffer<B> { } pub trait StorageBufferContent { - fn buffer_content(&self) -> Vec<u8>; + fn storage_buffer_content(&self) -> Vec<u8>; } impl<T> StorageBufferContent for T where T: ShaderType + WriteInto, { - fn buffer_content(&self) -> Vec<u8> { + fn storage_buffer_content(&self) -> Vec<u8> { let mut buffer = StorageBuffer::new(Vec::new()); buffer.write(self).unwrap(); buffer.into_inner() @@ -332,14 +332,14 @@ where } pub trait UniformBufferContent { - fn buffer_content(&self) -> Vec<u8>; + fn uniform_buffer_content(&self) -> Vec<u8>; } impl<T> UniformBufferContent for T where T: ShaderType + WriteInto, { - fn buffer_content(&self) -> Vec<u8> { + fn uniform_buffer_content(&self) -> Vec<u8> { let mut buffer = UniformBuffer::new(Vec::new()); buffer.write(self).unwrap(); buffer.into_inner() From 8cfa2ec37436f25e958a3323a8cb102bb1cf5ea8 Mon Sep 17 00:00:00 2001 From: Jonathan Wilson <jonathandw414@gmail.com> Date: Sat, 9 Dec 2023 22:17:31 +0000 Subject: [PATCH 04/10] grouped --- src/core/buffers.rs | 14 +++----------- src/lib.rs | 4 ++-- 2 files changed, 5 insertions(+), 13 deletions(-) diff --git a/src/core/buffers.rs b/src/core/buffers.rs index 67ce5df..0cd8a39 100644 --- a/src/core/buffers.rs +++ b/src/core/buffers.rs @@ -316,11 +316,12 @@ impl<B: BufferRef> DynamicUniformBuffer<B> { } } -pub trait StorageBufferContent { +pub trait BufferContent { fn storage_buffer_content(&self) -> Vec<u8>; + fn uniform_buffer_content(&self) -> Vec<u8>; } -impl<T> StorageBufferContent for T +impl<T> BufferContent for T where T: ShaderType + WriteInto, { @@ -329,16 +330,7 @@ where buffer.write(self).unwrap(); buffer.into_inner() } -} - -pub trait UniformBufferContent { - fn uniform_buffer_content(&self) -> Vec<u8>; -} -impl<T> UniformBufferContent for T -where - T: ShaderType + WriteInto, -{ fn uniform_buffer_content(&self) -> Vec<u8> { let mut buffer = UniformBuffer::new(Vec::new()); buffer.write(self).unwrap(); diff --git a/src/lib.rs b/src/lib.rs index 266fd6b..c080192 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -102,8 +102,8 @@ mod types; mod impls; pub use crate::core::{ - CalculateSizeFor, DynamicStorageBuffer, DynamicUniformBuffer, ShaderSize, ShaderType, - StorageBuffer, UniformBuffer, + BufferContent, CalculateSizeFor, DynamicStorageBuffer, DynamicUniformBuffer, ShaderSize, + ShaderType, StorageBuffer, UniformBuffer, }; pub use types::runtime_sized_array::ArrayLength; From 701284c2ec9363511f4d2b81d614c2bb265d24ab Mon Sep 17 00:00:00 2001 From: Jonathan Wilson <85790952+jonathandw743@users.noreply.github.com> Date: Sun, 14 Apr 2024 20:21:47 +0100 Subject: [PATCH 05/10] BufferContent -> ToBufferContent Co-authored-by: Teodor Tanasoaia <28601907+teoxoy@users.noreply.github.com> --- src/core/buffers.rs | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/core/buffers.rs b/src/core/buffers.rs index 0cd8a39..6a49b0e 100644 --- a/src/core/buffers.rs +++ b/src/core/buffers.rs @@ -316,9 +316,9 @@ impl<B: BufferRef> DynamicUniformBuffer<B> { } } -pub trait BufferContent { - fn storage_buffer_content(&self) -> Vec<u8>; - fn uniform_buffer_content(&self) -> Vec<u8>; +pub trait ToBufferContent { + fn to_storage_buffer_content(&self) -> Vec<u8>; + fn to_uniform_buffer_content(&self) -> Vec<u8>; } impl<T> BufferContent for T From c3a7e5229de15432079a30c4cdcfb39a5f560713 Mon Sep 17 00:00:00 2001 From: jonathandw743 <jonathandw414@gmail.com> Date: Sun, 14 Apr 2024 20:26:09 +0100 Subject: [PATCH 06/10] rename BufferContent to ToBufferContent --- src/core/buffers.rs | 6 +++--- src/lib.rs | 2 +- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/src/core/buffers.rs b/src/core/buffers.rs index 6a49b0e..05833c9 100644 --- a/src/core/buffers.rs +++ b/src/core/buffers.rs @@ -321,17 +321,17 @@ pub trait ToBufferContent { fn to_uniform_buffer_content(&self) -> Vec<u8>; } -impl<T> BufferContent for T +impl<T> ToBufferContent for T where T: ShaderType + WriteInto, { - fn storage_buffer_content(&self) -> Vec<u8> { + fn to_storage_buffer_content(&self) -> Vec<u8> { let mut buffer = StorageBuffer::new(Vec::new()); buffer.write(self).unwrap(); buffer.into_inner() } - fn uniform_buffer_content(&self) -> Vec<u8> { + fn to_uniform_buffer_content(&self) -> Vec<u8> { let mut buffer = UniformBuffer::new(Vec::new()); buffer.write(self).unwrap(); buffer.into_inner() diff --git a/src/lib.rs b/src/lib.rs index c080192..b2127dc 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -102,7 +102,7 @@ mod types; mod impls; pub use crate::core::{ - BufferContent, CalculateSizeFor, DynamicStorageBuffer, DynamicUniformBuffer, ShaderSize, + ToBufferContent, CalculateSizeFor, DynamicStorageBuffer, DynamicUniformBuffer, ShaderSize, ShaderType, StorageBuffer, UniformBuffer, }; pub use types::runtime_sized_array::ArrayLength; From 465a678b393058c5f25a01cde5487c262c8a357a Mon Sep 17 00:00:00 2001 From: jonathandw743 <jonathandw414@gmail.com> Date: Sun, 14 Apr 2024 20:34:49 +0100 Subject: [PATCH 07/10] formatting --- src/lib.rs | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/lib.rs b/src/lib.rs index b2127dc..e64db08 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -102,8 +102,8 @@ mod types; mod impls; pub use crate::core::{ - ToBufferContent, CalculateSizeFor, DynamicStorageBuffer, DynamicUniformBuffer, ShaderSize, - ShaderType, StorageBuffer, UniformBuffer, + CalculateSizeFor, DynamicStorageBuffer, DynamicUniformBuffer, ShaderSize, ShaderType, + StorageBuffer, ToBufferContent, UniformBuffer, }; pub use types::runtime_sized_array::ArrayLength; From 8a45bc7ea4e0c7996e770908402adaabec9fb59c Mon Sep 17 00:00:00 2001 From: jonathandw743 <jonathandw414@gmail.com> Date: Wed, 11 Dec 2024 21:17:48 +0000 Subject: [PATCH 08/10] moved function into Buffer impls --- src/core/buffers.rs | 34 ++++++++++++---------------------- 1 file changed, 12 insertions(+), 22 deletions(-) diff --git a/src/core/buffers.rs b/src/core/buffers.rs index 05833c9..dafd4f3 100644 --- a/src/core/buffers.rs +++ b/src/core/buffers.rs @@ -16,6 +16,12 @@ impl<B> StorageBuffer<B> { pub fn into_inner(self) -> B { self.inner } + + pub fn content_of<T: ShaderType + WriteInto>(item: &T) -> Result<Vec<u8>> { + let mut buffer = StorageBuffer::new(Vec::new()); + buffer.write(item)?; + Ok(buffer.into_inner()) + } } impl<B> From<B> for StorageBuffer<B> { @@ -81,6 +87,12 @@ impl<B> UniformBuffer<B> { pub fn into_inner(self) -> B { self.inner.inner } + + pub fn to_uniform_buffer_content<T: ShaderType + WriteInto>(item: &T) -> Result<Vec<u8>> { + let mut buffer = UniformBuffer::new(Vec::new()); + buffer.write(item)?; + Ok(buffer.into_inner()) + } } impl<B> From<B> for UniformBuffer<B> { @@ -315,25 +327,3 @@ impl<B: BufferRef> DynamicUniformBuffer<B> { self.inner.create() } } - -pub trait ToBufferContent { - fn to_storage_buffer_content(&self) -> Vec<u8>; - fn to_uniform_buffer_content(&self) -> Vec<u8>; -} - -impl<T> ToBufferContent for T -where - T: ShaderType + WriteInto, -{ - fn to_storage_buffer_content(&self) -> Vec<u8> { - let mut buffer = StorageBuffer::new(Vec::new()); - buffer.write(self).unwrap(); - buffer.into_inner() - } - - fn to_uniform_buffer_content(&self) -> Vec<u8> { - let mut buffer = UniformBuffer::new(Vec::new()); - buffer.write(self).unwrap(); - buffer.into_inner() - } -} From c0fc0c442ecfd8837bbe7f668552fa09ce3f0044 Mon Sep 17 00:00:00 2001 From: jonathandw743 <jonathandw414@gmail.com> Date: Wed, 11 Dec 2024 21:25:56 +0000 Subject: [PATCH 09/10] works with Boxed slices --- src/core/buffers.rs | 16 ++++++++++++---- 1 file changed, 12 insertions(+), 4 deletions(-) diff --git a/src/core/buffers.rs b/src/core/buffers.rs index dafd4f3..b283585 100644 --- a/src/core/buffers.rs +++ b/src/core/buffers.rs @@ -17,8 +17,12 @@ impl<B> StorageBuffer<B> { self.inner } - pub fn content_of<T: ShaderType + WriteInto>(item: &T) -> Result<Vec<u8>> { - let mut buffer = StorageBuffer::new(Vec::new()); + pub fn content_of<T, U>(item: &T) -> Result<U> + where + T: ShaderType + WriteInto, + U: BufferMut + Default, + { + let mut buffer = StorageBuffer::new(U::default()); buffer.write(item)?; Ok(buffer.into_inner()) } @@ -88,8 +92,12 @@ impl<B> UniformBuffer<B> { self.inner.inner } - pub fn to_uniform_buffer_content<T: ShaderType + WriteInto>(item: &T) -> Result<Vec<u8>> { - let mut buffer = UniformBuffer::new(Vec::new()); + pub fn content_of<T, U>(item: &T) -> Result<U> + where + T: ShaderType + WriteInto, + U: BufferMut + Default, + { + let mut buffer = UniformBuffer::new(U::default()); buffer.write(item)?; Ok(buffer.into_inner()) } From 3a8738e0000539ab2b3d364d34528500c2a892df Mon Sep 17 00:00:00 2001 From: jonathandw743 <jonathandw414@gmail.com> Date: Wed, 11 Dec 2024 21:27:07 +0000 Subject: [PATCH 10/10] removed pub use trait --- src/lib.rs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/lib.rs b/src/lib.rs index e64db08..266fd6b 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -103,7 +103,7 @@ mod impls; pub use crate::core::{ CalculateSizeFor, DynamicStorageBuffer, DynamicUniformBuffer, ShaderSize, ShaderType, - StorageBuffer, ToBufferContent, UniformBuffer, + StorageBuffer, UniformBuffer, }; pub use types::runtime_sized_array::ArrayLength;