FILE(GLOB SRC *.cpp *.h)
FILE(GLOB HEADERS ../../include/nel/3d/*.h)

SOURCE_GROUP(Traversals FILES
        anim_detail_trav.cpp
        ../../include/nel/3d/anim_detail_trav.h
        clip_trav.cpp
        ../../include/nel/3d/clip_trav.h
        hrc_trav.cpp
        ../../include/nel/3d/hrc_trav.h
        light_trav.cpp
        ../../include/nel/3d/light_trav.h
        load_balancing_trav.cpp
        ../../include/nel/3d/load_balancing_trav.h
        render_trav.cpp
        ../../include/nel/3d/render_trav.h
        trav_scene.cpp
        ../../include/nel/3d/trav_scene.h)

SOURCE_GROUP(Models FILES
        camera.cpp
        ../../include/nel/3d/camera.h
        flare_model.cpp
        ../../include/nel/3d/flare_model.h
        landscape_model.cpp
        ../../include/nel/3d/landscape_model.h
        mesh_base_instance.cpp
        ../../include/nel/3d/mesh_base_instance.h
        mesh_instance.cpp
        ../../include/nel/3d/mesh_instance.h
        mesh_mrm_instance.cpp
        ../../include/nel/3d/mesh_mrm_instance.h
        mesh_mrm_skinned_instance.cpp
        ../../include/nel/3d/mesh_mrm_skinned_instance.h
        mesh_multi_lod_instance.cpp
        ../../include/nel/3d/mesh_multi_lod_instance.h
        particle_system_model.cpp
        ../../include/nel/3d/particle_system_model.h
        point_light_model.cpp
        ../../include/nel/3d/point_light_model.h
        root_model.cpp
        ../../include/nel/3d/root_model.h
        seg_remanence.cpp
        ../../include/nel/3d/seg_remanence.h
        skeleton_model.cpp
        ../../include/nel/3d/skeleton_model.h
        transform.cpp
        ../../include/nel/3d/transform.h
        transform_shape.cpp
        ../../include/nel/3d/transform_shape.h
        water_model.cpp
        ../../include/nel/3d/water_model.h)

SOURCE_GROUP(Landscape FILES
        bezier_patch.cpp
        ../../include/nel/3d/bezier_patch.h
        landscape.cpp
        ../../include/nel/3d/landscape.h
        landscape_def.cpp
        ../../include/nel/3d/landscape_def.h
        landscape_face_vector_manager.cpp
        ../../include/nel/3d/landscape_face_vector_manager.h
        landscape_profile.cpp
        ../../include/nel/3d/landscape_profile.h
        landscape_vegetable_block.cpp
        ../../include/nel/3d/landscape_vegetable_block.h
        landscapevb_allocator.cpp
        ../../include/nel/3d/landscapevb_allocator.h
        landscapevb_info.cpp
        ../../include/nel/3d/landscapevb_info.h
        patch.cpp
        ../../include/nel/3d/patch.h
        patch_lightmap.cpp
        patch_noise.cpp
        patch_rdr_pass.cpp
        ../../include/nel/3d/patch_rdr_pass.h
        patch_render.cpp
        patch_vegetable.cpp
        patchdlm_context.cpp
        ../../include/nel/3d/patchdlm_context.h
        patchuv_locator.cpp
        ../../include/nel/3d/patchuv_locator.h
        tess_block.cpp
        ../../include/nel/3d/tess_block.h
        tess_face_priority_list.cpp
        ../../include/nel/3d/tess_face_priority_list.h
        tess_list.cpp
        ../../include/nel/3d/tess_list.h
        tessellation.cpp
        ../../include/nel/3d/tessellation.h
        texture_dlm.cpp
        ../../include/nel/3d/texture_dlm.h
        texture_far.cpp
        ../../include/nel/3d/texture_far.h
        texture_near.cpp
        ../../include/nel/3d/texture_near.h
        tile_color.cpp
        ../../include/nel/3d/tile_color.h
        tile_element.cpp
        ../../include/nel/3d/tile_element.h
        tile_light_influence.cpp
        ../../include/nel/3d/tile_light_influence.h
        tile_lumel.cpp
        ../../include/nel/3d/tile_lumel.h
        zone.cpp
        ../../include/nel/3d/zone.h)

SOURCE_GROUP(Landscape\\ZoneManager FILES
        zone_manager.cpp
        ../../include/nel/3d/zone_manager.h
        zone_search.cpp
        ../../include/nel/3d/zone_search.h)
SOURCE_GROUP(Landscape\\Tools FILES
        instance_lighter.cpp
        ../../include/nel/3d/instance_lighter.h
        zone_corner_smoother.cpp
        ../../include/nel/3d/zone_corner_smoother.h
        zone_lighter.cpp
        ../../include/nel/3d/zone_lighter.h
        zone_smoother.cpp
        ../../include/nel/3d/zone_smoother.h
        zone_symmetrisation.cpp
        ../../include/nel/3d/zone_symmetrisation.h
        zone_tgt_smoother.cpp
        ../../include/nel/3d/zone_tgt_smoother.h)

SOURCE_GROUP(Driver FILES
        async_file_manager_3d.cpp
        ../../include/nel/3d/async_file_manager_3d.h
        debug_vb.cpp
        ../../include/nel/3d/debug_vb.h
        driver.cpp
        ../../include/nel/3d/driver.h
        ../../include/nel/3d/driver_material_inline.h
        dru.cpp
        ../../include/nel/3d/dru.h
        event_mouse_listener.cpp
        ../../include/nel/3d/event_mouse_listener.h
        index_buffer.cpp
        ../../include/nel/3d/index_buffer.h
        init_3d.cpp
        ../../include/nel/3d/init_3d.h
        light.cpp
        ../../include/nel/3d/light.h
        material.cpp
        ../../include/nel/3d/material.h
        nelu.cpp
        ../../include/nel/3d/nelu.h
        ../../include/nel/3d/occlusion_query.h
        register_3d.cpp
        ../../include/nel/3d/register_3d.h
        scene.cpp
        ../../include/nel/3d/scene.h
        scene_group.cpp
        ../../include/nel/3d/scene_group.h
        texture.cpp
        ../../include/nel/3d/texture.h
        vertex_buffer.cpp
        ../../include/nel/3d/vertex_buffer.h
        vertex_buffer_heap.cpp
        ../../include/nel/3d/vertex_buffer_heap.h
        vertex_program.cpp
        ../../include/nel/3d/vertex_program.h
        vertex_program_parse.cpp
        ../../include/nel/3d/vertex_program_parse.h
        pixel_program.cpp
        ../../include/nel/3d/pixel_program.h
        geometry_program.cpp
        ../../include/nel/3d/geometry_program.h
        program.cpp
        ../../include/nel/3d/program.h
        gpu_program_params.cpp
        ../../include/nel/3d/gpu_program_params.h
        gpu_skin_vp.cpp
        ../../include/nel/3d/gpu_skin_vp.h)

SOURCE_GROUP(Font FILES
        computed_string.cpp
        ../../include/nel/3d/computed_string.h
        font_generator.cpp
        ../../include/nel/3d/font_generator.h
        font_manager.cpp
        ../../include/nel/3d/font_manager.h
        text_context.cpp
        ../../include/nel/3d/text_context.h)

SOURCE_GROUP(Container FILES
        ../../include/nel/3d/bsp_tree.h
        cube_grid.cpp
        ../../include/nel/3d/cube_grid.h
        fast_ptr_list.cpp
        ../../include/nel/3d/fast_ptr_list.h
        ../../include/nel/3d/layered_ordering_table.h
        ../../include/nel/3d/ordering_table.h
        ptr_set.cpp
        ../../include/nel/3d/ptr_set.h
        quad_grid.cpp
        ../../include/nel/3d/quad_grid.h
        ../../include/nel/3d/quad_tree.h
        static_quad_grid.cpp
        ../../include/nel/3d/static_quad_grid.h)

SOURCE_GROUP(Tiles FILES
        tile_bank.cpp
        ../../include/nel/3d/tile_bank.h
        tile_far_bank.cpp
        ../../include/nel/3d/tile_far_bank.h
        tile_noise_map.cpp
        ../../include/nel/3d/tile_noise_map.h
        tile_vegetable_desc.cpp
        ../../include/nel/3d/tile_vegetable_desc.h)

SOURCE_GROUP(Shapes FILES
        flare_shape.cpp
        ../../include/nel/3d/flare_shape.h
        mesh.cpp
        ../../include/nel/3d/mesh.h
        mesh_base.cpp
        ../../include/nel/3d/mesh_base.h
        mesh_blender.cpp
        ../../include/nel/3d/mesh_blender.h
        mesh_block_manager.cpp
        ../../include/nel/3d/mesh_block_manager.h
        mesh_geom.cpp
        ../../include/nel/3d/mesh_geom.h
        mesh_morpher.cpp
        ../../include/nel/3d/mesh_morpher.h
        mesh_mrm.cpp
        ../../include/nel/3d/mesh_mrm.h
        mesh_mrm_skin.cpp
        mesh_mrm_skin_template.cpp
        mesh_mrm_skinned.cpp
        ../../include/nel/3d/mesh_mrm_skinned.h
        mesh_mrm_skinned_template.cpp
        mesh_multi_lod.cpp
        ../../include/nel/3d/mesh_multi_lod.h
        mesh_vertex_program.cpp
        ../../include/nel/3d/mesh_vertex_program.h
        meshvp_per_pixel_light.cpp
        ../../include/nel/3d/meshvp_per_pixel_light.h
        meshvp_wind_tree.cpp
        ../../include/nel/3d/meshvp_wind_tree.h
        mrm_level_detail.cpp
        ../../include/nel/3d/mrm_level_detail.h
        particle_system_shape.cpp
        ../../include/nel/3d/particle_system_shape.h
        raw_skin.cpp
        ../../include/nel/3d/raw_skin.h
        raw_skinned.cpp
        ../../include/nel/3d/raw_skinned.h
        seg_remanence_shape.cpp
        ../../include/nel/3d/seg_remanence_shape.h
        shadow_skin.cpp
        ../../include/nel/3d/shadow_skin.h
        shape.cpp
        ../../include/nel/3d/shape.h
        shape_bank.cpp
        ../../include/nel/3d/shape_bank.h
        shifted_triangle_cache.cpp
        ../../include/nel/3d/shifted_triangle_cache.h
        skeleton_shape.cpp
        ../../include/nel/3d/skeleton_shape.h
        tangent_space_build.cpp
        ../../include/nel/3d/tangent_space_build.h
        vertex_stream_manager.cpp
        ../../include/nel/3d/vertex_stream_manager.h
        water_shape.cpp
        ../../include/nel/3d/water_shape.h)

SOURCE_GROUP(Textures FILES
        async_texture_block.cpp
        ../../include/nel/3d/async_texture_block.h
        async_texture_manager.cpp
        ../../include/nel/3d/async_texture_manager.h
        cube_map_builder.cpp
        ../../include/nel/3d/cube_map_builder.h
        fasthls_modifier.cpp
        ../../include/nel/3d/fasthls_modifier.h
        hls_color_texture.cpp
        ../../include/nel/3d/hls_color_texture.h
        hls_texture_bank.cpp
        ../../include/nel/3d/hls_texture_bank.h
        hls_texture_manager.cpp
        ../../include/nel/3d/hls_texture_manager.h
        texture_blank.cpp
        ../../include/nel/3d/texture_blank.h
        texture_blend.cpp
        ../../include/nel/3d/texture_offscreen.h
        ../../include/nel/3d/texture_blend.h
        texture_bump.cpp
        ../../include/nel/3d/texture_bump.h
        texture_cube.cpp
        ../../include/nel/3d/texture_cube.h
        texture_emboss.cpp
        ../../include/nel/3d/texture_emboss.h
        texture_file.cpp
        ../../include/nel/3d/texture_file.h
        texture_font.cpp
        ../../include/nel/3d/texture_font.h
        texture_grouped.cpp
        ../../include/nel/3d/texture_grouped.h
        texture_mem.cpp
        ../../include/nel/3d/texture_mem.h
        texture_multi_file.cpp
        ../../include/nel/3d/texture_multi_file.h)

SOURCE_GROUP(Mrm FILES
        mrm_builder.cpp
        ../../include/nel/3d/mrm_builder.h
        mrm_internal.cpp
        ../../include/nel/3d/mrm_internal.h
        mrm_mesh.cpp
        ../../include/nel/3d/mrm_mesh.h
        mrm_parameters.cpp
        ../../include/nel/3d/mrm_parameters.h)

SOURCE_GROUP(Animation FILES
        anim_ctrl.cpp
        ../../include/nel/3d/anim_detail_trav.h
        animatable.cpp
        ../../include/nel/3d/animatable.h
        animated_lightmap.cpp
        ../../include/nel/3d/animated_lightmap.h
        animated_material.cpp
        ../../include/nel/3d/animated_material.h
        animated_morph.cpp
        ../../include/nel/3d/animated_morph.h
        animated_value.cpp
        ../../include/nel/3d/animated_value.h
        animation.cpp
        ../../include/nel/3d/animation.h
        animation_optimizer.cpp
        ../../include/nel/3d/animation_optimizer.h
        animation_playlist.cpp
        ../../include/nel/3d/animation_playlist.h
        animation_set.cpp
        ../../include/nel/3d/animation_set.h
        animation_time.cpp
        bone.cpp
        ../../include/nel/3d/bone.h
        channel_mixer.cpp
        ../../include/nel/3d/channel_mixer.h
        key.cpp
        ../../include/nel/3d/key.h
        play_list_manager.cpp
        ../../include/nel/3d/play_list_manager.h
        skeleton_spawn_script.cpp
        ../../include/nel/3d/skeleton_spawn_script.h
        skeleton_weight.cpp
        ../../include/nel/3d/skeleton_weight.h
        target_anim_ctrl.cpp
        track.cpp
        ../../include/nel/3d/track.h
        ../../include/nel/3d/track_bezier.h
        track_keyframer.cpp
        ../../include/nel/3d/track_keyframer.h
        track_sampled_common.cpp
        ../../include/nel/3d/track_sampled_common.h
        track_sampled_quat.cpp
        ../../include/nel/3d/track_sampled_quat.h
        track_sampled_quat_small_header.cpp
        ../../include/nel/3d/track_sampled_quat_small_header.h
        track_sampled_vector.cpp
        ../../include/nel/3d/track_sampled_vector.h
        ../../include/nel/3d/track_tcb.h
        transformable.cpp
        ../../include/nel/3d/transformable.h)

SOURCE_GROUP(UserImp FILES
        animation_set_user.cpp
        ../../include/nel/3d/animation_set_user.h
        cloud_scape_user.cpp
        ../../include/nel/3d/cloud_scape_user.h
        driver_user.cpp
        ../../include/nel/3d/driver_user.h
        driver_user2.cpp
        frustum.cpp
        height_map.cpp
        instance_group_user.cpp
        ../../include/nel/3d/instance_group_user.h
        landscape_user.cpp
        ../../include/nel/3d/landscape_user.h
        landscapeig_manager.cpp
        light_user.cpp
        ../../include/nel/3d/light_user.h
        logic_info.cpp
        particle_system_sound_user.cpp
        play_list_manager_user.cpp
        ../../include/nel/3d/play_list_manager_user.h
        play_list_user.cpp
        ../../include/nel/3d/play_list_user.h
        primitive_profile.cpp
        scene_user.cpp
        ../../include/nel/3d/scene_user.h
        scissor.cpp
        shape_bank_user.cpp
        ../../include/nel/3d/shape_bank_user.h
        text_context_user.cpp
        ../../include/nel/3d/text_context_user.h
        texture_user.cpp
        ../../include/nel/3d/texture_user.h
        u_bone.cpp
        u_camera.cpp
        u_instance.cpp
        u_instance_material.cpp
        u_material.cpp
        u_particle_system_instance.cpp
        u_point_light.cpp
        u_shape.cpp
        u_skeleton.cpp
        u_transform.cpp
        u_transformable.cpp
        u_visual_collision_mesh.cpp
        u_water.cpp
        viewport.cpp
        visual_collision_entity_user.cpp
        ../../include/nel/3d/visual_collision_entity_user.h
        visual_collision_manager_user.cpp
        ../../include/nel/3d/visual_collision_manager_user.h
        water_env_map_user.cpp
        ../../include/nel/3d/water_env_map_user.h)

SOURCE_GROUP(User FILES
        ../../include/nel/3d/anim_ctrl.h
        ../../include/nel/3d/animation_time.h
        ../../include/nel/3d/frustum.h
        ../../include/nel/3d/height_map.h
        ../../include/nel/3d/landscapeig_manager.h
        ../../include/nel/3d/logic_info.h
        ../../include/nel/3d/point_light_influence.h
        ../../include/nel/3d/primitive_profile.h
        ../../include/nel/3d/scissor.h
        ../../include/nel/3d/target_anim_ctrl.h
        ../../include/nel/3d/u_3d_mouse_listener.h
        ../../include/nel/3d/u_animation.h
        ../../include/nel/3d/u_animation_set.h
        ../../include/nel/3d/u_bone.h
        ../../include/nel/3d/u_camera.h
        ../../include/nel/3d/u_cloud_scape.h
        ../../include/nel/3d/u_driver.h
        ../../include/nel/3d/u_instance.h
        ../../include/nel/3d/u_instance_group.h
        ../../include/nel/3d/u_instance_material.h
        ../../include/nel/3d/u_landscape.h
        ../../include/nel/3d/u_light.h
        ../../include/nel/3d/u_material.h
        ../../include/nel/3d/u_particle_system_instance.h
        ../../include/nel/3d/u_particle_system_sound.h
        ../../include/nel/3d/u_play_list.h
        ../../include/nel/3d/u_play_list_manager.h
        ../../include/nel/3d/u_point_light.h
        ../../include/nel/3d/u_ps_sound_impl.h
        ../../include/nel/3d/u_ps_sound_interface.h
        ../../include/nel/3d/u_scene.h
        ../../include/nel/3d/u_shape.h
        ../../include/nel/3d/u_shape_bank.h
        ../../include/nel/3d/u_skeleton.h
        ../../include/nel/3d/u_text_context.h
        ../../include/nel/3d/u_texture.h
        ../../include/nel/3d/u_track.h
        ../../include/nel/3d/u_transform.h
        ../../include/nel/3d/u_transformable.h
        ../../include/nel/3d/u_visual_collision_entity.h
        ../../include/nel/3d/u_visual_collision_manager.h
        ../../include/nel/3d/u_visual_collision_mesh.h
        ../../include/nel/3d/u_water.h
        ../../include/nel/3d/u_water_env_map.h
        ../../include/nel/3d/viewport.h)

SOURCE_GROUP(Fx\\Particles FILES
        particle_system.cpp
        ../../include/nel/3d/particle_system.h
        particle_system_manager.cpp
        ../../include/nel/3d/particle_system_manager.h
        particle_system_process.cpp
        ../../include/nel/3d/particle_system_process.h
        ps_allocator.cpp
        ../../include/nel/3d/ps_allocator.h
        ../../include/nel/3d/ps_edit.h
        ../../include/nel/3d/ps_iterator.h
        ps_located.cpp
        ../../include/nel/3d/ps_located.h
        ../../include/nel/3d/ps_lod.h
        ../../include/nel/3d/ps_misc.h
        ../../include/nel/3d/ps_spawn_info.h
        ps_util.cpp
        ../../include/nel/3d/ps_util.h)

SOURCE_GROUP("Fx\\Particles\\particles render" FILES
        ps_dot.cpp
        ../../include/nel/3d/ps_dot.h
        ps_face.cpp
        ../../include/nel/3d/ps_face.h
        ps_face_look_at.cpp
        ../../include/nel/3d/ps_face_look_at.h
        ps_fan_light.cpp
        ../../include/nel/3d/ps_fan_light.h
        ../../include/nel/3d/ps_macro.h
        ps_mesh.cpp
        ../../include/nel/3d/ps_mesh.h
        ps_particle.cpp
        ../../include/nel/3d/ps_particle.h
        ps_particle2.cpp
        ../../include/nel/3d/ps_particle2.h
        ps_particle_basic.cpp
        ../../include/nel/3d/ps_particle_basic.h
        ps_quad.cpp
        ../../include/nel/3d/ps_quad.h
        ps_register_particles.cpp
        ps_ribbon.cpp
        ../../include/nel/3d/ps_ribbon.h
        ps_ribbon_base.cpp
        ../../include/nel/3d/ps_ribbon_base.h
        ps_ribbon_look_at.cpp
        ../../include/nel/3d/ps_ribbon_look_at.h
        ps_shockwave.cpp
        ../../include/nel/3d/ps_shockwave.h
        ps_tail_dot.cpp
        ../../include/nel/3d/ps_tail_dot.h)
SOURCE_GROUP(Fx\\Particles\\attribs FILES
        ../../include/nel/3d/ps_attrib.h
        ../../include/nel/3d/ps_attrib_maker.h
        ../../include/nel/3d/ps_attrib_maker_template.h
        ps_attrib_maker_bin_op.cpp
        ../../include/nel/3d/ps_attrib_maker_bin_op.h
        ../../include/nel/3d/ps_attrib_maker_bin_op_inline.h
        ps_attrib_maker_helper.cpp
        ../../include/nel/3d/ps_attrib_maker_helper.h
        ../../include/nel/3d/ps_attrib_maker_iterators.h
        ps_attrib_maker_template.cpp
        ps_attrib_maker_template.h
        ps_color.cpp
        ../../include/nel/3d/ps_color.h
        ../../include/nel/3d/ps_direction.h
        ps_float.cpp
        ../../include/nel/3d/ps_float.h
        ps_int.cpp
        ../../include/nel/3d/ps_int.h
        ../../include/nel/3d/ps_plane_basis.h
        ps_plane_basis_maker.cpp
        ../../include/nel/3d/ps_plane_basis_maker.h
        ps_register_attribs.cpp
        ../../include/nel/3d/ps_register_color_attribs.h
        ../../include/nel/3d/ps_register_float_attribs.h
        ../../include/nel/3d/ps_register_int_attribs.h
        ../../include/nel/3d/ps_register_plane_basis_attribs.h)
SOURCE_GROUP(Fx\\Particles\\forces FILES
        ps_force.cpp
        ../../include/nel/3d/ps_force.h
        ps_register_forces.cpp)
SOURCE_GROUP(Fx\\Particles\\zones FILES
        ps_register_zones.cpp
        ps_zone.cpp
        ../../include/nel/3d/ps_zone.h)
SOURCE_GROUP(Fx\\Particles\\emitters FILES
        ps_emitter.cpp
        ../../include/nel/3d/ps_emitter.h
        ps_register_emitters.cpp)
SOURCE_GROUP(Fx\\Particles\\sounds FILES
        ps_sound.cpp
        ../../include/nel/3d/ps_sound.h)
SOURCE_GROUP(Fx\\Particles\\lights FILES
        ps_light.cpp
        ../../include/nel/3d/ps_light.h)
SOURCE_GROUP(Fx\\2d FILES
        render_target_manager.cpp
        ../../include/nel/3d/render_target_manager.h
        bloom_effect.cpp
        ../../include/nel/3d/bloom_effect.h
        fxaa.cpp
        fxaa_program.h
        ../../include/nel/3d/fxaa.h
        deform_2d.cpp
        ../../include/nel/3d/deform_2d.h
        heat_haze.cpp
        ../../include/nel/3d/heat_haze.h
        motion_blur.cpp
        ../../include/nel/3d/motion_blur.h
        quad_effect.cpp
        ../../include/nel/3d/quad_effect.h)
SOURCE_GROUP(Collisions FILES
        camera_col.cpp
        ../../include/nel/3d/camera_col.h
        landscape_collision_grid.cpp
        ../../include/nel/3d/landscape_collision_grid.h
        mini_col.cpp
        ../../include/nel/3d/mini_col.h
        packed_world.cpp
        ../../include/nel/3d/packed_world.h
        packed_zone.cpp
        ../../include/nel/3d/packed_zone.h
        ray_mesh.cpp
        ../../include/nel/3d/ray_mesh.h
        shape_info.cpp
        ../../include/nel/3d/shape_info.h
        visual_collision_entity.cpp
        ../../include/nel/3d/visual_collision_entity.h
        visual_collision_manager.cpp
        ../../include/nel/3d/visual_collision_manager.h
        visual_collision_mesh.cpp
        ../../include/nel/3d/visual_collision_mesh.h)
SOURCE_GROUP(ClipAccelerator FILES
        cluster.cpp
        ../../include/nel/3d/cluster.h
        portal.cpp
        ../../include/nel/3d/portal.h
        quad_grid_clip_cluster.cpp
        ../../include/nel/3d/quad_grid_clip_cluster.h
        quad_grid_clip_manager.cpp
        ../../include/nel/3d/quad_grid_clip_manager.h)
SOURCE_GROUP(Water FILES
        water_env_map.cpp
        ../../include/nel/3d/water_env_map.h
        water_height_map.cpp
        ../../include/nel/3d/water_height_map.h
        water_pool_manager.cpp
        ../../include/nel/3d/water_pool_manager.h)
SOURCE_GROUP(Stripifier FILES
        stripifier.cpp
        ../../include/nel/3d/stripifier.h)
SOURCE_GROUP(vegetable FILES
        vegetable.cpp
        ../../include/nel/3d/vegetable.h
        vegetable_blend_layer_model.cpp
        ../../include/nel/3d/vegetable_blend_layer_model.h
        vegetable_clip_block.cpp
        ../../include/nel/3d/vegetable_clip_block.h
        vegetable_def.cpp
        ../../include/nel/3d/vegetable_def.h
        vegetable_instance_group.cpp
        ../../include/nel/3d/vegetable_instance_group.h
        vegetable_light_ex.cpp
        ../../include/nel/3d/vegetable_light_ex.h
        vegetable_manager.cpp
        ../../include/nel/3d/vegetable_manager.h
        vegetable_quadrant.cpp
        ../../include/nel/3d/vegetable_quadrant.h
        vegetable_shape.cpp
        ../../include/nel/3d/vegetable_shape.h
        vegetable_sort_block.cpp
        ../../include/nel/3d/vegetable_sort_block.h
        vegetable_uv8.cpp
        ../../include/nel/3d/vegetable_uv8.h
        vegetablevb_allocator.cpp
        ../../include/nel/3d/vegetablevb_allocator.h)
SOURCE_GROUP(Util FILES
        matrix_3x4.cpp
        ../../include/nel/3d/matrix_3x4.h
        radix_sort.cpp
        ../../include/nel/3d/radix_sort.h)
SOURCE_GROUP(Lighting FILES
        ig_surface_light.cpp
        ../../include/nel/3d/ig_surface_light.h
        ig_surface_light_build.cpp
        ../../include/nel/3d/ig_surface_light_build.h
        light_contribution.cpp
        ../../include/nel/3d/light_contribution.h
        light_influence_interpolator.cpp
        ../../include/nel/3d/light_influence_interpolator.h
        lighting_manager.cpp
        ../../include/nel/3d/lighting_manager.h
        point_light.cpp
        ../../include/nel/3d/point_light.h
        point_light_named.cpp
        ../../include/nel/3d/point_light_named.h
        point_light_named_array.cpp
        ../../include/nel/3d/point_light_named_array.h
        surface_light_grid.cpp
        ../../include/nel/3d/surface_light_grid.h)
SOURCE_GROUP(LodSystems FILES
        coarse_mesh_build.cpp
        ../../include/nel/3d/coarse_mesh_build.h
        coarse_mesh_manager.cpp
        ../../include/nel/3d/coarse_mesh_manager.h
        lod_character_builder.cpp
        ../../include/nel/3d/lod_character_builder.h
        lod_character_instance.cpp
        ../../include/nel/3d/lod_character_instance.h
        lod_character_manager.cpp
        ../../include/nel/3d/lod_character_manager.h
        lod_character_shape.cpp
        ../../include/nel/3d/lod_character_shape.h
        lod_character_shape_bank.cpp
        ../../include/nel/3d/lod_character_shape_bank.h
        lod_character_texture.cpp
        ../../include/nel/3d/lod_character_texture.h)
SOURCE_GROUP(CloudScape FILES
        cloud.cpp
        ../../include/nel/3d/cloud.h
        cloud_scape.cpp
        ../../include/nel/3d/cloud_scape.h
        noise_3d.cpp
        ../../include/nel/3d/noise_3d.h)
SOURCE_GROUP(Shadows FILES
        shadow_map.cpp
        ../../include/nel/3d/shadow_map.h
        shadow_map_manager.cpp
        ../../include/nel/3d/shadow_map_manager.h
        shadow_poly_receiver.cpp
        ../../include/nel/3d/shadow_poly_receiver.h)
SOURCE_GROUP(Stereo FILES
		stereo_display.cpp
        ../../include/nel/3d/stereo_display.h
		stereo_hmd.cpp
        ../../include/nel/3d/stereo_hmd.h
		stereo_ovr.cpp
		stereo_ovr_fp.cpp
        ../../include/nel/3d/stereo_ovr.h
		stereo_ovr_04.cpp
		stereo_ovr_04_program.h
        ../../include/nel/3d/stereo_ovr_04.h
		stereo_libvr.cpp
        ../../include/nel/3d/stereo_libvr.h
		stereo_debugger.cpp
		../../include/nel/3d/stereo_debugger.h
		stereo_passthrough.cpp
		../../include/nel/3d/stereo_passthrough.h)

NL_TARGET_LIB(nel3d ${HEADERS} ${SRC})
add_library(NeL::3d ALIAS nel3d)
set_target_properties(nel3d PROPERTIES EXPORT_NAME 3d)

TARGET_LINK_LIBRARIES(nel3d
        #PUBLIC
        NeL::misc
        #PRIVATE
        ${LIBOVR_LIBRARIES}
        ${LIBVR_LIBRARY}
)
TARGET_COMPILE_DEFINITIONS(nel3d
        PRIVATE
        ${LIBOVR_DEFINITIONS}
        ${LIBVR_DEFINITIONS}
)
TARGET_INCLUDE_DIRECTORIES(nel3d
        PRIVATE
        ${LIBVR_INCLUDE_DIR}
)

IF(FREETYPE_FOUND)
    TARGET_LINK_LIBRARIES(nel3d
            #PRIVATE
            Freetype::Freetype
    )
    TARGET_COMPILE_DEFINITIONS(nel3d PRIVATE HAVE_FREETYPE)
ELSE()
    TARGET_COMPILE_DEFINITIONS(nel3d PRIVATE NL_DONT_USE_EXTERNAL_CODE)
ENDIF()

NL_DEFAULT_PROPS(nel3d "NeL, Library: NeL 3D")
NL_ADD_RUNTIME_FLAGS(nel3d)
NL_ADD_STATIC_VID_DRIVERS(nel3d)

NL_ADD_LIB_SUFFIX(nel3d)

IF(WITH_PCH)
  target_precompile_headers(nel3d PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}/std3d.h)
ENDIF()

NL_GEN_PC(nel-3d.pc)

IF(WITH_INSTALL_LIBRARIES OR NOT WITH_STATIC)
  INSTALL(TARGETS nel3d EXPORT "${project_export_name}" LIBRARY DESTINATION ${NL_LIB_PREFIX} ARCHIVE DESTINATION ${NL_LIB_PREFIX} COMPONENT libraries)
ENDIF()

ADD_SUBDIRECTORY(driver)
