Advanced search tips: use spaces to require multiple terms (AND), | for alternatives (OR), wrap phrases in quotes (="a b"), =term for exact match, 'term to include, !term to exclude, ^term to match prefix, !^term to exclude prefix, .ext$ to match suffix, and !.ext$ to exclude suffix.

meshlet_bindings.wgsl

Import path

Constants

CENTIMETERS_PER_METER

#
const CENTIMETERS_PER_METER: AbstractFloat = 100.0

Bindings

meshlet_instance_meshlet_counts

#

Shader defs requirments:

🟢 MESHLET_FILL_CLUSTER_BUFFERS_PASS

@group(0)
@binding(0)
var<storage, read> meshlet_instance_meshlet_counts: array<u32>

meshlet_instance_meshlet_slice_starts

#

Shader defs requirments:

🟢 MESHLET_FILL_CLUSTER_BUFFERS_PASS

@group(0)
@binding(1)
var<storage, read> meshlet_instance_meshlet_slice_starts: array<u32>

meshlet_cluster_instance_ids

#

Shader defs requirments:

🟢 MESHLET_FILL_CLUSTER_BUFFERS_PASS

@group(0)
@binding(2)
var<storage, read_write> meshlet_cluster_instance_ids: array<u32>

meshlet_cluster_meshlet_ids

#

Shader defs requirments:

🟢 MESHLET_FILL_CLUSTER_BUFFERS_PASS

@group(0)
@binding(3)
var<storage, read_write> meshlet_cluster_meshlet_ids: array<u32>

meshlet_global_cluster_count

#

Shader defs requirments:

🟢 MESHLET_FILL_CLUSTER_BUFFERS_PASS

@group(0)
@binding(4)
var<storage, read_write> meshlet_global_cluster_count: atomic<u32>

meshlet_cluster_meshlet_ids

#

Shader defs requirments:

🟢 MESHLET_CULLING_PASS

@group(0)
@binding(0)
var<storage, read> meshlet_cluster_meshlet_ids: array<u32>

meshlet_bounding_spheres

#

Shader defs requirments:

🟢 MESHLET_CULLING_PASS

@group(0)
@binding(1)
var<storage, read> meshlet_bounding_spheres: array<MeshletBoundingSpheres>

meshlet_simplification_errors

#

Shader defs requirments:

🟢 MESHLET_CULLING_PASS

@group(0)
@binding(2)
var<storage, read> meshlet_simplification_errors: array<u32>

meshlet_cluster_instance_ids

#

Shader defs requirments:

🟢 MESHLET_CULLING_PASS

@group(0)
@binding(3)
var<storage, read> meshlet_cluster_instance_ids: array<u32>

meshlet_instance_uniforms

#

Shader defs requirments:

🟢 MESHLET_CULLING_PASS

@group(0)
@binding(4)
var<storage, read> meshlet_instance_uniforms: array<Mesh>

meshlet_view_instance_visibility

#

Shader defs requirments:

🟢 MESHLET_CULLING_PASS

@group(0)
@binding(5)
var<storage, read> meshlet_view_instance_visibility: array<u32>

meshlet_second_pass_candidates

#

Shader defs requirments:

🟢 MESHLET_CULLING_PASS

@group(0)
@binding(6)
var<storage, read_write> meshlet_second_pass_candidates: array<atomic<u32>>

meshlet_software_raster_indirect_args

#

Shader defs requirments:

🟢 MESHLET_CULLING_PASS

@group(0)
@binding(7)
var<storage, read_write> meshlet_software_raster_indirect_args: DispatchIndirectArgs

meshlet_hardware_raster_indirect_args

#

Shader defs requirments:

🟢 MESHLET_CULLING_PASS

@group(0)
@binding(8)
var<storage, read_write> meshlet_hardware_raster_indirect_args: DrawIndirectArgs

meshlet_raster_clusters

#

Shader defs requirments:

🟢 MESHLET_CULLING_PASS

@group(0)
@binding(9)
var<storage, read_write> meshlet_raster_clusters: array<u32>

depth_pyramid

#

Shader defs requirments:

🟢 MESHLET_CULLING_PASS

@group(0)
@binding(10)
var depth_pyramid: texture_2d<f32>

