Skip to content

Commit 657834b

Browse files
authored
Merge pull request #28 from lambda-sh/vmarcella/gfx-refactoring
API for low level rendering operations
2 parents 571b674 + 1395851 commit 657834b

39 files changed

Lines changed: 2816 additions & 1532 deletions

.vscode/settings.json

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,6 @@
99
"vim.autoindent": false,
1010
"editor.tabSize": 2,
1111
"editor.detectIndentation": false,
12-
"rust-analyzer.inlayHints.typeHints": false,
13-
"rust-analyzer.inlayHints.chainingHints": false
12+
"rust-analyzer.inlayHints.chainingHints.enable": false,
13+
"rust-analyzer.inlayHints.typeHints.enable": false
1414
}

crates/lambda-platform/Cargo.toml

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,8 +3,6 @@ name = "lambda-platform"
33
version = "0.1.0"
44
edition = "2021"
55

6-
# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html
7-
86
[lib]
97
name = "lambda_platform"
108
path = "src/lib.rs"
Lines changed: 67 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,67 @@
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+
}
19+
20+
/// PrimitiveAssemblerBuilder for preparing PrimitiveAssemblers to use in the
21+
/// lambda-platform Rendering pipeline.
22+
pub struct PrimitiveAssemblerBuilder {}
23+
24+
impl PrimitiveAssemblerBuilder {
25+
pub fn new() -> Self {
26+
return Self {};
27+
}
28+
29+
/// Build a primitive assembler given the lambda-platform vertex shader
30+
/// module.
31+
pub fn build<'shader, RenderBackend: gfx_hal::Backend>(
32+
self,
33+
vertex_shader: &'shader super::shader::ShaderModule<RenderBackend>,
34+
) -> PrimitiveAssembler<'shader, RenderBackend> {
35+
// TODO(vmarcella): The builder should expose more fields for the
36+
let primitive_assembler = internal::PrimitiveAssemblerDesc::Vertex {
37+
buffers: &[],
38+
attributes: &[],
39+
input_assembler: internal::InputAssemblerDesc::new(
40+
internal::Primitive::TriangleList,
41+
),
42+
vertex: internal::EntryPoint {
43+
entry: vertex_shader.entry(),
44+
module: super::internal::module_for(vertex_shader),
45+
specialization: vertex_shader.specializations().clone(),
46+
},
47+
tessellation: None,
48+
geometry: None,
49+
};
50+
51+
return PrimitiveAssembler::<'shader> {
52+
primitive_assembler,
53+
};
54+
}
55+
}
56+
57+
/// PrimitiveAssembler for used for describing how Vertex Shaders should
58+
/// construct primitives. Each constructed Primitive Assembler should be alive
59+
/// 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>,
62+
}
63+
64+
impl<'shader, RenderBackend: internal::Backend>
65+
PrimitiveAssembler<'shader, RenderBackend>
66+
{
67+
}

0 commit comments

Comments
 (0)