Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorClément Foucault <foucault.clem@gmail.com>2021-11-24 21:46:00 +0300
committerClément Foucault <foucault.clem@gmail.com>2021-11-24 21:46:00 +0300
commitb2462b6f5c9e352cbb2d9bbb4e75993a1ec320e5 (patch)
tree7005e7493debd964979de213da1b6b09891b1bc8
parent21ee89c52f1a0f52f473f3f48061221e09708b9d (diff)
Make shaders sources from draw included in the dependency library.
-rw-r--r--source/blender/draw/CMakeLists.txt527
-rw-r--r--source/blender/gpu/CMakeLists.txt17
-rw-r--r--source/blender/gpu/intern/gpu_shader_builder.c6
-rw-r--r--source/blender/gpu/intern/gpu_shader_dependency.cc43
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