diff --git a/source/blender/gpu/shaders/material/gpu_shader_material_bump.glsl b/source/blender/gpu/shaders/material/gpu_shader_material_bump.glsl index e0931128485..d7c50e213e5 100644 --- a/source/blender/gpu/shaders/material/gpu_shader_material_bump.glsl +++ b/source/blender/gpu/shaders/material/gpu_shader_material_bump.glsl @@ -5,6 +5,13 @@ void differentiate_texco(vec3 v, out vec3 df) df = v + dF_impl(v); } +/* Overload for UVs which are loaded as generic attributes. */ +void differentiate_texco(vec4 v, out vec3 df) +{ + /* Implementation defined. */ + df = v.xyz + dF_impl(v.xyz); +} + void node_bump( float strength, float dist, float height, vec3 N, vec2 dHd, float invert, out vec3 result) { diff --git a/source/blender/gpu/shaders/material/gpu_shader_material_texture_coordinates.glsl b/source/blender/gpu/shaders/material/gpu_shader_material_texture_coordinates.glsl index a3666164cf7..204f134dfa6 100644 --- a/source/blender/gpu/shaders/material/gpu_shader_material_texture_coordinates.glsl +++ b/source/blender/gpu/shaders/material/gpu_shader_material_texture_coordinates.glsl @@ -1,7 +1,7 @@ void node_tex_coord(mat4 obmatinv, vec3 attr_orco, - vec3 attr_uv, + vec4 attr_uv, out vec3 generated, out vec3 normal, out vec3 uv, @@ -12,7 +12,7 @@ void node_tex_coord(mat4 obmatinv, { generated = attr_orco; normal = normal_world_to_object(g_data.N); - uv = attr_uv; + uv = attr_uv.xyz; object = transform_point((obmatinv[3][3] == 0.0) ? ModelMatrixInverse : obmatinv, g_data.P); camera = coordinate_camera(g_data.P); window = coordinate_screen(g_data.P);