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