view

#

Shader defs requirments:

🟢 MESHLET_CULLING_PASS

@group(0)
@binding(11)
var<uniform> view: View

previous_view

#

Shader defs requirments:

🟢 MESHLET_CULLING_PASS

@group(0)
@binding(12)
var<uniform> previous_view: PreviousViewUniforms

meshlet_cluster_meshlet_ids

#

Shader defs requirments:

🟢 MESHLET_VISIBILITY_BUFFER_RASTER_PASS

@group(0)
@binding(0)
var<storage, read> meshlet_cluster_meshlet_ids: array<u32>

meshlets

#

Shader defs requirments:

🟢 MESHLET_VISIBILITY_BUFFER_RASTER_PASS

@group(0)
@binding(1)
var<storage, read> meshlets: array<Meshlet>

meshlet_indices

#

Shader defs requirments:

🟢 MESHLET_VISIBILITY_BUFFER_RASTER_PASS

@group(0)
@binding(2)
var<storage, read> meshlet_indices: array<u32>

meshlet_vertex_positions

#

Shader defs requirments:

🟢 MESHLET_VISIBILITY_BUFFER_RASTER_PASS

@group(0)
@binding(3)
var<storage, read> meshlet_vertex_positions: array<u32>

meshlet_cluster_instance_ids

#

Shader defs requirments:

🟢 MESHLET_VISIBILITY_BUFFER_RASTER_PASS

@group(0)
@binding(4)
var<storage, read> meshlet_cluster_instance_ids: array<u32>

meshlet_instance_uniforms

#

Shader defs requirments:

🟢 MESHLET_VISIBILITY_BUFFER_RASTER_PASS

@group(0)
@binding(5)
var<storage, read> meshlet_instance_uniforms: array<Mesh>

meshlet_raster_clusters

#

Shader defs requirments:

🟢 MESHLET_VISIBILITY_BUFFER_RASTER_PASS

@group(0)
@binding(6)
var<storage, read> meshlet_raster_clusters: array<u32>

meshlet_software_raster_cluster_count

#

Shader defs requirments:

🟢 MESHLET_VISIBILITY_BUFFER_RASTER_PASS

@group(0)
@binding(7)
var<storage, read> meshlet_software_raster_cluster_count: u32

meshlet_visibility_buffer

#

Shader defs requirments:

🟢 MESHLET_VISIBILITY_BUFFER_RASTER_PASS, 🟢 MESHLET_VISIBILITY_BUFFER_RASTER_PASS_OUTPUT

@group(0)
@binding(8)
var meshlet_visibility_buffer: texture_storage_2d<r64uint, atomic>

meshlet_visibility_buffer

#

Shader defs requirments:

🟢 MESHLET_VISIBILITY_BUFFER_RASTER_PASS, šŸ”“ MESHLET_VISIBILITY_BUFFER_RASTER_PASS_OUTPUT

@group(0)
@binding(8)
var meshlet_visibility_buffer: texture_storage_2d<r32uint, atomic>

view

#

Shader defs requirments:

🟢 MESHLET_VISIBILITY_BUFFER_RASTER_PASS

@group(0)
@binding(9)
var<uniform> view: View

meshlet_visibility_buffer

#

Shader defs requirments:

🟢 MESHLET_MESH_MATERIAL_PASS

@group(1)
@binding(0)
var meshlet_visibility_buffer: texture_storage_2d<r64uint, read>

meshlet_cluster_meshlet_ids

#

Shader defs requirments:

🟢 MESHLET_MESH_MATERIAL_PASS

@group(1)
@binding(1)
var<storage, read> meshlet_cluster_meshlet_ids: array<u32>

meshlets

#

Shader defs requirments:

🟢 MESHLET_MESH_MATERIAL_PASS

@group(1)
@binding(2)
var<storage, read> meshlets: array<Meshlet>

meshlet_indices

#

Shader defs requirments:

🟢 MESHLET_MESH_MATERIAL_PASS

@group(1)
@binding(3)
var<storage, read> meshlet_indices: array<u32>

meshlet_vertex_positions

#

Shader defs requirments:

🟢 MESHLET_MESH_MATERIAL_PASS

