From 7e26323724cbb13be3c8352419aaa805c1d6c5b6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Cl=C3=A9ment=20Foucault?= Date: Tue, 26 Aug 2025 15:38:17 +0200 Subject: [PATCH] EEVEE: Remove GPencil from geometry types The Grease pencil is taking a different direction and will not be supported in EEVEE. See https://devtalk.blender.org/t/2025-08-13-grease-pencil-rendering-meeting/41845 --- source/blender/draw/CMakeLists.txt | 1 - .../draw/engines/eevee/eevee_material.hh | 3 - .../draw/engines/eevee/eevee_shader.cc | 17 ----- .../draw/engines/eevee/shaders/CMakeLists.txt | 1 - .../shaders/eevee_geom_gpencil_vert.glsl | 74 ------------------- .../engines/eevee/shaders/eevee_surf_lib.glsl | 8 -- .../shaders/infos/eevee_material_info.hh | 14 ---- 7 files changed, 118 deletions(-) delete mode 100644 source/blender/draw/engines/eevee/shaders/eevee_geom_gpencil_vert.glsl diff --git a/source/blender/draw/CMakeLists.txt b/source/blender/draw/CMakeLists.txt index 85e14c4c5c6..88d16cc74a8 100644 --- a/source/blender/draw/CMakeLists.txt +++ b/source/blender/draw/CMakeLists.txt @@ -373,7 +373,6 @@ set(GLSL_SRC engines/eevee/shaders/eevee_gbuffer_closure_test.glsl engines/eevee/shaders/eevee_gbuffer_normal_test.glsl engines/eevee/shaders/eevee_geom_curves_vert.glsl - engines/eevee/shaders/eevee_geom_gpencil_vert.glsl engines/eevee/shaders/eevee_geom_mesh_vert.glsl engines/eevee/shaders/eevee_geom_pointcloud_vert.glsl engines/eevee/shaders/eevee_geom_volume_vert.glsl diff --git a/source/blender/draw/engines/eevee/eevee_material.hh b/source/blender/draw/engines/eevee/eevee_material.hh index a29f0f0339d..3cc773d90b4 100644 --- a/source/blender/draw/engines/eevee/eevee_material.hh +++ b/source/blender/draw/engines/eevee/eevee_material.hh @@ -52,7 +52,6 @@ enum eMaterialGeometry { MAT_GEOM_MESH = 0, MAT_GEOM_POINTCLOUD, MAT_GEOM_CURVES, - MAT_GEOM_GPENCIL, MAT_GEOM_VOLUME, /* These maps to special shader. */ @@ -192,8 +191,6 @@ static inline eMaterialGeometry to_material_geometry(const Object *ob) return MAT_GEOM_CURVES; case OB_VOLUME: return MAT_GEOM_VOLUME; - case OB_GREASE_PENCIL: - return MAT_GEOM_GPENCIL; case OB_POINTCLOUD: return MAT_GEOM_POINTCLOUD; default: diff --git a/source/blender/draw/engines/eevee/eevee_shader.cc b/source/blender/draw/engines/eevee/eevee_shader.cc index b467cc1aca5..52d5fc208c1 100644 --- a/source/blender/draw/engines/eevee/eevee_shader.cc +++ b/source/blender/draw/engines/eevee/eevee_shader.cc @@ -578,9 +578,6 @@ class SamplerSlots { if (ELEM(geometry_type, MAT_GEOM_POINTCLOUD, MAT_GEOM_CURVES)) { index_ = 1; } - else if (geometry_type == MAT_GEOM_GPENCIL) { - index_ = 2; - } first_reserved_ = MATERIAL_TEXTURE_RESERVED_SLOT_FIRST; last_reserved_ = MATERIAL_TEXTURE_RESERVED_SLOT_LAST_NO_EVAL; @@ -834,17 +831,6 @@ void ShaderModule::material_create_info_amend(GPUMaterial *gpumat, GPUCodegenOut * make the attribs_load function calls valid. */ ATTR_FALLTHROUGH; - case MAT_GEOM_GPENCIL: - /** - * Only one uv and one color attribute layer are supported by gpencil objects and they are - * already declared in another createInfo. These are here to make the attribs_load - * function calls valid. - */ - for (auto &input : info.vertex_inputs_) { - global_vars << input.type << " " << input.name << ";\n"; - } - info.vertex_inputs_.clear(); - break; case MAT_GEOM_VOLUME: /** Volume grid attributes come from 3D textures. Transfer attributes to samplers. */ for (auto &input : info.vertex_inputs_) { @@ -982,9 +968,6 @@ void ShaderModule::material_create_info_amend(GPUMaterial *gpumat, GPUCodegenOut case MAT_GEOM_WORLD: info.additional_info("eevee_geom_world"); break; - case MAT_GEOM_GPENCIL: - info.additional_info("eevee_geom_gpencil"); - break; case MAT_GEOM_CURVES: info.additional_info("eevee_geom_curves"); break; diff --git a/source/blender/draw/engines/eevee/shaders/CMakeLists.txt b/source/blender/draw/engines/eevee/shaders/CMakeLists.txt index bac70a468e1..3e8efe0efd6 100644 --- a/source/blender/draw/engines/eevee/shaders/CMakeLists.txt +++ b/source/blender/draw/engines/eevee/shaders/CMakeLists.txt @@ -30,7 +30,6 @@ set(SRC_GLSL_VERT eevee_display_lightprobe_sphere_vert.glsl eevee_display_lightprobe_volume_vert.glsl eevee_geom_curves_vert.glsl - # eevee_geom_gpencil_vert.glsl # Not yet supported eevee_geom_mesh_vert.glsl eevee_geom_pointcloud_vert.glsl eevee_geom_volume_vert.glsl diff --git a/source/blender/draw/engines/eevee/shaders/eevee_geom_gpencil_vert.glsl b/source/blender/draw/engines/eevee/shaders/eevee_geom_gpencil_vert.glsl deleted file mode 100644 index 718b7f6fd52..00000000000 --- a/source/blender/draw/engines/eevee/shaders/eevee_geom_gpencil_vert.glsl +++ /dev/null @@ -1,74 +0,0 @@ -/* SPDX-FileCopyrightText: 2022-2023 Blender Authors - * - * SPDX-License-Identifier: GPL-2.0-or-later */ - -#include "infos/eevee_material_info.hh" - -VERTEX_SHADER_CREATE_INFO(eevee_clip_plane) -VERTEX_SHADER_CREATE_INFO(eevee_geom_gpencil) - -#include "draw_grease_pencil_lib.glsl" -#include "draw_model_lib.glsl" -#include "eevee_attributes_gpencil_lib.glsl" -#include "eevee_nodetree_vert_lib.glsl" -#include "eevee_reverse_z_lib.glsl" -#include "eevee_surf_lib.glsl" -#include "eevee_velocity_lib.glsl" - -void main() -{ - DRW_VIEW_FROM_RESOURCE_ID; -#ifdef MAT_SHADOW - shadow_viewport_layer_set(int(drw_view_id), int(render_view_buf[drw_view_id].viewport_index)); -#endif - - init_interface(); - - /* TODO(fclem): Expose through a node? */ - float4 sspos; - float2 aspect; - float strength; - float hardness; - float2 thickness; - - gl_Position = gpencil_vertex( - /* TODO */ - float4(1024.0f, 1024.0f, 1.0f / 1024.0f, 1.0f / 1024.0f), - interp.P, - interp.N, - g_color, - strength, - g_uvs, - sspos, - aspect, - thickness, - hardness); -#ifdef MAT_VELOCITY - /* GPencil do not support deformation motion blur. */ - float3 lP_curr = drw_point_world_to_object(interp.P); - /* FIXME(fclem): Evaluating before displacement avoid displacement being treated as motion but - * ignores motion from animated displacement. Supporting animated displacement motion vectors - * would require evaluating the node-tree multiple time with different node-tree UBOs evaluated - * at different times, but also with different attributes (maybe we could assume static attribute - * at least). */ - velocity_vertex(lP_curr, lP_curr, lP_curr, motion.prev, motion.next); -#endif - - init_globals(); - attrib_load(); - - interp.P += nodetree_displacement(); - -#ifdef MAT_CLIP_PLANE - clip_interp.clip_distance = dot(clip_plane.plane, float4(interp.P, 1.0f)); -#endif - -#ifdef MAT_SHADOW - float3 vs_P = drw_point_world_to_view(interp.P); - ShadowRenderView view = render_view_buf[drw_view_id]; - shadow_clip.position = shadow_position_vector_get(vs_P, view); - shadow_clip.vector = shadow_clip_vector_get(vs_P, view.clip_distance_inv); -#endif - - gl_Position = reverse_z::transform(gl_Position); -} diff --git a/source/blender/draw/engines/eevee/shaders/eevee_surf_lib.glsl b/source/blender/draw/engines/eevee/shaders/eevee_surf_lib.glsl index b9d4fed13a9..ce295b67119 100644 --- a/source/blender/draw/engines/eevee/shaders/eevee_surf_lib.glsl +++ b/source/blender/draw/engines/eevee/shaders/eevee_surf_lib.glsl @@ -70,12 +70,6 @@ void init_globals_curves() #endif } -void init_globals_gpencil() -{ - /* Undo back-face flip as the grease-pencil normal is already pointing towards the camera. */ - g_data.N = g_data.Ni = interp.N; -} - void init_globals() { /* Default values. */ @@ -114,8 +108,6 @@ void init_globals() init_globals_mesh(); #elif defined(MAT_GEOM_CURVES) init_globals_curves(); -#elif defined(MAT_GEOM_GPENCIL) - init_globals_gpencil(); #endif } diff --git a/source/blender/draw/engines/eevee/shaders/infos/eevee_material_info.hh b/source/blender/draw/engines/eevee/shaders/infos/eevee_material_info.hh index 9a18cf67f9e..24d0e20b24d 100644 --- a/source/blender/draw/engines/eevee/shaders/infos/eevee_material_info.hh +++ b/source/blender/draw/engines/eevee/shaders/infos/eevee_material_info.hh @@ -90,18 +90,6 @@ ADDITIONAL_INFO(draw_volume_infos) ADDITIONAL_INFO(draw_view) GPU_SHADER_CREATE_END() -GPU_SHADER_CREATE_INFO(eevee_geom_gpencil) -ADDITIONAL_INFO(eevee_shared) -DEFINE("MAT_GEOM_GPENCIL") -VERTEX_SOURCE("eevee_geom_gpencil_vert.glsl") -VERTEX_OUT(eevee_surf_iface) -ADDITIONAL_INFO(draw_gpencil) -ADDITIONAL_INFO(draw_modelmat) -ADDITIONAL_INFO(draw_object_infos) -ADDITIONAL_INFO(draw_resource_id_varying) -ADDITIONAL_INFO(draw_resource_id) -GPU_SHADER_CREATE_END() - GPU_SHADER_NAMED_INTERFACE_INFO(eevee_surf_curve_iface, curve_interp) SMOOTH(float2, barycentric_coords) SMOOTH(float3, tangent) @@ -358,8 +346,6 @@ GPU_SHADER_CREATE_END() # define EEVEE_MAT_GEOM_VARIATIONS(prefix, ...) \ CREATE_INFO_VARIANT(prefix##_world, eevee_geom_world, __VA_ARGS__) \ - /* Turned off until dependency on common_view/math_lib are sorted out. */ \ - /* CREATE_INFO_VARIANT(prefix##_gpencil, eevee_geom_gpencil, __VA_ARGS__) */ \ CREATE_INFO_VARIANT(prefix##_curves, eevee_geom_curves, __VA_ARGS__) \ CREATE_INFO_VARIANT(prefix##_mesh, eevee_geom_mesh, __VA_ARGS__) \ CREATE_INFO_VARIANT(prefix##_pointcloud, eevee_geom_pointcloud, __VA_ARGS__) \