Skip to content

Commit db5e5af

Browse files
committed
compute shader support apparently? not tested pls no bulli
1 parent b649aeb commit db5e5af

File tree

2 files changed

+30
-10
lines changed

2 files changed

+30
-10
lines changed

server/src/main.rs

Lines changed: 25 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -111,7 +111,7 @@ impl Display for IncludePosition {
111111
}
112112

113113
pub enum TreeType {
114-
Fragment, Vertex, Geometry
114+
Fragment, Vertex, Geometry, Compute
115115
}
116116

117117
impl MinecraftShaderLanguageServer {
@@ -290,15 +290,24 @@ impl MinecraftShaderLanguageServer {
290290
merge_views::generate_merge_list(&tree, &all_sources, &graph)
291291
};
292292

293-
let root_path = self.graph.borrow().get_node(root).clone();
294-
let tree_type = if root_path.extension().unwrap() == "fsh" {
293+
let root_path = self.graph.borrow().get_node(root);
294+
let ext = match root_path.extension() {
295+
Some(ext) => ext,
296+
None => {
297+
back_fill(&all_sources, &mut diagnostics);
298+
return Ok(diagnostics)
299+
},
300+
};
301+
let tree_type = if ext == "fsh" {
295302
TreeType::Fragment
296-
} else if root_path.extension().unwrap() == "vsh" {
303+
} else if ext == "vsh" {
297304
TreeType::Vertex
298-
} else if root_path.extension().unwrap() == "gsh" {
305+
} else if ext == "gsh" {
299306
TreeType::Geometry
307+
} else if ext == "csh" {
308+
TreeType::Compute
300309
} else {
301-
eprintln!("got a non fsh|vsh ({:?}) as a file root ancestor: {:?}", root_path.extension().unwrap(), root_path);
310+
eprintln!("got a non fsh|vsh|gsh|csh ({:?}) as a file root ancestor: {:?}", ext, root_path);
302311
back_fill(&all_sources, &mut diagnostics);
303312
return Ok(diagnostics)
304313
};
@@ -325,14 +334,20 @@ impl MinecraftShaderLanguageServer {
325334
};
326335

327336
let root_path = self.graph.borrow().get_node(*root).clone();
328-
let tree_type = if root_path.extension().unwrap() == "fsh" {
337+
let ext = match root_path.extension() {
338+
Some(ext) => ext,
339+
None => continue
340+
};
341+
let tree_type = if ext == "fsh" {
329342
TreeType::Fragment
330-
} else if root_path.extension().unwrap() == "vsh" {
343+
} else if ext == "vsh" {
331344
TreeType::Vertex
332-
} else if root_path.extension().unwrap() == "gsh" {
345+
} else if ext == "gsh" {
333346
TreeType::Geometry
347+
} else if ext == "csh" {
348+
TreeType::Compute
334349
} else {
335-
eprintln!("got a non fsh|vsh ({:?}) as a file root ancestor: {:?}", root_path.extension().unwrap(), root_path);
350+
eprintln!("got a non fsh|vsh|gsh|csh ({:?}) as a file root ancestor: {:?}", ext, root_path);
336351
continue;
337352
};
338353

server/src/opengl.rs

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -78,6 +78,11 @@ impl ShaderValidator for OpenGLContext {
7878
let geometry_shader = gl::CreateShader(gl::GEOMETRY_SHADER);
7979
self.compile_and_get_shader_log(geometry_shader, source)
8080
}
81+
crate::TreeType::Compute => {
82+
// Compute shader
83+
let compute_shader= gl::CreateShader(gl::COMPUTE_SHADER);
84+
self.compile_and_get_shader_log(compute_shader, source)
85+
}
8186
}
8287
}
8388
}

0 commit comments

Comments
 (0)