@group(1)
@binding(4)
var<storage, read> meshlet_vertex_positions: array<u32>

meshlet_vertex_normals

#

Shader defs requirments:

🟢 MESHLET_MESH_MATERIAL_PASS

@group(1)
@binding(5)
var<storage, read> meshlet_vertex_normals: array<u32>

meshlet_vertex_uvs

#

Shader defs requirments:

🟢 MESHLET_MESH_MATERIAL_PASS

@group(1)
@binding(6)
var<storage, read> meshlet_vertex_uvs: array<vec2<f32>>

meshlet_cluster_instance_ids

#

Shader defs requirments:

🟢 MESHLET_MESH_MATERIAL_PASS

@group(1)
@binding(7)
var<storage, read> meshlet_cluster_instance_ids: array<u32>

meshlet_instance_uniforms

#

Shader defs requirments:

🟢 MESHLET_MESH_MATERIAL_PASS

@group(1)
@binding(8)
var<storage, read> meshlet_instance_uniforms: array<Mesh>

Structures

Meshlet

#
struct Meshlet {
start_vertex_position_bit: u32 ,
start_vertex_attribute_id: u32 ,
start_index_id: u32 ,
packed_a: u32 ,
packed_b: u32 ,
min_vertex_position_channel_x: f32 ,
min_vertex_position_channel_y: f32 ,
min_vertex_position_channel_z: f32 ,
}

MeshletBoundingSpheres

#
struct MeshletBoundingSpheres {
culling_sphere: MeshletBoundingSphere ,
lod_group_sphere: MeshletBoundingSphere ,
lod_parent_group_sphere: MeshletBoundingSphere ,
}

MeshletBoundingSphere

#
struct MeshletBoundingSphere {
center: vec3<f32> ,
radius: f32 ,
}

DispatchIndirectArgs

#
struct DispatchIndirectArgs {
x: atomic<u32> ,
y: u32 ,
z: u32 ,
}

DrawIndirectArgs

#
struct DrawIndirectArgs {
vertex_count: u32 ,
instance_count: atomic<u32> ,
first_vertex: u32 ,
first_instance: u32 ,
}

Constants

#
struct Constants {
scene_cluster_count: u32 , 🟢 MESHLET_CULLING_PASS
meshlet_raster_cluster_rightmost_slot: u32 , 🟢 MESHLET_CULLING_PASS
}

Functions

get_meshlet_vertex_count

#
fn get_meshlet_vertex_count ( ) -> u32

get_meshlet_triangle_count

#
fn get_meshlet_triangle_count ( ) -> u32

should_cull_instance

#

Shader defs requirments:

🟢 MESHLET_CULLING_PASS

fn should_cull_instance (
instance_id: u32
) -> bool

cluster_is_second_pass_candidate

#

Shader defs requirments:

🟢 MESHLET_CULLING_PASS

fn cluster_is_second_pass_candidate (
cluster_id: u32
) -> bool

get_meshlet_vertex_id

#

Shader defs requirments:

🟢 MESHLET_VISIBILITY_BUFFER_RASTER_PASS

fn get_meshlet_vertex_id (
index_id: u32
) -> u32

get_meshlet_vertex_position

#

Shader defs requirments:

🟢 MESHLET_VISIBILITY_BUFFER_RASTER_PASS

fn get_meshlet_vertex_position (
vertex_id: u32
) -> vec3<f32>

get_meshlet_vertex_id

#

Shader defs requirments:

🟢 MESHLET_MESH_MATERIAL_PASS

fn get_meshlet_vertex_id (
index_id: u32
) -> u32

get_meshlet_vertex_position

#

Shader defs requirments:

🟢 MESHLET_MESH_MATERIAL_PASS

fn get_meshlet_vertex_position (
vertex_id: u32
) -> vec3<f32>

get_meshlet_vertex_normal

#

Shader defs requirments:

🟢 MESHLET_MESH_MATERIAL_PASS

fn get_meshlet_vertex_normal (
vertex_id: u32
) -> vec3<f32>

get_meshlet_vertex_uv

#

Shader defs requirments:

🟢 MESHLET_MESH_MATERIAL_PASS

fn get_meshlet_vertex_uv (
vertex_id: u32
) -> vec2<f32>