Skip to content

Commit 2926726

Browse files
committed
[refactor] both the shader and shader assembler.
1 parent d2db132 commit 2926726

2 files changed

Lines changed: 36 additions & 40 deletions

File tree

Lines changed: 19 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -1,21 +1,4 @@
1-
pub mod internal {
2-
pub use gfx_hal::{
3-
pso::{
4-
EntryPoint,
5-
InputAssemblerDesc,
6-
Primitive,
7-
PrimitiveAssemblerDesc,
8-
},
9-
Backend,
10-
};
11-
12-
#[inline]
13-
pub fn into_primitive_assembler<'shader, RenderBackend: Backend>(
14-
primitive_assembler: super::PrimitiveAssembler<'shader, RenderBackend>,
15-
) -> PrimitiveAssemblerDesc<'shader, RenderBackend> {
16-
return primitive_assembler.primitive_assembler;
17-
}
18-
}
1+
use gfx_hal::pso;
192

203
/// PrimitiveAssemblerBuilder for preparing PrimitiveAssemblers to use in the
214
/// lambda-platform Rendering pipeline.
@@ -32,14 +15,13 @@ impl PrimitiveAssemblerBuilder {
3215
self,
3316
vertex_shader: &'shader super::shader::ShaderModule<RenderBackend>,
3417
) -> PrimitiveAssembler<'shader, RenderBackend> {
35-
// TODO(vmarcella): The builder should expose more fields for the
36-
let primitive_assembler = internal::PrimitiveAssemblerDesc::Vertex {
18+
let primitive_assembler = pso::PrimitiveAssemblerDesc::Vertex {
3719
buffers: &[],
3820
attributes: &[],
39-
input_assembler: internal::InputAssemblerDesc::new(
40-
internal::Primitive::TriangleList,
21+
input_assembler: pso::InputAssemblerDesc::new(
22+
pso::Primitive::TriangleList,
4123
),
42-
vertex: internal::EntryPoint {
24+
vertex: pso::EntryPoint {
4325
entry: vertex_shader.entry(),
4426
module: super::internal::module_for(vertex_shader),
4527
specialization: vertex_shader.specializations().clone(),
@@ -57,11 +39,22 @@ impl PrimitiveAssemblerBuilder {
5739
/// PrimitiveAssembler for used for describing how Vertex Shaders should
5840
/// construct primitives. Each constructed Primitive Assembler should be alive
5941
/// for as long as the shader module that created it is.
60-
pub struct PrimitiveAssembler<'shader, RenderBackend: internal::Backend> {
61-
primitive_assembler: internal::PrimitiveAssemblerDesc<'shader, RenderBackend>,
42+
pub struct PrimitiveAssembler<'shader, RenderBackend: gfx_hal::Backend> {
43+
primitive_assembler: pso::PrimitiveAssemblerDesc<'shader, RenderBackend>,
6244
}
6345

64-
impl<'shader, RenderBackend: internal::Backend>
46+
impl<'shader, RenderBackend: gfx_hal::Backend>
6547
PrimitiveAssembler<'shader, RenderBackend>
6648
{
6749
}
50+
51+
/// Internal functions for the primitive assembler. User applications most
52+
/// likely should not use these functions directly nor should they need to.
53+
pub mod internal {
54+
#[inline]
55+
pub fn into_primitive_assembler<'shader, RenderBackend: gfx_hal::Backend>(
56+
primitive_assembler: super::PrimitiveAssembler<'shader, RenderBackend>,
57+
) -> gfx_hal::pso::PrimitiveAssemblerDesc<'shader, RenderBackend> {
58+
return primitive_assembler.primitive_assembler;
59+
}
60+
}

crates/lambda-platform/src/gfx/shader.rs

Lines changed: 17 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -5,20 +5,6 @@ use gfx_hal::{
55

66
use super::gpu;
77

8-
pub mod internal {
9-
use super::ShaderModule;
10-
11-
/// Retrieve the underlying gfx-hal shader module given the lambda-platform
12-
/// implemented shader module. Useful for creating gfx-hal entry points and
13-
/// attaching the shader to rendering pipelines.
14-
#[inline]
15-
pub fn module_for<RenderBackend: gfx_hal::Backend>(
16-
shader_module: &ShaderModule<RenderBackend>,
17-
) -> &RenderBackend::ShaderModule {
18-
return &shader_module.shader_module;
19-
}
20-
}
21-
228
pub enum ShaderModuleType {
239
Vertex,
2410
Fragment,
@@ -87,6 +73,7 @@ pub struct ShaderModule<RenderBackend: gfx_hal::Backend> {
8773
}
8874

8975
impl<RenderBackend: gfx_hal::Backend> ShaderModule<RenderBackend> {
76+
/// Destroy the shader module and free the memory on the GPU.
9077
pub fn destroy(self, gpu: &mut gpu::Gpu<RenderBackend>) {
9178
// TODO(vmarcella): Add documentation for the shader module.
9279
println!("Destroying shader module.");
@@ -106,3 +93,19 @@ impl<RenderBackend: gfx_hal::Backend> ShaderModule<RenderBackend> {
10693
return &self.specializations;
10794
}
10895
}
96+
97+
/// Internal functions for the shader module. User applications most likely
98+
/// should not use these functions directly nor should they need to.
99+
pub mod internal {
100+
use super::ShaderModule;
101+
102+
/// Retrieve the underlying gfx-hal shader module given the lambda-platform
103+
/// implemented shader module. Useful for creating gfx-hal entry points and
104+
/// attaching the shader to rendering pipelines.
105+
#[inline]
106+
pub fn module_for<RenderBackend: gfx_hal::Backend>(
107+
shader_module: &ShaderModule<RenderBackend>,
108+
) -> &RenderBackend::ShaderModule {
109+
return &shader_module.shader_module;
110+
}
111+
}

0 commit comments

Comments
 (0)