Appearance
Using Meshes in Splitshade
You can load .obj
files in the Splitshade playground to replace the default fullscreen triangle with custom geometry.
Mesh Panel Features
Set Mesh
To use a mesh:
- Click the mesh dropdown to choose a preset (
triangle
,circle
,sphere
, etc.) - Or click the upload button to import your own
.obj
file - The selected mesh will be parsed and passed to your vertex shader
You can preview the uploaded geometry in the viewport and manipulate it using WGSL
.
Supported Formats
Splitshade currently accepts .obj
files.
- Only
v
(positions),vt
(texture coords), andf
(faces) are used - Other features (materials, bones, normals) are ignored
- Presets like
sphere
,triangle
, andcircle
are also available
Copy Starter Code
Click Copy Starter Code in the Mesh Panel to quickly insert a boilerplate WGSL
shader that matches the selected mesh's layout.
This provides a working example that includes:
- A
@vertex
shader to read position and color from the mesh - A
@fragment
shader that receives the interpolated color
wgsl
// Default shader code for uploaded mesh
struct VertexOut {
@builtin(position) position: vec4<f32>,
@location(0) color: vec3<f32>,
};
@vertex
fn main(@location(0) pos: vec3<f32>, @location(1) color: vec3<f32>) -> VertexOut {
var out: VertexOut;
// Adjust as needed to ensure the object is in clip space and in front of the camera
out.position = vec4<f32>(pos, 1.0);
out.color = color;
return out;
}
@fragment
fn main_fs(@location(0) color: vec3<f32>) -> @location(0) vec4<f32> {
return vec4<f32>(color, 1.0);
}
Note: If your shader doesn’t include a vertex stage, Splitshade falls back to rendering a fullscreen triangle.
See Vertex Shaders to learn how to write your own vertex stage from scratch.