diff options
author | Clément Foucault <foucault.clem@gmail.com> | 2021-11-24 21:46:00 +0300 |
---|---|---|
committer | Clément Foucault <foucault.clem@gmail.com> | 2021-11-24 21:46:00 +0300 |
commit | b2462b6f5c9e352cbb2d9bbb4e75993a1ec320e5 (patch) | |
tree | 7005e7493debd964979de213da1b6b09891b1bc8 | |
parent | 21ee89c52f1a0f52f473f3f48061221e09708b9d (diff) |
Make shaders sources from draw included in the dependency library.
-rw-r--r-- | source/blender/draw/CMakeLists.txt | 527 | ||||
-rw-r--r-- | source/blender/gpu/CMakeLists.txt | 17 | ||||
-rw-r--r-- | source/blender/gpu/intern/gpu_shader_builder.c | 6 | ||||
-rw-r--r-- | source/blender/gpu/intern/gpu_shader_dependency.cc | 43 |
4 files changed, 305 insertions, 288 deletions
diff --git a/source/blender/draw/CMakeLists.txt b/source/blender/draw/CMakeLists.txt index b8ca22d33d3..40a8251621a 100644 --- a/source/blender/draw/CMakeLists.txt +++ b/source/blender/draw/CMakeLists.txt @@ -237,256 +237,283 @@ set(LIB bf_windowmanager ) -data_to_c_simple(engines/eevee/shaders/ambient_occlusion_lib.glsl SRC) -data_to_c_simple(engines/eevee/shaders/background_vert.glsl SRC) -data_to_c_simple(engines/eevee/shaders/common_uniforms_lib.glsl SRC) -data_to_c_simple(engines/eevee/shaders/common_utiltex_lib.glsl SRC) -data_to_c_simple(engines/eevee/shaders/lights_lib.glsl SRC) -data_to_c_simple(engines/eevee/shaders/lightprobe_lib.glsl SRC) -data_to_c_simple(engines/eevee/shaders/lightprobe_filter_glossy_frag.glsl SRC) -data_to_c_simple(engines/eevee/shaders/lightprobe_filter_diffuse_frag.glsl SRC) -data_to_c_simple(engines/eevee/shaders/lightprobe_filter_visibility_frag.glsl SRC) -data_to_c_simple(engines/eevee/shaders/lightprobe_geom.glsl SRC) -data_to_c_simple(engines/eevee/shaders/lightprobe_vert.glsl SRC) -data_to_c_simple(engines/eevee/shaders/lightprobe_cube_display_frag.glsl SRC) -data_to_c_simple(engines/eevee/shaders/lightprobe_cube_display_vert.glsl SRC) -data_to_c_simple(engines/eevee/shaders/lightprobe_grid_display_frag.glsl SRC) -data_to_c_simple(engines/eevee/shaders/lightprobe_grid_display_vert.glsl SRC) -data_to_c_simple(engines/eevee/shaders/lightprobe_grid_fill_frag.glsl SRC) -data_to_c_simple(engines/eevee/shaders/lightprobe_planar_display_frag.glsl SRC) -data_to_c_simple(engines/eevee/shaders/lightprobe_planar_display_vert.glsl SRC) -data_to_c_simple(engines/eevee/shaders/lookdev_world_frag.glsl SRC) -data_to_c_simple(engines/eevee/shaders/closure_eval_lib.glsl SRC) -data_to_c_simple(engines/eevee/shaders/closure_eval_diffuse_lib.glsl SRC) -data_to_c_simple(engines/eevee/shaders/closure_eval_glossy_lib.glsl SRC) -data_to_c_simple(engines/eevee/shaders/closure_eval_refraction_lib.glsl SRC) -data_to_c_simple(engines/eevee/shaders/closure_eval_translucent_lib.glsl SRC) -data_to_c_simple(engines/eevee/shaders/closure_type_lib.glsl SRC) -data_to_c_simple(engines/eevee/shaders/effect_bloom_frag.glsl SRC) -data_to_c_simple(engines/eevee/shaders/effect_dof_bokeh_frag.glsl SRC) -data_to_c_simple(engines/eevee/shaders/effect_dof_dilate_tiles_frag.glsl SRC) -data_to_c_simple(engines/eevee/shaders/effect_dof_downsample_frag.glsl SRC) -data_to_c_simple(engines/eevee/shaders/effect_dof_filter_frag.glsl SRC) -data_to_c_simple(engines/eevee/shaders/effect_dof_flatten_tiles_frag.glsl SRC) -data_to_c_simple(engines/eevee/shaders/effect_dof_gather_frag.glsl SRC) -data_to_c_simple(engines/eevee/shaders/effect_dof_lib.glsl SRC) -data_to_c_simple(engines/eevee/shaders/effect_dof_reduce_frag.glsl SRC) -data_to_c_simple(engines/eevee/shaders/effect_dof_resolve_frag.glsl SRC) -data_to_c_simple(engines/eevee/shaders/effect_dof_scatter_frag.glsl SRC) -data_to_c_simple(engines/eevee/shaders/effect_dof_scatter_vert.glsl SRC) -data_to_c_simple(engines/eevee/shaders/effect_dof_setup_frag.glsl SRC) -data_to_c_simple(engines/eevee/shaders/effect_reflection_lib.glsl SRC) -data_to_c_simple(engines/eevee/shaders/effect_reflection_resolve_frag.glsl SRC) -data_to_c_simple(engines/eevee/shaders/effect_reflection_trace_frag.glsl SRC) -data_to_c_simple(engines/eevee/shaders/effect_downsample_frag.glsl SRC) -data_to_c_simple(engines/eevee/shaders/effect_downsample_cube_frag.glsl SRC) -data_to_c_simple(engines/eevee/shaders/effect_gtao_frag.glsl SRC) -data_to_c_simple(engines/eevee/shaders/effect_velocity_resolve_frag.glsl SRC) -data_to_c_simple(engines/eevee/shaders/effect_velocity_tile_frag.glsl SRC) -data_to_c_simple(engines/eevee/shaders/effect_minmaxz_frag.glsl SRC) -data_to_c_simple(engines/eevee/shaders/effect_mist_frag.glsl SRC) -data_to_c_simple(engines/eevee/shaders/effect_motion_blur_frag.glsl SRC) -data_to_c_simple(engines/eevee/shaders/effect_subsurface_frag.glsl SRC) -data_to_c_simple(engines/eevee/shaders/effect_translucency_frag.glsl SRC) -data_to_c_simple(engines/eevee/shaders/effect_temporal_aa.glsl SRC) -data_to_c_simple(engines/eevee/shaders/lightprobe_planar_downsample_frag.glsl SRC) -data_to_c_simple(engines/eevee/shaders/lightprobe_planar_downsample_geom.glsl SRC) -data_to_c_simple(engines/eevee/shaders/lightprobe_planar_downsample_vert.glsl SRC) -data_to_c_simple(engines/eevee/shaders/object_motion_frag.glsl SRC) -data_to_c_simple(engines/eevee/shaders/object_motion_vert.glsl SRC) -data_to_c_simple(engines/eevee/shaders/prepass_frag.glsl SRC) -data_to_c_simple(engines/eevee/shaders/prepass_vert.glsl SRC) -data_to_c_simple(engines/eevee/shaders/shadow_accum_frag.glsl SRC) -data_to_c_simple(engines/eevee/shaders/shadow_frag.glsl SRC) -data_to_c_simple(engines/eevee/shaders/shadow_vert.glsl SRC) -data_to_c_simple(engines/eevee/shaders/bsdf_lut_frag.glsl SRC) -data_to_c_simple(engines/eevee/shaders/btdf_lut_frag.glsl SRC) -data_to_c_simple(engines/eevee/shaders/bsdf_common_lib.glsl SRC) -data_to_c_simple(engines/eevee/shaders/irradiance_lib.glsl SRC) -data_to_c_simple(engines/eevee/shaders/octahedron_lib.glsl SRC) -data_to_c_simple(engines/eevee/shaders/cubemap_lib.glsl SRC) -data_to_c_simple(engines/eevee/shaders/bsdf_sampling_lib.glsl SRC) -data_to_c_simple(engines/eevee/shaders/random_lib.glsl SRC) -data_to_c_simple(engines/eevee/shaders/raytrace_lib.glsl SRC) -data_to_c_simple(engines/eevee/shaders/renderpass_lib.glsl SRC) -data_to_c_simple(engines/eevee/shaders/renderpass_postprocess_frag.glsl SRC) -data_to_c_simple(engines/eevee/shaders/cryptomatte_frag.glsl SRC) -data_to_c_simple(engines/eevee/shaders/ltc_lib.glsl SRC) -data_to_c_simple(engines/eevee/shaders/ssr_lib.glsl SRC) -data_to_c_simple(engines/eevee/shaders/surface_frag.glsl SRC) -data_to_c_simple(engines/eevee/shaders/surface_geom.glsl SRC) -data_to_c_simple(engines/eevee/shaders/surface_lib.glsl SRC) -data_to_c_simple(engines/eevee/shaders/surface_vert.glsl SRC) -data_to_c_simple(engines/eevee/shaders/update_noise_frag.glsl SRC) -data_to_c_simple(engines/eevee/shaders/volumetric_accum_frag.glsl SRC) -data_to_c_simple(engines/eevee/shaders/volumetric_lib.glsl SRC) -data_to_c_simple(engines/eevee/shaders/volumetric_frag.glsl SRC) -data_to_c_simple(engines/eevee/shaders/volumetric_geom.glsl SRC) -data_to_c_simple(engines/eevee/shaders/volumetric_vert.glsl SRC) -data_to_c_simple(engines/eevee/shaders/volumetric_resolve_frag.glsl SRC) -data_to_c_simple(engines/eevee/shaders/volumetric_scatter_frag.glsl SRC) -data_to_c_simple(engines/eevee/shaders/volumetric_integration_frag.glsl SRC) - -data_to_c_simple(engines/workbench/shaders/workbench_cavity_lib.glsl SRC) -data_to_c_simple(engines/workbench/shaders/workbench_common_lib.glsl SRC) -data_to_c_simple(engines/workbench/shaders/workbench_composite_frag.glsl SRC) -data_to_c_simple(engines/workbench/shaders/workbench_curvature_lib.glsl SRC) -data_to_c_simple(engines/workbench/shaders/workbench_data_lib.glsl SRC) -data_to_c_simple(engines/workbench/shaders/workbench_effect_cavity_frag.glsl SRC) -data_to_c_simple(engines/workbench/shaders/workbench_effect_dof_frag.glsl SRC) -data_to_c_simple(engines/workbench/shaders/workbench_effect_outline_frag.glsl SRC) -data_to_c_simple(engines/workbench/shaders/workbench_effect_smaa_frag.glsl SRC) -data_to_c_simple(engines/workbench/shaders/workbench_effect_smaa_vert.glsl SRC) -data_to_c_simple(engines/workbench/shaders/workbench_effect_taa_frag.glsl SRC) -data_to_c_simple(engines/workbench/shaders/workbench_image_lib.glsl SRC) -data_to_c_simple(engines/workbench/shaders/workbench_matcap_lib.glsl SRC) -data_to_c_simple(engines/workbench/shaders/workbench_material_lib.glsl SRC) -data_to_c_simple(engines/workbench/shaders/workbench_merge_infront_frag.glsl SRC) -data_to_c_simple(engines/workbench/shaders/workbench_prepass_frag.glsl SRC) -data_to_c_simple(engines/workbench/shaders/workbench_prepass_hair_vert.glsl SRC) -data_to_c_simple(engines/workbench/shaders/workbench_prepass_pointcloud_vert.glsl SRC) -data_to_c_simple(engines/workbench/shaders/workbench_prepass_vert.glsl SRC) -data_to_c_simple(engines/workbench/shaders/workbench_shader_interface_lib.glsl SRC) -data_to_c_simple(engines/workbench/shaders/workbench_shadow_caps_geom.glsl SRC) -data_to_c_simple(engines/workbench/shaders/workbench_shadow_debug_frag.glsl SRC) -data_to_c_simple(engines/workbench/shaders/workbench_shadow_geom.glsl SRC) -data_to_c_simple(engines/workbench/shaders/workbench_shadow_vert.glsl SRC) -data_to_c_simple(engines/workbench/shaders/workbench_transparent_accum_frag.glsl SRC) -data_to_c_simple(engines/workbench/shaders/workbench_transparent_resolve_frag.glsl SRC) -data_to_c_simple(engines/workbench/shaders/workbench_volume_frag.glsl SRC) -data_to_c_simple(engines/workbench/shaders/workbench_volume_vert.glsl SRC) -data_to_c_simple(engines/workbench/shaders/workbench_world_light_lib.glsl SRC) - -data_to_c_simple(intern/shaders/common_colormanagement_lib.glsl SRC) -data_to_c_simple(intern/shaders/common_globals_lib.glsl SRC) -data_to_c_simple(intern/shaders/common_pointcloud_lib.glsl SRC) -data_to_c_simple(intern/shaders/common_hair_lib.glsl SRC) -data_to_c_simple(intern/shaders/common_hair_refine_vert.glsl SRC) -data_to_c_simple(intern/shaders/common_hair_refine_comp.glsl SRC) -data_to_c_simple(intern/shaders/common_math_lib.glsl SRC) -data_to_c_simple(intern/shaders/common_math_geom_lib.glsl SRC) -data_to_c_simple(intern/shaders/common_view_lib.glsl SRC) -data_to_c_simple(intern/shaders/common_fxaa_lib.glsl SRC) -data_to_c_simple(intern/shaders/common_smaa_lib.glsl SRC) -data_to_c_simple(intern/shaders/common_fullscreen_vert.glsl SRC) - -data_to_c_simple(engines/gpencil/shaders/gpencil_frag.glsl SRC) -data_to_c_simple(engines/gpencil/shaders/gpencil_vert.glsl SRC) -data_to_c_simple(engines/gpencil/shaders/gpencil_antialiasing_frag.glsl SRC) -data_to_c_simple(engines/gpencil/shaders/gpencil_antialiasing_vert.glsl SRC) -data_to_c_simple(engines/gpencil/shaders/gpencil_common_lib.glsl SRC) -data_to_c_simple(engines/gpencil/shaders/gpencil_layer_blend_frag.glsl SRC) -data_to_c_simple(engines/gpencil/shaders/gpencil_mask_invert_frag.glsl SRC) -data_to_c_simple(engines/gpencil/shaders/gpencil_depth_merge_frag.glsl SRC) -data_to_c_simple(engines/gpencil/shaders/gpencil_depth_merge_vert.glsl SRC) -data_to_c_simple(engines/gpencil/shaders/gpencil_vfx_frag.glsl SRC) - -data_to_c_simple(engines/select/shaders/selection_id_3D_vert.glsl SRC) -data_to_c_simple(engines/select/shaders/selection_id_frag.glsl SRC) - -data_to_c_simple(engines/basic/shaders/conservative_depth_geom.glsl SRC) -data_to_c_simple(engines/basic/shaders/depth_vert.glsl SRC) -data_to_c_simple(engines/basic/shaders/depth_frag.glsl SRC) - -data_to_c_simple(engines/overlay/shaders/common_overlay_lib.glsl SRC) -data_to_c_simple(engines/overlay/shaders/antialiasing_frag.glsl SRC) -data_to_c_simple(engines/overlay/shaders/antialiasing_vert.glsl SRC) -data_to_c_simple(engines/overlay/shaders/armature_dof_vert.glsl SRC) -data_to_c_simple(engines/overlay/shaders/armature_dof_solid_frag.glsl SRC) -data_to_c_simple(engines/overlay/shaders/armature_envelope_outline_vert.glsl SRC) -data_to_c_simple(engines/overlay/shaders/armature_envelope_solid_frag.glsl SRC) -data_to_c_simple(engines/overlay/shaders/armature_envelope_solid_vert.glsl SRC) -data_to_c_simple(engines/overlay/shaders/armature_shape_outline_geom.glsl SRC) -data_to_c_simple(engines/overlay/shaders/armature_shape_outline_vert.glsl SRC) -data_to_c_simple(engines/overlay/shaders/armature_shape_solid_frag.glsl SRC) -data_to_c_simple(engines/overlay/shaders/armature_shape_solid_vert.glsl SRC) -data_to_c_simple(engines/overlay/shaders/armature_shape_wire_vert.glsl SRC) -data_to_c_simple(engines/overlay/shaders/armature_sphere_outline_vert.glsl SRC) -data_to_c_simple(engines/overlay/shaders/armature_sphere_solid_frag.glsl SRC) -data_to_c_simple(engines/overlay/shaders/armature_sphere_solid_vert.glsl SRC) -data_to_c_simple(engines/overlay/shaders/armature_stick_frag.glsl SRC) -data_to_c_simple(engines/overlay/shaders/armature_stick_vert.glsl SRC) -data_to_c_simple(engines/overlay/shaders/armature_wire_frag.glsl SRC) -data_to_c_simple(engines/overlay/shaders/armature_wire_vert.glsl SRC) -data_to_c_simple(engines/overlay/shaders/background_frag.glsl SRC) -data_to_c_simple(engines/overlay/shaders/clipbound_vert.glsl SRC) -data_to_c_simple(engines/overlay/shaders/depth_only_vert.glsl SRC) -data_to_c_simple(engines/overlay/shaders/edit_curve_handle_geom.glsl SRC) -data_to_c_simple(engines/overlay/shaders/edit_curve_handle_vert.glsl SRC) -data_to_c_simple(engines/overlay/shaders/edit_curve_point_vert.glsl SRC) -data_to_c_simple(engines/overlay/shaders/edit_curve_wire_vert.glsl SRC) -data_to_c_simple(engines/overlay/shaders/edit_gpencil_canvas_vert.glsl SRC) -data_to_c_simple(engines/overlay/shaders/edit_gpencil_guide_vert.glsl SRC) -data_to_c_simple(engines/overlay/shaders/edit_gpencil_vert.glsl SRC) -data_to_c_simple(engines/overlay/shaders/edit_lattice_point_vert.glsl SRC) -data_to_c_simple(engines/overlay/shaders/edit_lattice_wire_vert.glsl SRC) -data_to_c_simple(engines/overlay/shaders/edit_mesh_common_lib.glsl SRC) -data_to_c_simple(engines/overlay/shaders/edit_mesh_facefill_frag.glsl SRC) -data_to_c_simple(engines/overlay/shaders/edit_mesh_facefill_vert.glsl SRC) -data_to_c_simple(engines/overlay/shaders/edit_mesh_frag.glsl SRC) -data_to_c_simple(engines/overlay/shaders/edit_mesh_geom.glsl SRC) -data_to_c_simple(engines/overlay/shaders/edit_mesh_normal_vert.glsl SRC) -data_to_c_simple(engines/overlay/shaders/edit_mesh_analysis_frag.glsl SRC) -data_to_c_simple(engines/overlay/shaders/edit_mesh_analysis_vert.glsl SRC) -data_to_c_simple(engines/overlay/shaders/edit_mesh_skin_root_vert.glsl SRC) -data_to_c_simple(engines/overlay/shaders/edit_mesh_vert.glsl SRC) -data_to_c_simple(engines/overlay/shaders/edit_particle_strand_vert.glsl SRC) -data_to_c_simple(engines/overlay/shaders/edit_particle_point_vert.glsl SRC) -data_to_c_simple(engines/overlay/shaders/edit_uv_edges_vert.glsl SRC) -data_to_c_simple(engines/overlay/shaders/edit_uv_edges_geom.glsl SRC) -data_to_c_simple(engines/overlay/shaders/edit_uv_edges_frag.glsl SRC) -data_to_c_simple(engines/overlay/shaders/edit_uv_verts_vert.glsl SRC) -data_to_c_simple(engines/overlay/shaders/edit_uv_verts_frag.glsl SRC) -data_to_c_simple(engines/overlay/shaders/edit_uv_faces_vert.glsl SRC) -data_to_c_simple(engines/overlay/shaders/edit_uv_face_dots_vert.glsl SRC) -data_to_c_simple(engines/overlay/shaders/edit_uv_image_vert.glsl SRC) -data_to_c_simple(engines/overlay/shaders/edit_uv_image_mask_frag.glsl SRC) -data_to_c_simple(engines/overlay/shaders/edit_uv_stretching_vert.glsl SRC) -data_to_c_simple(engines/overlay/shaders/edit_uv_tiled_image_borders_vert.glsl SRC) -data_to_c_simple(engines/overlay/shaders/extra_frag.glsl SRC) -data_to_c_simple(engines/overlay/shaders/extra_vert.glsl SRC) -data_to_c_simple(engines/overlay/shaders/extra_groundline_vert.glsl SRC) -data_to_c_simple(engines/overlay/shaders/extra_lightprobe_grid_vert.glsl SRC) -data_to_c_simple(engines/overlay/shaders/extra_loose_point_frag.glsl SRC) -data_to_c_simple(engines/overlay/shaders/extra_loose_point_vert.glsl SRC) -data_to_c_simple(engines/overlay/shaders/extra_point_vert.glsl SRC) -data_to_c_simple(engines/overlay/shaders/extra_wire_frag.glsl SRC) -data_to_c_simple(engines/overlay/shaders/extra_wire_vert.glsl SRC) -data_to_c_simple(engines/overlay/shaders/facing_frag.glsl SRC) -data_to_c_simple(engines/overlay/shaders/facing_vert.glsl SRC) -data_to_c_simple(engines/overlay/shaders/grid_background_frag.glsl SRC) -data_to_c_simple(engines/overlay/shaders/grid_frag.glsl SRC) -data_to_c_simple(engines/overlay/shaders/grid_vert.glsl SRC) -data_to_c_simple(engines/overlay/shaders/image_vert.glsl SRC) -data_to_c_simple(engines/overlay/shaders/image_frag.glsl SRC) -data_to_c_simple(engines/overlay/shaders/motion_path_line_geom.glsl SRC) -data_to_c_simple(engines/overlay/shaders/motion_path_line_vert.glsl SRC) -data_to_c_simple(engines/overlay/shaders/motion_path_point_vert.glsl SRC) -data_to_c_simple(engines/overlay/shaders/outline_detect_frag.glsl SRC) -data_to_c_simple(engines/overlay/shaders/outline_prepass_frag.glsl SRC) -data_to_c_simple(engines/overlay/shaders/outline_prepass_geom.glsl SRC) -data_to_c_simple(engines/overlay/shaders/outline_prepass_vert.glsl SRC) -data_to_c_simple(engines/overlay/shaders/paint_face_vert.glsl SRC) -data_to_c_simple(engines/overlay/shaders/paint_point_vert.glsl SRC) -data_to_c_simple(engines/overlay/shaders/paint_texture_frag.glsl SRC) -data_to_c_simple(engines/overlay/shaders/paint_texture_vert.glsl SRC) -data_to_c_simple(engines/overlay/shaders/paint_vertcol_frag.glsl SRC) -data_to_c_simple(engines/overlay/shaders/paint_vertcol_vert.glsl SRC) -data_to_c_simple(engines/overlay/shaders/paint_weight_frag.glsl SRC) -data_to_c_simple(engines/overlay/shaders/paint_weight_vert.glsl SRC) -data_to_c_simple(engines/overlay/shaders/paint_wire_vert.glsl SRC) -data_to_c_simple(engines/overlay/shaders/particle_vert.glsl SRC) -data_to_c_simple(engines/overlay/shaders/particle_frag.glsl SRC) -data_to_c_simple(engines/overlay/shaders/sculpt_mask_vert.glsl SRC) -data_to_c_simple(engines/overlay/shaders/sculpt_mask_frag.glsl SRC) -data_to_c_simple(engines/overlay/shaders/volume_velocity_vert.glsl SRC) -data_to_c_simple(engines/overlay/shaders/volume_gridlines_vert.glsl SRC) -data_to_c_simple(engines/overlay/shaders/wireframe_vert.glsl SRC) -data_to_c_simple(engines/overlay/shaders/wireframe_frag.glsl SRC) -data_to_c_simple(engines/overlay/shaders/xray_fade_frag.glsl SRC) - -data_to_c_simple(engines/image/shaders/engine_image_frag.glsl SRC) -data_to_c_simple(engines/image/shaders/engine_image_vert.glsl SRC) +set(GLSL_SRC + engines/eevee/shaders/ambient_occlusion_lib.glsl + engines/eevee/shaders/background_vert.glsl + engines/eevee/shaders/common_uniforms_lib.glsl + engines/eevee/shaders/common_utiltex_lib.glsl + engines/eevee/shaders/lights_lib.glsl + engines/eevee/shaders/lightprobe_lib.glsl + engines/eevee/shaders/lightprobe_filter_glossy_frag.glsl + engines/eevee/shaders/lightprobe_filter_diffuse_frag.glsl + engines/eevee/shaders/lightprobe_filter_visibility_frag.glsl + engines/eevee/shaders/lightprobe_geom.glsl + engines/eevee/shaders/lightprobe_vert.glsl + engines/eevee/shaders/lightprobe_cube_display_frag.glsl + engines/eevee/shaders/lightprobe_cube_display_vert.glsl + engines/eevee/shaders/lightprobe_grid_display_frag.glsl + engines/eevee/shaders/lightprobe_grid_display_vert.glsl + engines/eevee/shaders/lightprobe_grid_fill_frag.glsl + engines/eevee/shaders/lightprobe_planar_display_frag.glsl + engines/eevee/shaders/lightprobe_planar_display_vert.glsl + engines/eevee/shaders/lookdev_world_frag.glsl + engines/eevee/shaders/closure_eval_lib.glsl + engines/eevee/shaders/closure_eval_diffuse_lib.glsl + engines/eevee/shaders/closure_eval_glossy_lib.glsl + engines/eevee/shaders/closure_eval_refraction_lib.glsl + engines/eevee/shaders/closure_eval_translucent_lib.glsl + engines/eevee/shaders/closure_type_lib.glsl + engines/eevee/shaders/effect_bloom_frag.glsl + engines/eevee/shaders/effect_dof_bokeh_frag.glsl + engines/eevee/shaders/effect_dof_dilate_tiles_frag.glsl + engines/eevee/shaders/effect_dof_downsample_frag.glsl + engines/eevee/shaders/effect_dof_filter_frag.glsl + engines/eevee/shaders/effect_dof_flatten_tiles_frag.glsl + engines/eevee/shaders/effect_dof_gather_frag.glsl + engines/eevee/shaders/effect_dof_lib.glsl + engines/eevee/shaders/effect_dof_reduce_frag.glsl + engines/eevee/shaders/effect_dof_resolve_frag.glsl + engines/eevee/shaders/effect_dof_scatter_frag.glsl + engines/eevee/shaders/effect_dof_scatter_vert.glsl + engines/eevee/shaders/effect_dof_setup_frag.glsl + engines/eevee/shaders/effect_reflection_lib.glsl + engines/eevee/shaders/effect_reflection_resolve_frag.glsl + engines/eevee/shaders/effect_reflection_trace_frag.glsl + engines/eevee/shaders/effect_downsample_frag.glsl + engines/eevee/shaders/effect_downsample_cube_frag.glsl + engines/eevee/shaders/effect_gtao_frag.glsl + engines/eevee/shaders/effect_velocity_resolve_frag.glsl + engines/eevee/shaders/effect_velocity_tile_frag.glsl + engines/eevee/shaders/effect_minmaxz_frag.glsl + engines/eevee/shaders/effect_mist_frag.glsl + engines/eevee/shaders/effect_motion_blur_frag.glsl + engines/eevee/shaders/effect_subsurface_frag.glsl + engines/eevee/shaders/effect_translucency_frag.glsl + engines/eevee/shaders/effect_temporal_aa.glsl + engines/eevee/shaders/lightprobe_planar_downsample_frag.glsl + engines/eevee/shaders/lightprobe_planar_downsample_geom.glsl + engines/eevee/shaders/lightprobe_planar_downsample_vert.glsl + engines/eevee/shaders/object_motion_frag.glsl + engines/eevee/shaders/object_motion_vert.glsl + engines/eevee/shaders/prepass_frag.glsl + engines/eevee/shaders/prepass_vert.glsl + engines/eevee/shaders/shadow_accum_frag.glsl + engines/eevee/shaders/shadow_frag.glsl + engines/eevee/shaders/shadow_vert.glsl + engines/eevee/shaders/bsdf_lut_frag.glsl + engines/eevee/shaders/btdf_lut_frag.glsl + engines/eevee/shaders/bsdf_common_lib.glsl + engines/eevee/shaders/irradiance_lib.glsl + engines/eevee/shaders/octahedron_lib.glsl + engines/eevee/shaders/cubemap_lib.glsl + engines/eevee/shaders/bsdf_sampling_lib.glsl + engines/eevee/shaders/random_lib.glsl + engines/eevee/shaders/raytrace_lib.glsl + engines/eevee/shaders/renderpass_lib.glsl + engines/eevee/shaders/renderpass_postprocess_frag.glsl + engines/eevee/shaders/cryptomatte_frag.glsl + engines/eevee/shaders/ltc_lib.glsl + engines/eevee/shaders/ssr_lib.glsl + engines/eevee/shaders/surface_frag.glsl + engines/eevee/shaders/surface_geom.glsl + engines/eevee/shaders/surface_lib.glsl + engines/eevee/shaders/surface_vert.glsl + engines/eevee/shaders/update_noise_frag.glsl + engines/eevee/shaders/volumetric_accum_frag.glsl + engines/eevee/shaders/volumetric_lib.glsl + engines/eevee/shaders/volumetric_frag.glsl + engines/eevee/shaders/volumetric_geom.glsl + engines/eevee/shaders/volumetric_vert.glsl + engines/eevee/shaders/volumetric_resolve_frag.glsl + engines/eevee/shaders/volumetric_scatter_frag.glsl + engines/eevee/shaders/volumetric_integration_frag.glsl + + engines/workbench/shaders/workbench_cavity_lib.glsl + engines/workbench/shaders/workbench_common_lib.glsl + engines/workbench/shaders/workbench_composite_frag.glsl + engines/workbench/shaders/workbench_curvature_lib.glsl + engines/workbench/shaders/workbench_data_lib.glsl + engines/workbench/shaders/workbench_effect_cavity_frag.glsl + engines/workbench/shaders/workbench_effect_dof_frag.glsl + engines/workbench/shaders/workbench_effect_outline_frag.glsl + engines/workbench/shaders/workbench_effect_smaa_frag.glsl + engines/workbench/shaders/workbench_effect_smaa_vert.glsl + engines/workbench/shaders/workbench_effect_taa_frag.glsl + engines/workbench/shaders/workbench_image_lib.glsl + engines/workbench/shaders/workbench_matcap_lib.glsl + engines/workbench/shaders/workbench_material_lib.glsl + engines/workbench/shaders/workbench_merge_infront_frag.glsl + engines/workbench/shaders/workbench_prepass_frag.glsl + engines/workbench/shaders/workbench_prepass_hair_vert.glsl + engines/workbench/shaders/workbench_prepass_pointcloud_vert.glsl + engines/workbench/shaders/workbench_prepass_vert.glsl + engines/workbench/shaders/workbench_shader_interface_lib.glsl + engines/workbench/shaders/workbench_shadow_caps_geom.glsl + engines/workbench/shaders/workbench_shadow_debug_frag.glsl + engines/workbench/shaders/workbench_shadow_geom.glsl + engines/workbench/shaders/workbench_shadow_vert.glsl + engines/workbench/shaders/workbench_transparent_accum_frag.glsl + engines/workbench/shaders/workbench_transparent_resolve_frag.glsl + engines/workbench/shaders/workbench_volume_frag.glsl + engines/workbench/shaders/workbench_volume_vert.glsl + engines/workbench/shaders/workbench_world_light_lib.glsl + + intern/shaders/common_colormanagement_lib.glsl + intern/shaders/common_globals_lib.glsl + intern/shaders/common_pointcloud_lib.glsl + intern/shaders/common_hair_lib.glsl + intern/shaders/common_hair_refine_vert.glsl + intern/shaders/common_hair_refine_comp.glsl + intern/shaders/common_math_lib.glsl + intern/shaders/common_math_geom_lib.glsl + intern/shaders/common_view_lib.glsl + intern/shaders/common_fxaa_lib.glsl + intern/shaders/common_smaa_lib.glsl + intern/shaders/common_fullscreen_vert.glsl + + engines/gpencil/shaders/gpencil_frag.glsl + engines/gpencil/shaders/gpencil_vert.glsl + engines/gpencil/shaders/gpencil_antialiasing_frag.glsl + engines/gpencil/shaders/gpencil_antialiasing_vert.glsl + engines/gpencil/shaders/gpencil_common_lib.glsl + engines/gpencil/shaders/gpencil_layer_blend_frag.glsl + engines/gpencil/shaders/gpencil_mask_invert_frag.glsl + engines/gpencil/shaders/gpencil_depth_merge_frag.glsl + engines/gpencil/shaders/gpencil_depth_merge_vert.glsl + engines/gpencil/shaders/gpencil_vfx_frag.glsl + + engines/select/shaders/selection_id_3D_vert.glsl + engines/select/shaders/selection_id_frag.glsl + + engines/basic/shaders/conservative_depth_geom.glsl + engines/basic/shaders/depth_vert.glsl + engines/basic/shaders/depth_frag.glsl + + engines/overlay/shaders/common_overlay_lib.glsl + engines/overlay/shaders/antialiasing_frag.glsl + engines/overlay/shaders/antialiasing_vert.glsl + engines/overlay/shaders/armature_dof_vert.glsl + engines/overlay/shaders/armature_dof_solid_frag.glsl + engines/overlay/shaders/armature_envelope_outline_vert.glsl + engines/overlay/shaders/armature_envelope_solid_frag.glsl + engines/overlay/shaders/armature_envelope_solid_vert.glsl + engines/overlay/shaders/armature_shape_outline_geom.glsl + engines/overlay/shaders/armature_shape_outline_vert.glsl + engines/overlay/shaders/armature_shape_solid_frag.glsl + engines/overlay/shaders/armature_shape_solid_vert.glsl + engines/overlay/shaders/armature_shape_wire_vert.glsl + engines/overlay/shaders/armature_sphere_outline_vert.glsl + engines/overlay/shaders/armature_sphere_solid_frag.glsl + engines/overlay/shaders/armature_sphere_solid_vert.glsl + engines/overlay/shaders/armature_stick_frag.glsl + engines/overlay/shaders/armature_stick_vert.glsl + engines/overlay/shaders/armature_wire_frag.glsl + engines/overlay/shaders/armature_wire_vert.glsl + engines/overlay/shaders/background_frag.glsl + engines/overlay/shaders/clipbound_vert.glsl + engines/overlay/shaders/depth_only_vert.glsl + engines/overlay/shaders/edit_curve_handle_geom.glsl + engines/overlay/shaders/edit_curve_handle_vert.glsl + engines/overlay/shaders/edit_curve_point_vert.glsl + engines/overlay/shaders/edit_curve_wire_vert.glsl + engines/overlay/shaders/edit_gpencil_canvas_vert.glsl + engines/overlay/shaders/edit_gpencil_guide_vert.glsl + engines/overlay/shaders/edit_gpencil_vert.glsl + engines/overlay/shaders/edit_lattice_point_vert.glsl + engines/overlay/shaders/edit_lattice_wire_vert.glsl + engines/overlay/shaders/edit_mesh_common_lib.glsl + engines/overlay/shaders/edit_mesh_facefill_frag.glsl + engines/overlay/shaders/edit_mesh_facefill_vert.glsl + engines/overlay/shaders/edit_mesh_frag.glsl + engines/overlay/shaders/edit_mesh_geom.glsl + engines/overlay/shaders/edit_mesh_normal_vert.glsl + engines/overlay/shaders/edit_mesh_analysis_frag.glsl + engines/overlay/shaders/edit_mesh_analysis_vert.glsl + engines/overlay/shaders/edit_mesh_skin_root_vert.glsl + engines/overlay/shaders/edit_mesh_vert.glsl + engines/overlay/shaders/edit_particle_strand_vert.glsl + engines/overlay/shaders/edit_particle_point_vert.glsl + engines/overlay/shaders/edit_uv_edges_vert.glsl + engines/overlay/shaders/edit_uv_edges_geom.glsl + engines/overlay/shaders/edit_uv_edges_frag.glsl + engines/overlay/shaders/edit_uv_verts_vert.glsl + engines/overlay/shaders/edit_uv_verts_frag.glsl + engines/overlay/shaders/edit_uv_faces_vert.glsl + engines/overlay/shaders/edit_uv_face_dots_vert.glsl + engines/overlay/shaders/edit_uv_image_vert.glsl + engines/overlay/shaders/edit_uv_image_mask_frag.glsl + engines/overlay/shaders/edit_uv_stretching_vert.glsl + engines/overlay/shaders/edit_uv_tiled_image_borders_vert.glsl + engines/overlay/shaders/extra_frag.glsl + engines/overlay/shaders/extra_vert.glsl + engines/overlay/shaders/extra_groundline_vert.glsl + engines/overlay/shaders/extra_lightprobe_grid_vert.glsl + engines/overlay/shaders/extra_loose_point_frag.glsl + engines/overlay/shaders/extra_loose_point_vert.glsl + engines/overlay/shaders/extra_point_vert.glsl + engines/overlay/shaders/extra_wire_frag.glsl + engines/overlay/shaders/extra_wire_vert.glsl + engines/overlay/shaders/facing_frag.glsl + engines/overlay/shaders/facing_vert.glsl + engines/overlay/shaders/grid_background_frag.glsl + engines/overlay/shaders/grid_frag.glsl + engines/overlay/shaders/grid_vert.glsl + engines/overlay/shaders/image_vert.glsl + engines/overlay/shaders/image_frag.glsl + engines/overlay/shaders/motion_path_line_geom.glsl + engines/overlay/shaders/motion_path_line_vert.glsl + engines/overlay/shaders/motion_path_point_vert.glsl + engines/overlay/shaders/outline_detect_frag.glsl + engines/overlay/shaders/outline_prepass_frag.glsl + engines/overlay/shaders/outline_prepass_geom.glsl + engines/overlay/shaders/outline_prepass_vert.glsl + engines/overlay/shaders/paint_face_vert.glsl + engines/overlay/shaders/paint_point_vert.glsl + engines/overlay/shaders/paint_texture_frag.glsl + engines/overlay/shaders/paint_texture_vert.glsl + engines/overlay/shaders/paint_vertcol_frag.glsl + engines/overlay/shaders/paint_vertcol_vert.glsl + engines/overlay/shaders/paint_weight_frag.glsl + engines/overlay/shaders/paint_weight_vert.glsl + engines/overlay/shaders/paint_wire_vert.glsl + engines/overlay/shaders/particle_vert.glsl + engines/overlay/shaders/particle_frag.glsl + engines/overlay/shaders/sculpt_mask_vert.glsl + engines/overlay/shaders/sculpt_mask_frag.glsl + engines/overlay/shaders/volume_velocity_vert.glsl + engines/overlay/shaders/volume_gridlines_vert.glsl + engines/overlay/shaders/wireframe_vert.glsl + engines/overlay/shaders/wireframe_frag.glsl + engines/overlay/shaders/xray_fade_frag.glsl + + engines/image/shaders/engine_image_frag.glsl + engines/image/shaders/engine_image_vert.glsl +) + +set(GLSL_C) +foreach(GLSL_FILE ${GLSL_SRC}) + data_to_c_simple(${GLSL_FILE} GLSL_C) +endforeach() + +blender_add_lib(bf_draw_shaders "${GLSL_C}" "" "" "") + +list(APPEND LIB + bf_draw_shaders +) + +set(GLSL_SOURCE_CONTENT "") +foreach(GLSL_FILE ${GLSL_SRC}) + get_filename_component(GLSL_FILE_NAME ${GLSL_FILE} NAME) + string(REPLACE "." "_" GLSL_FILE_NAME_UNDERSCORES ${GLSL_FILE_NAME}) + string(APPEND GLSL_SOURCE_CONTENT "SHADER_SOURCE\(datatoc_${GLSL_FILE_NAME_UNDERSCORES}, \"${GLSL_FILE_NAME}\"\)\n") +endforeach() + +set(glsl_source_list_file "${CMAKE_CURRENT_BINARY_DIR}/glsl_draw_source_list.h") +file(GENERATE OUTPUT ${glsl_source_list_file} CONTENT "${GLSL_SOURCE_CONTENT}") +list(APPEND SRC ${glsl_source_list_file}) +list(APPEND INC ${CMAKE_CURRENT_BINARY_DIR}) + +target_include_directories(bf_draw_shaders PUBLIC ${CMAKE_CURRENT_BINARY_DIR}) list(APPEND INC ) diff --git a/source/blender/gpu/CMakeLists.txt b/source/blender/gpu/CMakeLists.txt index 603328e6f5d..d2b510c8ff8 100644 --- a/source/blender/gpu/CMakeLists.txt +++ b/source/blender/gpu/CMakeLists.txt @@ -386,7 +386,11 @@ foreach(GLSL_FILE ${GLSL_SRC}) data_to_c_simple(${GLSL_FILE} GLSL_C) endforeach() -list(APPEND SRC ${GLSL_C}) +blender_add_lib(bf_gpu_shaders "${GLSL_C}" "" "" "") + +list(APPEND LIB + bf_gpu_shaders +) set(GLSL_SOURCE_CONTENT "") foreach(GLSL_FILE ${GLSL_SRC}) @@ -395,12 +399,11 @@ foreach(GLSL_FILE ${GLSL_SRC}) string(APPEND GLSL_SOURCE_CONTENT "SHADER_SOURCE\(datatoc_${GLSL_FILE_NAME_UNDERSCORES}, \"${GLSL_FILE_NAME}\"\)\n") endforeach() -set(glsl_source_list_file "${CMAKE_CURRENT_BINARY_DIR}/glsl_source_list.h") +set(glsl_source_list_file "${CMAKE_CURRENT_BINARY_DIR}/glsl_gpu_source_list.h") file(GENERATE OUTPUT ${glsl_source_list_file} CONTENT "${GLSL_SOURCE_CONTENT}") list(APPEND SRC ${glsl_source_list_file}) list(APPEND INC ${CMAKE_CURRENT_BINARY_DIR}) - set(SHADER_DESCRIPTORS ../draw/engines/workbench/shaders/workbench_effect_cavity.desc.h ../draw/engines/workbench/shaders/workbench_prepass.desc.h @@ -422,10 +425,14 @@ file(GENERATE OUTPUT ${shader_descriptor_list_file} CONTENT "${SHADER_DESCRIPTOR add_executable(shader_builder intern/gpu_shader_builder.c intern/gpu_shader_dependency.cc - ${GLSL_C} ${shader_descriptor_list_file} ) -target_link_libraries(shader_builder PRIVATE bf_intern_guardedalloc bf_blenlib ${PLATFORM_LINKLIBS}) +target_link_libraries(shader_builder PRIVATE + bf_intern_guardedalloc + bf_blenlib + bf_gpu_shaders + bf_draw_shaders + ${PLATFORM_LINKLIBS}) target_include_directories(shader_builder PRIVATE ${INC} ${CMAKE_CURRENT_BINARY_DIR}) set(BAKED_DESCRIPTORS_FILE ${CMAKE_CURRENT_BINARY_DIR}/shader_descriptors_baked.c) diff --git a/source/blender/gpu/intern/gpu_shader_builder.c b/source/blender/gpu/intern/gpu_shader_builder.c index 2751f2279e0..7c1ba12178c 100644 --- a/source/blender/gpu/intern/gpu_shader_builder.c +++ b/source/blender/gpu/intern/gpu_shader_builder.c @@ -450,7 +450,7 @@ int main(int argc, char const *argv[]) fprintf(fp, "#include \"gpu_shader_descriptor.h\"\n"); -#if 0 /* TEST */ +#if 1 /* TEST */ gpu_shader_dependency_init(); #endif @@ -482,7 +482,7 @@ int main(int argc, char const *argv[]) result = 1; } #endif -#if 0 /* TEST */ +#if 1 /* TEST */ if (descriptor->vertex_source) { char *src = gpu_shader_dependency_get_resolved_source(descriptor->vertex_source); @@ -497,7 +497,7 @@ int main(int argc, char const *argv[]) write_descriptor(fp, descriptor); } -#if 0 /* TEST */ +#if 1 /* TEST */ gpu_shader_dependency_exit(); #endif diff --git a/source/blender/gpu/intern/gpu_shader_dependency.cc b/source/blender/gpu/intern/gpu_shader_dependency.cc index e1fb5bd4c8a..21e48af04e5 100644 --- a/source/blender/gpu/intern/gpu_shader_dependency.cc +++ b/source/blender/gpu/intern/gpu_shader_dependency.cc @@ -27,14 +27,15 @@ #include <iostream> #include "BLI_map.hh" +#include "BLI_set.hh" #include "BLI_string_ref.hh" -#include "BLI_vector.hh" #include "gpu_shader_dependency_private.h" extern "C" { #define SHADER_SOURCE(datatoc, filename) extern char datatoc[]; -#include "glsl_source_list.h" +#include "glsl_draw_source_list.h" +#include "glsl_gpu_source_list.h" #undef SHADER_SOURCE } @@ -45,10 +46,8 @@ using GPUSourceDictionnary = Map<StringRef, struct GPUSource *>; struct GPUSource { StringRefNull filename; StringRefNull source; - Vector<GPUSource *> dependencies; + Set<GPUSource *> dependencies; bool dependencies_init = false; - /* Tag when pragma once has been set. */ - bool visited = false; GPUSource(const char *file, const char *datatoc) : filename(file), source(datatoc){}; @@ -82,39 +81,22 @@ struct GPUSource { } /* Recursive. */ source->init_dependencies(dict); - dependencies.append(source); - }; - } - void reset_recursive() - { - visited = false; - for (auto dep : dependencies) { - dep->reset_recursive(); - } + std::cout << "Add: " << dependency_name << " to " << filename << "." << std::endl; + dependencies.add(source); + + pos++; + }; } - void build_recursive(std::string &str) + /* Returns the final string with all inlcudes done. */ + void build(std::string &str) { - if (visited) { - return; - } - visited = true; - /* Recursive. */ for (auto dep : dependencies) { - dep->build_recursive(str); + str += dep->source; } str += source; } - - /* Returns the final string with all inlcudes done. - * IMPORTANT: Not threadsafe because of visited flag! Could be easily fixed by gathering all - * deps in the dependencies vector. */ - void build(std::string &str) - { - reset_recursive(); - build_recursive(str); - } }; } // namespace blender::gpu @@ -129,6 +111,7 @@ void gpu_shader_dependency_init() #define SHADER_SOURCE(datatoc, filename) \ g_sources->add_new(filename, new GPUSource(filename, datatoc)); +#include "glsl_draw_source_list.h" #include "glsl_source_list.h" #undef SHADER_SOURCE |