1
2#pragma BLENDER_REQUIRE(common_view_lib.glsl)
3#pragma BLENDER_REQUIRE(common_pointcloud_lib.glsl)
4#pragma BLENDER_REQUIRE(workbench_shader_interface_lib.glsl)
5#pragma BLENDER_REQUIRE(workbench_common_lib.glsl)
6#pragma BLENDER_REQUIRE(workbench_material_lib.glsl)
7#pragma BLENDER_REQUIRE(workbench_image_lib.glsl)
8
9void main()
10{
11  vec3 world_pos;
12  pointcloud_get_pos_and_nor(world_pos, normal_interp);
13
14  normal_interp = normalize(normal_world_to_view(normal_interp));
15
16  gl_Position = point_world_to_ndc(world_pos);
17
18#ifdef USE_WORLD_CLIP_PLANES
19  world_clip_planes_calc_clip_distance(world_pos);
20#endif
21
22  uv_interp = vec2(0.0);
23
24#ifdef OPAQUE_MATERIAL
25  float metallic, roughness;
26#endif
27  workbench_material_data_get(resource_handle, color_interp, alpha_interp, roughness, metallic);
28
29  if (materialIndex == 0) {
30    color_interp = vec3(1.0);
31  }
32
33#ifdef OPAQUE_MATERIAL
34  packed_rough_metal = workbench_float_pair_encode(roughness, metallic);
35#endif
36
37  object_id = int(uint(resource_handle) & 0xFFFFu) + 1;
38}
39