Page MenuHome

EEVEE: Port existing EEVEE shaders and generated materials to use GPUShaderCreateInfo.
ClosedPublic

Authored by Thomas Dinges (dingto) on Oct 13 2022, 12:33 PM.

Details

Summary

Required by Metal backend for efficient shader compilation. EEVEE material resource binding permutations now controlled via CreateInfo and selected based on material options. Other existing CreateInfo's also modified to ensure explicitness for depth-writing mode. Other missing bindings also addressed to ensure full compliance with the Metal backend.

Authored by Apple: Michael Parkin-White

Ref T96261

Diff Detail

Repository
rB Blender
Branch
viewport_commits/EEVEEShadersCreateInfo_10
Build Status
Buildable 24958
Build 24958: arc lint + arc unit

Event Timeline

Thomas Dinges (dingto) requested review of this revision.Oct 13 2022, 12:33 PM
Thomas Dinges (dingto) created this revision.

@Clément Foucault (fclem) @Jeroen Bakker (jbakker) As this is a large diff, affecting many files, its possible there are some oversights with regard to GPU workarounds or alternative paths for different platforms.

Workaround/alternative path compatibility
The areas I have been unable to validate while testing on macOS:

  • Paths utilising differing draw_model_mat modes
  • Paths utilising differing drw_ResourceID passing modes
  • Certain cases where conditional "dummy" bindings are required by certain platforms to avoid errors. E.g. dummy vertex buffer on Intel.
  • and possibly a few others (Optimized volumetric pass, differing modes for gl_BaseInstance etc;)

I just wanted to raise these to ensure the DIFF is well-validated against configs that I do not have immediate access to test on.

Metal compatibility
I have also introduced a number of smaller requirements for the Metal compatibility, such as ensuring any shader writing to gl_FragDepth explicitly mentions the .depth_write(..) parameter. I also plan to submit a follow-up DIFF which fixes a few other issues in the Metal backend with respect to supporting non-contiguous bind-indices for all resource types (previously only textures supported this, so there were a few issues with UBOs and vertex attributes, which have now been resolved.)

CreateInfo multiple include support
One other outstanding item from discussions was that resource collisions were occurring once supporting EEVEE library includes, as several libraries may include each other, and based on the recursive nature and dependency ordering, create-infos may be included multiple times. While duplicate source insertion was previously guarded against, prevention of duplicate resources was not.
So the resource insertion has temporarily been replaced with .append_no_duplicates to get around this. Similarly, to ensure resource types are flagged as duplicates, CreateInfo's which are used as libraries should not have auto resource locations, however, the highest level shader should.
An ideal solution to this problem would be to create a distinction between CreateInfos that are directly used for shader generation, and those which are only used as library includes.

I propose making a GPU_SHADER_CREATE_INFO_LIB(..) subclass variant of CreateInfo, or replacing .additional_info with .library_info, where the key distinction is that additional_infos take the existing path and recursively generate themselves, for cases where you have a shader permutation which adds a define to an existing one, as this is efficient for permutations. Whereas the Library info's would not need to be independently finalised, a CreateInfo would recursively resolve the set of unique library includes, while respecting include order, and then extract the resources one at a time. This is just one idea for a more efficient solution, though open to help implement a different model.

Thanks!

Clément Foucault (fclem) requested changes to this revision.Oct 18 2022, 1:06 PM
Clément Foucault (fclem) added inline comments.
source/blender/gpu/intern/gpu_shader_create_info.cc
137

This cause issues. This is because the images and samplers are not in the same "namespace" for OpenGL.

Prefer patching that in the backend. Maybe at ShaderInterfacecreation rather than here.

source/blender/gpu/intern/gpu_shader_create_info.hh
192

Maybe rename to NONE instead and comment what's the difference with UNCHANGED.

This revision now requires changes to proceed.Oct 18 2022, 1:06 PM
source/blender/draw/engines/eevee/eevee_shaders_extra.cc
19–20

Why is this necessary?

EEVEE: Port existing EEVEE shaders and generated materials to use GPUShaderCreateInfo.

Required by Metal backend for efficient shader compilation. EEVEE material resource binding permutations now controlled via CreateInfo and selected based on material options. Other existing CreateInfo's also modified to ensure explicitness for depth-writing mode. Other missing bindings also addressed to ensure full compliance with the Metal backend.

Clément Foucault (fclem) requested changes to this revision.Nov 28 2022, 12:00 AM

I have committed the changes related to the depth_write which I think did not belong to this diff. This way it is easier for you to avoid adding them to other patches since they are required.

I am convinced this does add much complexity (which was kind of hidden by the GLSL declaration all over the place) to a system which was already complex. But it is already a sinking ship so I believe it is for the better (to allow for EEVEE-next to be better).

I would just rename engine_eevee_shared_defines.h to engine_eevee_shared_defines.h and have some other nitpicks.

Note that I did not yet test if it was actually working.

@Michael Parkin-White (MichaelPW)

So the resource insertion has temporarily been replaced with .append_no_duplicates to get around this. Similarly, to ensure resource types are flagged as duplicates, CreateInfo's which are used as libraries should not have auto resource locations, however, the highest level shader should.
An ideal solution to this problem would be to create a distinction between CreateInfos that are directly used for shader generation, and those which are only used as library includes.

I would prefer to just use a flag on the create info that switches between both append types.

source/blender/draw/engines/eevee/eevee_legacy_shared_dof_defines.h
2 ↗(On Diff #57322)

Why a different file and not engine_eevee_shared_defines.h?

source/blender/draw/engines/eevee/eevee_shaders.c
163 ↗(On Diff #57322)

I'm guessing we can get rid of all this extern char list.

353–359 ↗(On Diff #57322)

Only keep eevee_legacy_probe_filter_visiblity which should have #define IRRADIANCE_HL2. The other one is here only for historical reasons.

858 ↗(On Diff #57322)

why these asserts only here? they are covered by the compile time shader compilations.

1234 ↗(On Diff #57322)

Typo

source/blender/draw/engines/eevee/shaders/background_vert.glsl
5–9

Remove every occurence of these #ifdef inside EEVEE. I believe these were only needed during the transition phase. Since this patch port every remaining shaders, this is of no use. Just delete the whole block.

source/blender/draw/engines/overlay/shaders/infos/overlay_armature_info.hh
103–112

Theses changes need to be removed.

source/blender/gpu/intern/gpu_shader.cc
62–63

Use StringRefNull.

Sadly we still don't have any sanitize method for that so leave the rest of the code as is then.

source/blender/gpu/shaders/infos/gpu_shader_3D_polyline_info.hh
31 ↗(On Diff #57322)

Thoses do not belong to this patch. I guess they were made for internal purpose. Note that many of them were already commented out with // .do_static_compilation(true) /* TODO fix on GL */

This revision now requires changes to proceed.Nov 28 2022, 12:00 AM

Would be great if this gets into master when finished!
Currently the patch isn't working as it fails compiling many shaders. You can enable WITH_GPU_BUILDTIME_SHADER_BUILDER to detect those. See

1cd /home/jeroen/blender-git/build_linux/source/blender/gpu && /home/jeroen/blender-git/build_linux/bin/shader_builder /home/jeroen/blender-git/build_linux/source/blender/gpu/shader_baked.hh
2ERROR (gpu.shader): eevee_legacy_depth_of_field_gather_common FragShader:
3 |
4 2346 | dof_gather_accumulate_resolve(total_sample_count, accum_data, outColor, outWeight, outOcclusion);
5 | ^
6 | effect_dof_gather_frag.glsl:233:86: Error: `outOcclusion' undeclared
7 |
8 | dof_gather_accumulate_resolve(total_sample_count, accum_data, outColor, outWeight, outOcclusion);
9 | ^
10 | effect_dof_gather_frag.glsl:233:3: Error: no matching function for call to `dof_gather_accumulate_resolve(int, DofGatherData, vec4, float, error)'; candidates are:
11 | effect_dof_gather_frag.glsl:233:3: Error: void dof_gather_accumulate_resolve(int, DofGatherData, vec4, float, vec2)
12 |
13 2361 | outColor *= outWeight;
14 | ^
15 | effect_dof_gather_frag.glsl:248:15: `outWeight' used uninitialized
16 |
17 2401 | outOcclusion = vec2(0.0, 0.0);
18 | ^
19 | effect_dof_gather_frag.glsl:288:3: Error: `outOcclusion' undeclared
20 | effect_dof_gather_frag.glsl:288:3: Error: value of type vec2 cannot be assigned to variable of type error
21
22ERROR (gpu.shader): eevee_legacy_maxz_copydepth_layer FragShader:
23 |
24 107 | out vec4 fragColor;
25 | ^
26 | effect_minmaxz_frag.glsl:31:11: Error: `fragColor' redeclared
27
28ERROR (gpu.shader): gpu_shader_3D_polyline_uniform_color_no_geom VertShader:
29 |
30 172 | in_pos0 = vertex_fetch_attribute(src_index_a, pos, vec4).xyz;
31 | ^
32 | gpu_shader_3D_polyline_vert_no_geom.glsl:90:58: Error: syntax error, unexpected ')', expecting '('
33
34ERROR (gpu.shader): eevee_legacy_taa_resolve FragShader:
35 |
36 1249 | FragColor = safe_color(mix(color_history, color, alpha));
37 | ^
38 | effect_temporal_aa.glsl:113:52: Error: `alpha' undeclared
39 |
40 | FragColor = safe_color(mix(color_history, color, alpha));
41 | ^
42 | effect_temporal_aa.glsl:113:26: Error: no matching function for call to `mix(vec4, vec4, error)'; candidates are:
43 | effect_temporal_aa.glsl:113:26: Error: float mix(float, float, float)
44 | effect_temporal_aa.glsl:113:26: Error: vec2 mix(vec2, vec2, float)
45 | effect_temporal_aa.glsl:113:26: Error: vec3 mix(vec3, vec3, float)
46 | effect_temporal_aa.glsl:113:26: Error: vec4 mix(vec4, vec4, float)
47 | effect_temporal_aa.glsl:113:26: Error: vec2 mix(vec2, vec2, vec2)
48 | effect_temporal_aa.glsl:113:26: Error: vec3 mix(vec3, vec3, vec3)
49 | effect_temporal_aa.glsl:113:26: Error: vec4 mix(vec4, vec4, vec4)
50 | effect_temporal_aa.glsl:113:26: Error: double mix(double, double, double)
51 | effect_temporal_aa.glsl:113:26: Error: dvec2 mix(dvec2, dvec2, double)
52 | effect_temporal_aa.glsl:113:26: Error: dvec3 mix(dvec3, dvec3, double)
53 | effect_temporal_aa.glsl:113:26: Error: dvec4 mix(dvec4, dvec4, double)
54 | effect_temporal_aa.glsl:113:26: Error: dvec2 mix(dvec2, dvec2, dvec2)
55 | effect_temporal_aa.glsl:113:26: Error: dvec3 mix(dvec3, dvec3, dvec3)
56 | effect_temporal_aa.glsl:113:26: Error: dvec4 mix(dvec4, dvec4, dvec4)
57 | effect_temporal_aa.glsl:113:26: Error: float mix(float, float, bool)
58 | effect_temporal_aa.glsl:113:26: Error: vec2 mix(vec2, vec2, bvec2)
59 | effect_temporal_aa.glsl:113:26: Error: vec3 mix(vec3, vec3, bvec3)
60 | effect_temporal_aa.glsl:113:26: Error: vec4 mix(vec4, vec4, bvec4)
61 | effect_temporal_aa.glsl:113:26: Error: double mix(double, double, bool)
62 | effect_temporal_aa.glsl:113:26: Error: dvec2 mix(dvec2, dvec2, bvec2)
63 | effect_temporal_aa.glsl:113:26: Error: dvec3 mix(dvec3, dvec3, bvec3)
64 | effect_temporal_aa.glsl:113:26: Error: dvec4 mix(dvec4, dvec4, bvec4)
65 |
66 | FragColor = safe_color(mix(color_history, color, alpha));
67 | ^
68 | effect_temporal_aa.glsl:113:15: Error: no matching function for call to `safe_color(error)'; candidates are:
69 | effect_temporal_aa.glsl:113:15: Error: vec4 safe_color(vec4)
70 | effect_temporal_aa.glsl:113:15: Error: vec3 safe_color(vec3)
71
72ERROR (gpu.shader): gpu_shader_3D_polyline_no_geom VertShader:
73 |
74 170 | in_pos0 = vertex_fetch_attribute(src_index_a, pos, vec4).xyz;
75 | ^
76 | gpu_shader_3D_polyline_vert_no_geom.glsl:90:58: Error: syntax error, unexpected ')', expecting '('
77
78ERROR (gpu.shader): eevee_legacy_depth_of_field_resolve_common FragShader:
79 |
80 2016 | int total_sample_count = dof_gather_total_sample_count(i_radius + 1, DOF_SLIGHT_FOCUS_DENSITY);
81 | ^
82 | effect_dof_lib.glsl:538:72: Error: `DOF_SLIGHT_FOCUS_DENSITY' undeclared
83 |
84 | int total_sample_count = dof_gather_total_sample_count(i_radius + 1, DOF_SLIGHT_FOCUS_DENSITY);
85 | ^
86 | effect_dof_lib.glsl:538:28: Error: no matching function for call to `dof_gather_total_sample_count(int, error)'; candidates are:
87 | effect_dof_lib.glsl:538:28: Error: int dof_gather_total_sample_count(int, int)
88 |
89 2018 | accum_data.layer_opacity += float(total_sample_count) * fac * fac;
90 | ^
91 | effect_dof_lib.glsl:540:37: `total_sample_count' used uninitialized
92 |
93 2164 | const int resolve_ring_density = DOF_SLIGHT_FOCUS_DENSITY;
94 | ^
95 | effect_dof_resolve_frag.glsl:48:36: Error: `DOF_SLIGHT_FOCUS_DENSITY' undeclared
96 |
97 2174 | int ring_sample_count = resolve_ring_density * ring_distance;
98 | ^
99 | effect_dof_resolve_frag.glsl:58:27: `resolve_ring_density' used uninitialized
100 |
101 2176 | int s = sample_id * (4 / resolve_ring_density) +
102 | ^
103 | effect_dof_resolve_frag.glsl:60:28: `resolve_ring_density' used uninitialized
104 |
105 2177 | int(noise.y * float((4 - resolve_ring_density) * ring_distance));
106 | ^
107 | effect_dof_resolve_frag.glsl:61:28: `resolve_ring_density' used uninitialized
108 |
109 2243 | int total_sample_count = dof_gather_total_sample_count(i_radius + 1, resolve_ring_density);
110 | ^
111 | effect_dof_resolve_frag.glsl:127:72: `resolve_ring_density' used uninitialized
112
113ERROR (gpu.shader): gpu_shader_3D_polyline_flat_color_no_geom VertShader:
114 |
115 172 | in_pos0 = vertex_fetch_attribute(src_index_a, pos, vec4).xyz;
116 | ^
117 | gpu_shader_3D_polyline_vert_no_geom.glsl:90:58: Error: syntax error, unexpected ')', expecting '('
118
119ERROR (gpu.shader): eevee_legacy_effect_motion_blur_object_common VertShader:
120 |
121 1515 | prevWorldPos = (prevModelMatrix * vec4(useDeform ? prv : pos, 1.0)).xyz;
122 | ^
123 | object_motion_vert.glsl:52:54: Error: `prv' undeclared
124 |
125 | prevWorldPos = (prevModelMatrix * vec4(useDeform ? prv : pos, 1.0)).xyz;
126 | ^
127 | object_motion_vert.glsl:52:60: Error: `pos' undeclared
128 |
129 | prevWorldPos = (prevModelMatrix * vec4(useDeform ? prv : pos, 1.0)).xyz;
130 | ^
131 | object_motion_vert.glsl:52:42: Error: type mismatch
132 |
133 | prevWorldPos = (prevModelMatrix * vec4(useDeform ? prv : pos, 1.0)).xyz;
134 | ^
135 | object_motion_vert.glsl:52:37: Error: cannot construct `vec4' from a non-numeric data type
136 |
137 | prevWorldPos = (prevModelMatrix * vec4(useDeform ? prv : pos, 1.0)).xyz;
138 | ^
139 | object_motion_vert.glsl:52:19: Error: operands to arithmetic operators must be numeric
140 |
141 | prevWorldPos = (prevModelMatrix * vec4(useDeform ? prv : pos, 1.0)).xyz;
142 | ^
143 | object_motion_vert.glsl:52:18: Error: type mismatch
144 |
145 1516 | currWorldPos = (currModelMatrix * vec4(pos, 1.0)).xyz;
146 | ^
147 | object_motion_vert.glsl:53:42: Error: `pos' undeclared
148 |
149 | currWorldPos = (currModelMatrix * vec4(pos, 1.0)).xyz;
150 | ^
151 | object_motion_vert.glsl:53:37: Error: cannot construct `vec4' from a non-numeric data type
152 |
153 | currWorldPos = (currModelMatrix * vec4(pos, 1.0)).xyz;
154 | ^
155 | object_motion_vert.glsl:53:19: Error: operands to arithmetic operators must be numeric
156 |
157 | currWorldPos = (currModelMatrix * vec4(pos, 1.0)).xyz;
158 | ^
159 | object_motion_vert.glsl:53:18: Error: type mismatch
160 |
161 1517 | nextWorldPos = (nextModelMatrix * vec4(useDeform ? nxt : pos, 1.0)).xyz;
162 | ^
163 | object_motion_vert.glsl:54:54: Error: `nxt' undeclared
164 |
165 | nextWorldPos = (nextModelMatrix * vec4(useDeform ? nxt : pos, 1.0)).xyz;
166 | ^
167 | object_motion_vert.glsl:54:60: Error: `pos' undeclared
168 |
169 | nextWorldPos = (nextModelMatrix * vec4(useDeform ? nxt : pos, 1.0)).xyz;
170 | ^
171 | object_motion_vert.glsl:54:42: Error: type mismatch
172 |
173 | nextWorldPos = (nextModelMatrix * vec4(useDeform ? nxt : pos, 1.0)).xyz;
174 | ^
175 | object_motion_vert.glsl:54:37: Error: cannot construct `vec4' from a non-numeric data type
176 |
177 | nextWorldPos = (nextModelMatrix * vec4(useDeform ? nxt : pos, 1.0)).xyz;
178 | ^
179 | object_motion_vert.glsl:54:19: Error: operands to arithmetic operators must be numeric
180 |
181 | nextWorldPos = (nextModelMatrix * vec4(useDeform ? nxt : pos, 1.0)).xyz;
182 | ^
183 | object_motion_vert.glsl:54:18: Error: type mismatch
184
185ERROR (gpu.shader): eevee_legacy_minz_downdepth FragShader:
186 |
187 105 | out vec4 fragColor;
188 | ^
189 | effect_minmaxz_frag.glsl:31:11: Error: `fragColor' redeclared
190
191ERROR (gpu.shader): gpu_shader_3D_polyline VertShader:
192 |
193 87 | interp.final_color = color;
194 | ^
195 | gpu_shader_3D_polyline_vert.glsl:6:24: Error: `color' undeclared
196
197ERROR (gpu.shader): eevee_legacy_minz_downlevel FragShader:
198 |
199 105 | out vec4 fragColor;
200 | ^
201 | effect_minmaxz_frag.glsl:31:11: Error: `fragColor' redeclared
202
203ERROR (gpu.shader): eevee_legacy_lightprobe_planar_downsample_common FragShader:
204 |
205 400 | FragColor = textureLod(source, vec3(uvs + ofs.xy, lightprobe_geom_iface.layer), 0.0);
206 | ^
207 | lightprobe_planar_downsample_frag.glsl:34:53: Error: `lightprobe_geom_iface' undeclared
208 | lightprobe_planar_downsample_frag.glsl:34:53: Error: type mismatch
209 |
210 | FragColor = textureLod(source, vec3(uvs + ofs.xy, lightprobe_geom_iface.layer), 0.0);
211 | ^
212 | lightprobe_planar_downsample_frag.glsl:34:34: Error: cannot construct `vec3' from a non-numeric data type
213 |
214 | FragColor = textureLod(source, vec3(uvs + ofs.xy, lightprobe_geom_iface.layer), 0.0);
215 | ^
216 | lightprobe_planar_downsample_frag.glsl:34:15: Error: no matching function for call to `textureLod(sampler2DArray, error, float)'; candidates are:
217 | lightprobe_planar_downsample_frag.glsl:34:15: Error: vec4 textureLod(sampler1D, float, float)
218 | lightprobe_planar_downsample_frag.glsl:34:15: Error: ivec4 textureLod(isampler1D, float, float)
219 | lightprobe_planar_downsample_frag.glsl:34:15: Error: uvec4 textureLod(usampler1D, float, float)
220 | lightprobe_planar_downsample_frag.glsl:34:15: Error: vec4 textureLod(sampler2D, vec2, float)
221 | lightprobe_planar_downsample_frag.glsl:34:15: Error: ivec4 textureLod(isampler2D, vec2, float)
222 | lightprobe_planar_downsample_frag.glsl:34:15: Error: uvec4 textureLod(usampler2D, vec2, float)
223 | lightprobe_planar_downsample_frag.glsl:34:15: Error: vec4 textureLod(sampler3D, vec3, float)
224 | lightprobe_planar_downsample_frag.glsl:34:15: Error: ivec4 textureLod(isampler3D, vec3, float)
225 | lightprobe_planar_downsample_frag.glsl:34:15: Error: uvec4 textureLod(usampler3D, vec3, float)
226 | lightprobe_planar_downsample_frag.glsl:34:15: Error: vec4 textureLod(samplerCube, vec3, float)
227 | lightprobe_planar_downsample_frag.glsl:34:15: Error: ivec4 textureLod(isamplerCube, vec3, float)
228 | lightprobe_planar_downsample_frag.glsl:34:15: Error: uvec4 textureLod(usamplerCube, vec3, float)
229 | lightprobe_planar_downsample_frag.glsl:34:15: Error: float textureLod(sampler1DShadow, vec3, float)
230 | lightprobe_planar_downsample_frag.glsl:34:15: Error: float textureLod(sampler2DShadow, vec3, float)
231 | lightprobe_planar_downsample_frag.glsl:34:15: Error: vec4 textureLod(sampler1DArray, vec2, float)
232 | lightprobe_planar_downsample_frag.glsl:34:15: Error: ivec4 textureLod(isampler1DArray, vec2, float)
233 | lightprobe_planar_downsample_frag.glsl:34:15: Error: uvec4 textureLod(usampler1DArray, vec2, float)
234 | lightprobe_planar_downsample_frag.glsl:34:15: Error: vec4 textureLod(sampler2DArray, vec3, float)
235 | lightprobe_planar_downsample_frag.glsl:34:15: Error: ivec4 textureLod(isampler2DArray, vec3, float)
236 | lightprobe_planar_downsample_frag.glsl:34:15: Error: uvec4 textureLod(usampler2DArray, vec3, float)
237 | lightprobe_planar_downsample_frag.glsl:34:15: Error: vec4 textureLod(samplerCubeArray, vec4, float)
238 | lightprobe_planar_downsample_frag.glsl:34:15: Error: ivec4 textureLod(isamplerCubeArray, vec4, float)
239 | lightprobe_planar_downsample_frag.glsl:34:15: Error: uvec4 textureLod(usamplerCubeArray, vec4, float)
240 | lightprobe_planar_downsample_frag.glsl:34:15: Error: float textureLod(sampler1DArrayShadow, vec3, float)
241 |
242 401 | FragColor += textureLod(source, vec3(uvs + ofs.xw, lightprobe_geom_iface.layer), 0.0);
243 | ^
244 | lightprobe_planar_downsample_frag.glsl:35:54: Error: `lightprobe_geom_iface' undeclared
245 | lightprobe_planar_downsample_frag.glsl:35:54: Error: type mismatch
246 |
247 | FragColor += textureLod(source, vec3(uvs + ofs.xw, lightprobe_geom_iface.layer), 0.0);
248 | ^
249 | lightprobe_planar_downsample_frag.glsl:35:35: Error: cannot construct `vec3' from a non-numeric data type
250 |
251 | FragColor += textureLod(source, vec3(uvs + ofs.xw, lightprobe_geom_iface.layer), 0.0);
252 | ^
253 | lightprobe_planar_downsample_frag.glsl:35:16: Error: no matching function for call to `textureLod(sampler2DArray, error, float)'; candidates are:
254 | lightprobe_planar_downsample_frag.glsl:35:16: Error: vec4 textureLod(sampler1D, float, float)
255 | lightprobe_planar_downsample_frag.glsl:35:16: Error: ivec4 textureLod(isampler1D, float, float)
256 | lightprobe_planar_downsample_frag.glsl:35:16: Error: uvec4 textureLod(usampler1D, float, float)
257 | lightprobe_planar_downsample_frag.glsl:35:16: Error: vec4 textureLod(sampler2D, vec2, float)
258 | lightprobe_planar_downsample_frag.glsl:35:16: Error: ivec4 textureLod(isampler2D, vec2, float)
259 | lightprobe_planar_downsample_frag.glsl:35:16: Error: uvec4 textureLod(usampler2D, vec2, float)
260 | lightprobe_planar_downsample_frag.glsl:35:16: Error: vec4 textureLod(sampler3D, vec3, float)
261 | lightprobe_planar_downsample_frag.glsl:35:16: Error: ivec4 textureLod(isampler3D, vec3, float)
262 | lightprobe_planar_downsample_frag.glsl:35:16: Error: uvec4 textureLod(usampler3D, vec3, float)
263 | lightprobe_planar_downsample_frag.glsl:35:16: Error: vec4 textureLod(samplerCube, vec3, float)
264 | lightprobe_planar_downsample_frag.glsl:35:16: Error: ivec4 textureLod(isamplerCube, vec3, float)
265 | lightprobe_planar_downsample_frag.glsl:35:16: Error: uvec4 textureLod(usamplerCube, vec3, float)
266 | lightprobe_planar_downsample_frag.glsl:35:16: Error: float textureLod(sampler1DShadow, vec3, float)
267 | lightprobe_planar_downsample_frag.glsl:35:16: Error: float textureLod(sampler2DShadow, vec3, float)
268 | lightprobe_planar_downsample_frag.glsl:35:16: Error: vec4 textureLod(sampler1DArray, vec2, float)
269 | lightprobe_planar_downsample_frag.glsl:35:16: Error: ivec4 textureLod(isampler1DArray, vec2, float)
270 | lightprobe_planar_downsample_frag.glsl:35:16: Error: uvec4 textureLod(usampler1DArray, vec2, float)
271 | lightprobe_planar_downsample_frag.glsl:35:16: Error: vec4 textureLod(sampler2DArray, vec3, float)
272 | lightprobe_planar_downsample_frag.glsl:35:16: Error: ivec4 textureLod(isampler2DArray, vec3, float)
273 | lightprobe_planar_downsample_frag.glsl:35:16: Error: uvec4 textureLod(usampler2DArray, vec3, float)
274 | lightprobe_planar_downsample_frag.glsl:35:16: Error: vec4 textureLod(samplerCubeArray, vec4, float)
275 | lightprobe_planar_downsample_frag.glsl:35:16: Error: ivec4 textureLod(isamplerCubeArray, vec4, float)
276 | lightprobe_planar_downsample_frag.glsl:35:16: Error: uvec4 textureLod(usamplerCubeArray, vec4, float)
277 | lightprobe_planar_downsample_frag.glsl:35:16: Error: float textureLod(sampler1DArrayShadow, vec3, float)
278 |
279 402 | FragColor += textureLod(source, vec3(uvs + ofs.zy, lightprobe_geom_iface.layer), 0.0);
280 | ^
281 | lightprobe_planar_downsample_frag.glsl:36:54: Error: `lightprobe_geom_iface' undeclared
282 | lightprobe_planar_downsample_frag.glsl:36:54: Error: type mismatch
283 |
284 | FragColor += textureLod(source, vec3(uvs + ofs.zy, lightprobe_geom_iface.layer), 0.0);
285 | ^
286 | lightprobe_planar_downsample_frag.glsl:36:35: Error: cannot construct `vec3' from a non-numeric data type
287 |
288 | FragColor += textureLod(source, vec3(uvs + ofs.zy, lightprobe_geom_iface.layer), 0.0);
289 | ^
290 | lightprobe_planar_downsample_frag.glsl:36:16: Error: no matching function for call to `textureLod(sampler2DArray, error, float)'; candidates are:
291 | lightprobe_planar_downsample_frag.glsl:36:16: Error: vec4 textureLod(sampler1D, float, float)
292 | lightprobe_planar_downsample_frag.glsl:36:16: Error: ivec4 textureLod(isampler1D, float, float)
293 | lightprobe_planar_downsample_frag.glsl:36:16: Error: uvec4 textureLod(usampler1D, float, float)
294 | lightprobe_planar_downsample_frag.glsl:36:16: Error: vec4 textureLod(sampler2D, vec2, float)
295 | lightprobe_planar_downsample_frag.glsl:36:16: Error: ivec4 textureLod(isampler2D, vec2, float)
296 | lightprobe_planar_downsample_frag.glsl:36:16: Error: uvec4 textureLod(usampler2D, vec2, float)
297 | lightprobe_planar_downsample_frag.glsl:36:16: Error: vec4 textureLod(sampler3D, vec3, float)
298 | lightprobe_planar_downsample_frag.glsl:36:16: Error: ivec4 textureLod(isampler3D, vec3, float)
299 | lightprobe_planar_downsample_frag.glsl:36:16: Error: uvec4 textureLod(usampler3D, vec3, float)
300 | lightprobe_planar_downsample_frag.glsl:36:16: Error: vec4 textureLod(samplerCube, vec3, float)
301 | lightprobe_planar_downsample_frag.glsl:36:16: Error: ivec4 textureLod(isamplerCube, vec3, float)
302 | lightprobe_planar_downsample_frag.glsl:36:16: Error: uvec4 textureLod(usamplerCube, vec3, float)
303 | lightprobe_planar_downsample_frag.glsl:36:16: Error: float textureLod(sampler1DShadow, vec3, float)
304 | lightprobe_planar_downsample_frag.glsl:36:16: Error: float textureLod(sampler2DShadow, vec3, float)
305 | lightprobe_planar_downsample_frag.glsl:36:16: Error: vec4 textureLod(sampler1DArray, vec2, float)
306 | lightprobe_planar_downsample_frag.glsl:36:16: Error: ivec4 textureLod(isampler1DArray, vec2, float)
307
308ERROR (gpu.shader): gpu_shader_3D_polyline_smooth_color_no_geom VertShader:
309 |
310 172 | in_pos0 = vertex_fetch_attribute(src_index_a, pos, vec4).xyz;
311 | ^
312 | gpu_shader_3D_polyline_vert_no_geom.glsl:90:58: Error: syntax error, unexpected ')', expecting '('
313
314ERROR (gpu.shader): eevee_legacy_minz_downdepth_layer FragShader:
315 |
316 107 | out vec4 fragColor;
317 | ^
318 | effect_minmaxz_frag.glsl:31:11: Error: `fragColor' redeclared
319
320ERROR (gpu.shader): eevee_legacy_minz_copydepth FragShader:
321 |
322 105 | out vec4 fragColor;
323 | ^
324 | effect_minmaxz_frag.glsl:31:11: Error: `fragColor' redeclared
325
326ERROR (gpu.shader): overlay_armature_shape_outline_clipped_no_geom VertShader:
327 |
328 1233 | in_pos[0] = vertex_fetch_attribute_raw(vertex_id_from_index_id(4 * line_prim_id), pos, vec3);
329 | ^
330 | overlay_armature_shape_outline_vert_no_geom.glsl:68:94: Error: syntax error, unexpected ')', expecting '('
331
332ERROR (gpu.shader): eevee_legacy_maxz_downdepth FragShader:
333 |
334 105 | out vec4 fragColor;
335 | ^
336 | effect_minmaxz_frag.glsl:31:11: Error: `fragColor' redeclared
337
338ERROR (gpu.shader): eevee_legacy_maxz_downlevel FragShader:
339 |
340 105 | out vec4 fragColor;
341 | ^
342 | effect_minmaxz_frag.glsl:31:11: Error: `fragColor' redeclared
343
344ERROR (gpu.shader): eevee_legacy_cryptomatte_hair VertShader:
345 |
346 1907 | layout(std140) uniform drw_curves
347 | ^
348 | cryptomatte_lib.glsl:14:25: Error: syntax error, unexpected '('
349
350Compilation eevee_legacy_depth_of_field_gather_common Failed
351Compilation eevee_legacy_maxz_copydepth_layer Failed
352Compilation gpu_shader_3D_polyline_uniform_color_no_geom Failed
353Compilation eevee_legacy_taa_resolve Failed
354Compilation gpu_shader_3D_polyline_no_geom Failed
355Compilation eevee_legacy_depth_of_field_resolve_common Failed
356Compilation gpu_shader_3D_polyline_flat_color_no_geom Failed
357Compilation eevee_legacy_effect_motion_blur_object_common Failed
358Compilation eevee_legacy_minz_downdepth Failed
359Compilation gpu_shader_3D_polyline Failed
360Compilation eevee_legacy_minz_downlevel Failed
361Compilation eevee_legacy_lightprobe_planar_downsample_common Failed
362Compilation gpu_shader_3D_polyline_smooth_color_no_geom Failed
363Compilation eevee_legacy_minz_downdepth_layer Failed
364Compilation eevee_legacy_minz_copydepth Failed
365Compilation overlay_armature_shape_outline_clipped_no_geom Failed
366Compilation eevee_legacy_maxz_downdepth Failed
367Compilation eevee_legacy_maxz_downlevel Failed
368Compilation eevee_legacy_cryptomatte_hair Failed
369eevee_legacy_mateiral_surface_vert_pointcloud: Validation failed : Overlapping Sampler irradianceGrid (0) while merging eevee_legacy_material_surface_vert_common
370eevee_legacy_mateiral_surface_vert_pointcloud: Validation failed : Overlapping Sampler irradianceGrid (0) while merging eevee_legacy_surface_lib_pointcloud
371ERROR (gpu.shader): eevee_legacy_maxz_copydepth FragShader:
372 |
373 105 | out vec4 fragColor;
374 | ^
375 | effect_minmaxz_frag.glsl:31:11: Error: `fragColor' redeclared
376
377ERROR (gpu.shader): eevee_legacy_probe_grid_fill FragShader:
378 |
379 81 | ivec2 coord = ivec2(gl_FragCoord.xy) % data_size;
380 | ^
381 | lightprobe_grid_fill_frag.glsl:9:42: Error: `data_size' undeclared
382 |
383 | ivec2 coord = ivec2(gl_FragCoord.xy) % data_size;
384 | ^
385 | lightprobe_grid_fill_frag.glsl:9:17: Error: RHS of operator % must be an integer
386 |
387 82 | FragColor = texelFetch(irradianceGrid, ivec3(coord, 0), 0);
388 | ^
389 | lightprobe_grid_fill_frag.glsl:10:48: `coord' used uninitialized
390 |
391 84 | if (any(greaterThanEqual(ivec2(gl_FragCoord.xy), data_size))) {
392 | ^
393 | lightprobe_grid_fill_frag.glsl:12:52: Error: `data_size' undeclared
394 |
395 | if (any(greaterThanEqual(ivec2(gl_FragCoord.xy), data_size))) {
396 | ^
397 | lightprobe_grid_fill_frag.glsl:12:11: Error: no matching function for call to `greaterThanEqual(ivec2, error)'; candidates are:
398 | lightprobe_grid_fill_frag.glsl:12:11: Error: bvec2 greaterThanEqual(vec2, vec2)
399 | lightprobe_grid_fill_frag.glsl:12:11: Error: bvec3 greaterThanEqual(vec3, vec3)
400 | lightprobe_grid_fill_frag.glsl:12:11: Error: bvec4 greaterThanEqual(vec4, vec4)
401 | lightprobe_grid_fill_frag.glsl:12:11: Error: bvec2 greaterThanEqual(ivec2, ivec2)
402 | lightprobe_grid_fill_frag.glsl:12:11: Error: bvec3 greaterThanEqual(ivec3, ivec3)
403 | lightprobe_grid_fill_frag.glsl:12:11: Error: bvec4 greaterThanEqual(ivec4, ivec4)
404 | lightprobe_grid_fill_frag.glsl:12:11: Error: bvec2 greaterThanEqual(uvec2, uvec2)
405 | lightprobe_grid_fill_frag.glsl:12:11: Error: bvec3 greaterThanEqual(uvec3, uvec3)
406 | lightprobe_grid_fill_frag.glsl:12:11: Error: bvec4 greaterThanEqual(uvec4, uvec4)
407 | lightprobe_grid_fill_frag.glsl:12:11: Error: bvec2 greaterThanEqual(dvec2, dvec2)
408 | lightprobe_grid_fill_frag.glsl:12:11: Error: bvec3 greaterThanEqual(dvec3, dvec3)
409 | lightprobe_grid_fill_frag.glsl:12:11: Error: bvec4 greaterThanEqual(dvec4, dvec4)
410 |
411 | if (any(greaterThanEqual(ivec2(gl_FragCoord.xy), data_size))) {
412 | ^
413 | lightprobe_grid_fill_frag.glsl:12:7: Error: no matching function for call to `any(error)'; candidates are:
414 | lightprobe_grid_fill_frag.glsl:12:7: Error: bool any(bvec2)
415 | lightprobe_grid_fill_frag.glsl:12:7: Error: bool any(bvec3)
416 | lightprobe_grid_fill_frag.glsl:12:7: Error: bool any(bvec4)
417 | lightprobe_grid_fill_frag.glsl:12:7: Error: if-statement condition must be scalar boolean
418
419ERROR (gpu.shader): draw_hair_refine_compute ComputeShader:
420 |
421 413 | hair_get_interp_attrs(data0, data1, data2, data3, interp_time);
422 | ^
423 | common_hair_refine_comp.glsl:20:3: Error: no function with name 'hair_get_interp_attrs'
424 |
425 415 | vec4 weights = hair_get_weights_cardinal(interp_time);
426 | ^
427 | common_hair_refine_comp.glsl:22:18: Error: no function with name 'hair_get_weights_cardinal'
428 |
429 416 | vec4 result = hair_interp_data(data0, data1, data2, data3, weights);
430 | ^
431 | common_hair_refine_comp.glsl:23:17: Error: no function with name 'hair_interp_data'
432 |
433 418 | uint index = uint(hair_get_id() * hairStrandsRes) + gl_GlobalInvocationID.y;
434 | ^
435 | common_hair_refine_comp.glsl:25:21: Error: no function with name 'hair_get_id'
436 | common_hair_refine_comp.glsl:25:21: Error: operands to arithmetic operators must be numeric
437 |
438 | uint index = uint(hair_get_id() * hairStrandsRes) + gl_GlobalInvocationID.y;
439 | ^
440 | common_hair_refine_comp.glsl:25:16: Error: cannot construct `uint' from a non-numeric data type
441 | common_hair_refine_comp.glsl:25:16: Error: operands to arithmetic operators must be numeric
442 |
443 419 | posTime[index] = result;
444 | ^
445 | common_hair_refine_comp.glsl:26:14: `index' used uninitialized
446 |
447 | posTime[index] = result;
448 | ^
449 | common_hair_refine_comp.glsl:26:23: `result' used uninitialized
450
451ERROR (gpu.shader): eevee_legacy_downsample_shared FragShader:
452 |
453 400 | vec2 uvs = gl_FragCoord.xy * texelSize;
454 | ^
455 | effect_downsample_frag.glsl:36:32: Error: `texelSize' undeclared
456 |
457 | vec2 uvs = gl_FragCoord.xy * texelSize;
458 | ^
459 | effect_downsample_frag.glsl:36:14: Error: operands to arithmetic operators must be numeric
460 |
461 401 | vec4 ofs = texelSize.xyxy * vec4(0.75, 0.75, -0.75, -0.75);
462 | ^
463 | effect_downsample_frag.glsl:37:14: Error: `texelSize' undeclared
464 | effect_downsample_frag.glsl:37:14: Error: type mismatch
465 | effect_downsample_frag.glsl:37:14: Error: operands to arithmetic operators must be numeric
466 |
467 404 | FragColor = textureLod(source, uvs + ofs.xy, 0.0);
468 | ^
469 | effect_downsample_frag.glsl:40:40: `ofs' used uninitialized
470 |
471 405 | FragColor += textureLod(source, uvs + ofs.xw, 0.0);
472 | ^
473 | effect_downsample_frag.glsl:41:41: `ofs' used uninitialized
474 |
475 406 | FragColor += textureLod(source, uvs + ofs.zy, 0.0);
476 | ^
477 | effect_downsample_frag.glsl:42:41: `ofs' used uninitialized
478 |
479 407 | FragColor += textureLod(source, uvs + ofs.zw, 0.0);
480 | ^
481 | effect_downsample_frag.glsl:43:41: `ofs' used uninitialized
482
483ERROR (gpu.shader): gpu_shader_3D_polyline_uniform_color_clipped_no_geom VertShader:
484 |
485 175 | in_pos0 = vertex_fetch_attribute(src_index_a, pos, vec4).xyz;
486 | ^
487 | gpu_shader_3D_polyline_vert_no_geom.glsl:90:58: Error: syntax error, unexpected ')', expecting '('
488
489ERROR (gpu.shader): eevee_legacy_maxz_downdepth_layer FragShader:
490 |
491 107 | out vec4 fragColor;
492 | ^
493 | effect_minmaxz_frag.glsl:31:11: Error: `fragColor' redeclared
494
495ERROR (gpu.shader): overlay_armature_shape_outline_no_geom VertShader:
496 |
497 1230 | in_pos[0] = vertex_fetch_attribute_raw(vertex_id_from_index_id(4 * line_prim_id), pos, vec3);
498 | ^
499 | overlay_armature_shape_outline_vert_no_geom.glsl:68:94: Error: syntax error, unexpected ')', expecting '('
500
501ERROR (gpu.shader): eevee_legacy_probe_filter_diffuse FragShader:
502 |
503 1790 | N = normalize(cubevec);
504 | ^
505 | lightprobe_filter_diffuse_frag.glsl:147:17: Error: `cubevec' undeclared
506 |
507 | N = normalize(cubevec);
508 | ^
509 | lightprobe_filter_diffuse_frag.glsl:147:7: Error: no matching function for call to `normalize(error)'; candidates are:
510 | lightprobe_filter_diffuse_frag.glsl:147:7: Error: float normalize(float)
511 | lightprobe_filter_diffuse_frag.glsl:147:7: Error: vec2 normalize(vec2)
512 | lightprobe_filter_diffuse_frag.glsl:147:7: Error: vec3 normalize(vec3)
513 | lightprobe_filter_diffuse_frag.glsl:147:7: Error: vec4 normalize(vec4)
514 | lightprobe_filter_diffuse_frag.glsl:147:7: Error: double normalize(double)
515 | lightprobe_filter_diffuse_frag.glsl:147:7: Error: dvec2 normalize(dvec2)
516 | lightprobe_filter_diffuse_frag.glsl:147:7: Error: dvec3 normalize(dvec3)
517 | lightprobe_filter_diffuse_frag.glsl:147:7: Error: dvec4 normalize(dvec4)
518
519Compilation eevee_legacy_maxz_copydepth Failed
520Compilation eevee_legacy_probe_grid_fill Failed
521Compilation draw_hair_refine_compute Failed
522Compilation eevee_legacy_downsample_shared Failed
523Compilation gpu_shader_3D_polyline_uniform_color_clipped_no_geom Failed
524Compilation eevee_legacy_maxz_downdepth_layer Failed
525Compilation overlay_armature_shape_outline_no_geom Failed
526Compilation eevee_legacy_probe_filter_diffuse Failed
527eevee_legacy_material_prepass_frag_alpha_hash_pointcloud: Validation failed : Overlapping Sampler irradianceGrid (0) while merging draw_pointcloud
528ERROR (gpu.shader): eevee_legacy_cryptomatte_common VertShader:
529 |
530 2437 | return textureLod(utilTex, vec3(lut_coords(cos_theta, roughness), BRDF_LUT_LAYER), 0.0).rg;
531 | ^
532 | common_utiltex_lib.glsl:48:21: Error: `utilTex' undeclared
533 |
534 | return textureLod(utilTex, vec3(lut_coords(cos_theta, roughness), BRDF_LUT_LAYER), 0.0).rg;
535 | ^
536 | common_utiltex_lib.glsl:48:10: Error: no matching function for call to `textureLod(error, vec3, float)'; candidates are:
537 | common_utiltex_lib.glsl:48:10: Error: vec4 textureLod(sampler1D, float, float)
538 | common_utiltex_lib.glsl:48:10: Error: ivec4 textureLod(isampler1D, float, float)
539 | common_utiltex_lib.glsl:48:10: Error: uvec4 textureLod(usampler1D, float, float)
540 | common_utiltex_lib.glsl:48:10: Error: vec4 textureLod(sampler2D, vec2, float)
541 | common_utiltex_lib.glsl:48:10: Error: ivec4 textureLod(isampler2D, vec2, float)
542 | common_utiltex_lib.glsl:48:10: Error: uvec4 textureLod(usampler2D, vec2, float)
543 | common_utiltex_lib.glsl:48:10: Error: vec4 textureLod(sampler3D, vec3, float)
544 | common_utiltex_lib.glsl:48:10: Error: ivec4 textureLod(isampler3D, vec3, float)
545 | common_utiltex_lib.glsl:48:10: Error: uvec4 textureLod(usampler3D, vec3, float)
546 | common_utiltex_lib.glsl:48:10: Error: vec4 textureLod(samplerCube, vec3, float)
547 | common_utiltex_lib.glsl:48:10: Error: ivec4 textureLod(isamplerCube, vec3, float)
548 | common_utiltex_lib.glsl:48:10: Error: uvec4 textureLod(usamplerCube, vec3, float)
549 | common_utiltex_lib.glsl:48:10: Error: float textureLod(sampler1DShadow, vec3, float)
550 | common_utiltex_lib.glsl:48:10: Error: float textureLod(sampler2DShadow, vec3, float)
551 | common_utiltex_lib.glsl:48:10: Error: vec4 textureLod(sampler1DArray, vec2, float)
552 | common_utiltex_lib.glsl:48:10: Error: ivec4 textureLod(isampler1DArray, vec2, float)
553 | common_utiltex_lib.glsl:48:10: Error: uvec4 textureLod(usampler1DArray, vec2, float)
554 | common_utiltex_lib.glsl:48:10: Error: vec4 textureLod(sampler2DArray, vec3, float)
555 | common_utiltex_lib.glsl:48:10: Error: ivec4 textureLod(isampler2DArray, vec3, float)
556 | common_utiltex_lib.glsl:48:10: Error: uvec4 textureLod(usampler2DArray, vec3, float)
557 | common_utiltex_lib.glsl:48:10: Error: vec4 textureLod(samplerCubeArray, vec4, float)
558 | common_utiltex_lib.glsl:48:10: Error: ivec4 textureLod(isamplerCubeArray, vec4, float)
559 | common_utiltex_lib.glsl:48:10: Error: uvec4 textureLod(usamplerCubeArray, vec4, float)
560 | common_utiltex_lib.glsl:48:10: Error: float textureLod(sampler1DArrayShadow, vec3, float)
561 | common_utiltex_lib.glsl:48:10: Error: type mismatch
562 |
563 | return textureLod(utilTex, vec3(lut_coords(cos_theta, roughness), BRDF_LUT_LAYER), 0.0).rg;
564 | ^
565 | common_utiltex_lib.glsl:48:3: Error: could not implicitly convert return value to vec2, in function `brdf_lut'
566 |
567 2490 | vec2 btdf_low = textureLod(utilTex, coords, 0.0).rg;
568 | ^
569 | common_utiltex_lib.glsl:101:30: Error: `utilTex' undeclared
570 |
571 | vec2 btdf_low = textureLod(utilTex, coords, 0.0).rg;
572 | ^
573 | common_utiltex_lib.glsl:101:19: Error: no matching function for call to `textureLod(error, vec3, float)'; candidates are:
574 | common_utiltex_lib.glsl:101:19: Error: vec4 textureLod(sampler1D, float, float)
575 | common_utiltex_lib.glsl:101:19: Error: ivec4 textureLod(isampler1D, float, float)
576 | common_utiltex_lib.glsl:101:19: Error: uvec4 textureLod(usampler1D, float, float)
577 | common_utiltex_lib.glsl:101:19: Error: vec4 textureLod(sampler2D, vec2, float)
578 | common_utiltex_lib.glsl:101:19: Error: ivec4 textureLod(isampler2D, vec2, float)
579 | common_utiltex_lib.glsl:101:19: Error: uvec4 textureLod(usampler2D, vec2, float)
580 | common_utiltex_lib.glsl:101:19: Error: vec4 textureLod(sampler3D, vec3, float)
581 | common_utiltex_lib.glsl:101:19: Error: ivec4 textureLod(isampler3D, vec3, float)
582 | common_utiltex_lib.glsl:101:19: Error: uvec4 textureLod(usampler3D, vec3, float)
583 | common_utiltex_lib.glsl:101:19: Error: vec4 textureLod(samplerCube, vec3, float)
584 | common_utiltex_lib.glsl:101:19: Error: ivec4 textureLod(isamplerCube, vec3, float)
585 | common_utiltex_lib.glsl:101:19: Error: uvec4 textureLod(usamplerCube, vec3, float)
586 | common_utiltex_lib.glsl:101:19: Error: float textureLod(sampler1DShadow, vec3, float)
587 | common_utiltex_lib.glsl:101:19: Error: float textureLod(sampler2DShadow, vec3, float)
588 | common_utiltex_lib.glsl:101:19: Error: vec4 textureLod(sampler1DArray, vec2, float)
589 | common_utiltex_lib.glsl:101:19: Error: ivec4 textureLod(isampler1DArray, vec2, float)
590 | common_utiltex_lib.glsl:101:19: Error: uvec4 textureLod(usampler1DArray, vec2, float)
591 | common_utiltex_lib.glsl:101:19: Error: vec4 textureLod(sampler2DArray, vec3, float)
592 | common_utiltex_lib.glsl:101:19: Error: ivec4 textureLod(isampler2DArray, vec3, float)
593 | common_utiltex_lib.glsl:101:19: Error: uvec4 textureLod(usampler2DArray, vec3, float)
594 | common_utiltex_lib.glsl:101:19: Error: vec4 textureLod(samplerCubeArray, vec4, float)
595 | common_utiltex_lib.glsl:101:19: Error: ivec4 textureLod(isamplerCubeArray, vec4, float)
596 | common_utiltex_lib.glsl:101:19: Error: uvec4 textureLod(usamplerCubeArray, vec4, float)
597 | common_utiltex_lib.glsl:101:19: Error: float textureLod(sampler1DArrayShadow, vec3, float)
598 | common_utiltex_lib.glsl:101:19: Error: type mismatch
599 |
600 2493 | vec2 btdf_high = textureLod(utilTex, coords, 0.0).rg;
601 | ^
602 | common_utiltex_lib.glsl:104:31: Error: `utilTex' undeclared
603 |
604 | vec2 btdf_high = textureLod(utilTex, coords, 0.0).rg;
605 | ^
606 | common_utiltex_lib.glsl:104:20: Error: no matching function for call to `textureLod(error, vec3, float)'; candidates are:
607 | common_utiltex_lib.glsl:104:20: Error: vec4 textureLod(sampler1D, float, float)
608 | common_utiltex_lib.glsl:104:20: Error: ivec4 textureLod(isampler1D, float, float)
609 | common_utiltex_lib.glsl:104:20: Error: uvec4 textureLod(usampler1D, float, float)
610 | common_utiltex_lib.glsl:104:20: Error: vec4 textureLod(sampler2D, vec2, float)
611 | common_utiltex_lib.glsl:104:20: Error: ivec4 textureLod(isampler2D, vec2, float)
612 | common_utiltex_lib.glsl:104:20: Error: uvec4 textureLod(usampler2D, vec2, float)
613 | common_utiltex_lib.glsl:104:20: Error: vec4 textureLod(sampler3D, vec3, float)
614 | common_utiltex_lib.glsl:104:20: Error: ivec4 textureLod(isampler3D, vec3, float)
615 | common_utiltex_lib.glsl:104:20: Error: uvec4 textureLod(usampler3D, vec3, float)
616 | common_utiltex_lib.glsl:104:20: Error: vec4 textureLod(samplerCube, vec3, float)
617 | common_utiltex_lib.glsl:104:20: Error: ivec4 textureLod(isamplerCube, vec3, float)
618 | common_utiltex_lib.glsl:104:20: Error: uvec4 textureLod(usamplerCube, vec3, float)
619 | common_utiltex_lib.glsl:104:20: Error: float textureLod(sampler1DShadow, vec3, float)
620 | common_utiltex_lib.glsl:104:20: Error: float textureLod(sampler2DShadow, vec3, float)
621 | common_utiltex_lib.glsl:104:20: Error: vec4 textureLod(sampler1DArray, vec2, float)
622 | common_utiltex_lib.glsl:104:20: Error: ivec4 textureLod(isampler1DArray, vec2, float)
623 | common_utiltex_lib.glsl:104:20: Error: uvec4 textureLod(usampler1DArray, vec2, float)
624 | common_utiltex_lib.glsl:104:20: Error: vec4 textureLod(sampler2DArray, vec3, float)
625
626ERROR (gpu.shader): eevee_legacy_volumes_resolve_common FragShader:
627 |
628 4851 |
629 | ^
630 | volumetric_resolve_frag.glsl:35:3: Error: `FragColor0' undeclared
631 | volumetric_resolve_frag.glsl:35:3: Error: value of type vec4 cannot be assigned to variable of type error
632 |
633 4852 | FragColor0 = vec4(scattering, 1.0 - alpha);
634 | ^
635 | volumetric_resolve_frag.glsl:36:3: Error: `FragColor1' undeclared
636 | volumetric_resolve_frag.glsl:36:3: Error: value of type vec4 cannot be assigned to variable of type error
637
638ERROR (gpu.shader): eevee_legacy_volumes_accum FragShader:
639 |
640 797 | layout(location = 0) out vec4 FragColor0;
641 | ^
642 | volumetric_accum_frag.glsl:4:32: Error: `FragColor0' redeclared
643 |
644 798 | layout(location = 1) out vec4 FragColor1;
645 | ^
646 | volumetric_accum_frag.glsl:5:32: Error: `FragColor1' redeclared
647
648Compilation eevee_legacy_cryptomatte_common Failed
649Compilation eevee_legacy_volumes_resolve_common Failed
650Compilation eevee_legacy_volumes_accum Failed
651eevee_legacy_material_prepass_frag_opaque_pointcloud: Validation failed : Overlapping Sampler irradianceGrid (0) while merging draw_pointcloud
652Shader Test compilation result: 558 / 588 passed
653Shader compilation failed for OpenGL backend
for extensive log.
There are bindings that are declared multiple times making blender crash when using eevee.

Would be great if this gets into master when finished!
Currently the patch isn't working as it fails compiling many shaders. You can enable WITH_GPU_BUILDTIME_SHADER_BUILDER to detect those. See

1cd /home/jeroen/blender-git/build_linux/source/blender/gpu && /home/jeroen/blender-git/build_linux/bin/shader_builder /home/jeroen/blender-git/build_linux/source/blender/gpu/shader_baked.hh
2ERROR (gpu.shader): eevee_legacy_depth_of_field_gather_common FragShader:
3 |
4 2346 | dof_gather_accumulate_resolve(total_sample_count, accum_data, outColor, outWeight, outOcclusion);
5 | ^
6 | effect_dof_gather_frag.glsl:233:86: Error: `outOcclusion' undeclared
7 |
8 | dof_gather_accumulate_resolve(total_sample_count, accum_data, outColor, outWeight, outOcclusion);
9 | ^
10 | effect_dof_gather_frag.glsl:233:3: Error: no matching function for call to `dof_gather_accumulate_resolve(int, DofGatherData, vec4, float, error)'; candidates are:
11 | effect_dof_gather_frag.glsl:233:3: Error: void dof_gather_accumulate_resolve(int, DofGatherData, vec4, float, vec2)
12 |
13 2361 | outColor *= outWeight;
14 | ^
15 | effect_dof_gather_frag.glsl:248:15: `outWeight' used uninitialized
16 |
17 2401 | outOcclusion = vec2(0.0, 0.0);
18 | ^
19 | effect_dof_gather_frag.glsl:288:3: Error: `outOcclusion' undeclared
20 | effect_dof_gather_frag.glsl:288:3: Error: value of type vec2 cannot be assigned to variable of type error
21
22ERROR (gpu.shader): eevee_legacy_maxz_copydepth_layer FragShader:
23 |
24 107 | out vec4 fragColor;
25 | ^
26 | effect_minmaxz_frag.glsl:31:11: Error: `fragColor' redeclared
27
28ERROR (gpu.shader): gpu_shader_3D_polyline_uniform_color_no_geom VertShader:
29 |
30 172 | in_pos0 = vertex_fetch_attribute(src_index_a, pos, vec4).xyz;
31 | ^
32 | gpu_shader_3D_polyline_vert_no_geom.glsl:90:58: Error: syntax error, unexpected ')', expecting '('
33
34ERROR (gpu.shader): eevee_legacy_taa_resolve FragShader:
35 |
36 1249 | FragColor = safe_color(mix(color_history, color, alpha));
37 | ^
38 | effect_temporal_aa.glsl:113:52: Error: `alpha' undeclared
39 |
40 | FragColor = safe_color(mix(color_history, color, alpha));
41 | ^
42 | effect_temporal_aa.glsl:113:26: Error: no matching function for call to `mix(vec4, vec4, error)'; candidates are:
43 | effect_temporal_aa.glsl:113:26: Error: float mix(float, float, float)
44 | effect_temporal_aa.glsl:113:26: Error: vec2 mix(vec2, vec2, float)
45 | effect_temporal_aa.glsl:113:26: Error: vec3 mix(vec3, vec3, float)
46 | effect_temporal_aa.glsl:113:26: Error: vec4 mix(vec4, vec4, float)
47 | effect_temporal_aa.glsl:113:26: Error: vec2 mix(vec2, vec2, vec2)
48 | effect_temporal_aa.glsl:113:26: Error: vec3 mix(vec3, vec3, vec3)
49 | effect_temporal_aa.glsl:113:26: Error: vec4 mix(vec4, vec4, vec4)
50 | effect_temporal_aa.glsl:113:26: Error: double mix(double, double, double)
51 | effect_temporal_aa.glsl:113:26: Error: dvec2 mix(dvec2, dvec2, double)
52 | effect_temporal_aa.glsl:113:26: Error: dvec3 mix(dvec3, dvec3, double)
53 | effect_temporal_aa.glsl:113:26: Error: dvec4 mix(dvec4, dvec4, double)
54 | effect_temporal_aa.glsl:113:26: Error: dvec2 mix(dvec2, dvec2, dvec2)
55 | effect_temporal_aa.glsl:113:26: Error: dvec3 mix(dvec3, dvec3, dvec3)
56 | effect_temporal_aa.glsl:113:26: Error: dvec4 mix(dvec4, dvec4, dvec4)
57 | effect_temporal_aa.glsl:113:26: Error: float mix(float, float, bool)
58 | effect_temporal_aa.glsl:113:26: Error: vec2 mix(vec2, vec2, bvec2)
59 | effect_temporal_aa.glsl:113:26: Error: vec3 mix(vec3, vec3, bvec3)
60 | effect_temporal_aa.glsl:113:26: Error: vec4 mix(vec4, vec4, bvec4)
61 | effect_temporal_aa.glsl:113:26: Error: double mix(double, double, bool)
62 | effect_temporal_aa.glsl:113:26: Error: dvec2 mix(dvec2, dvec2, bvec2)
63 | effect_temporal_aa.glsl:113:26: Error: dvec3 mix(dvec3, dvec3, bvec3)
64 | effect_temporal_aa.glsl:113:26: Error: dvec4 mix(dvec4, dvec4, bvec4)
65 |
66 | FragColor = safe_color(mix(color_history, color, alpha));
67 | ^
68 | effect_temporal_aa.glsl:113:15: Error: no matching function for call to `safe_color(error)'; candidates are:
69 | effect_temporal_aa.glsl:113:15: Error: vec4 safe_color(vec4)
70 | effect_temporal_aa.glsl:113:15: Error: vec3 safe_color(vec3)
71
72ERROR (gpu.shader): gpu_shader_3D_polyline_no_geom VertShader:
73 |
74 170 | in_pos0 = vertex_fetch_attribute(src_index_a, pos, vec4).xyz;
75 | ^
76 | gpu_shader_3D_polyline_vert_no_geom.glsl:90:58: Error: syntax error, unexpected ')', expecting '('
77
78ERROR (gpu.shader): eevee_legacy_depth_of_field_resolve_common FragShader:
79 |
80 2016 | int total_sample_count = dof_gather_total_sample_count(i_radius + 1, DOF_SLIGHT_FOCUS_DENSITY);
81 | ^
82 | effect_dof_lib.glsl:538:72: Error: `DOF_SLIGHT_FOCUS_DENSITY' undeclared
83 |
84 | int total_sample_count = dof_gather_total_sample_count(i_radius + 1, DOF_SLIGHT_FOCUS_DENSITY);
85 | ^
86 | effect_dof_lib.glsl:538:28: Error: no matching function for call to `dof_gather_total_sample_count(int, error)'; candidates are:
87 | effect_dof_lib.glsl:538:28: Error: int dof_gather_total_sample_count(int, int)
88 |
89 2018 | accum_data.layer_opacity += float(total_sample_count) * fac * fac;
90 | ^
91 | effect_dof_lib.glsl:540:37: `total_sample_count' used uninitialized
92 |
93 2164 | const int resolve_ring_density = DOF_SLIGHT_FOCUS_DENSITY;
94 | ^
95 | effect_dof_resolve_frag.glsl:48:36: Error: `DOF_SLIGHT_FOCUS_DENSITY' undeclared
96 |
97 2174 | int ring_sample_count = resolve_ring_density * ring_distance;
98 | ^
99 | effect_dof_resolve_frag.glsl:58:27: `resolve_ring_density' used uninitialized
100 |
101 2176 | int s = sample_id * (4 / resolve_ring_density) +
102 | ^
103 | effect_dof_resolve_frag.glsl:60:28: `resolve_ring_density' used uninitialized
104 |
105 2177 | int(noise.y * float((4 - resolve_ring_density) * ring_distance));
106 | ^
107 | effect_dof_resolve_frag.glsl:61:28: `resolve_ring_density' used uninitialized
108 |
109 2243 | int total_sample_count = dof_gather_total_sample_count(i_radius + 1, resolve_ring_density);
110 | ^
111 | effect_dof_resolve_frag.glsl:127:72: `resolve_ring_density' used uninitialized
112
113ERROR (gpu.shader): gpu_shader_3D_polyline_flat_color_no_geom VertShader:
114 |
115 172 | in_pos0 = vertex_fetch_attribute(src_index_a, pos, vec4).xyz;
116 | ^
117 | gpu_shader_3D_polyline_vert_no_geom.glsl:90:58: Error: syntax error, unexpected ')', expecting '('
118
119ERROR (gpu.shader): eevee_legacy_effect_motion_blur_object_common VertShader:
120 |
121 1515 | prevWorldPos = (prevModelMatrix * vec4(useDeform ? prv : pos, 1.0)).xyz;
122 | ^
123 | object_motion_vert.glsl:52:54: Error: `prv' undeclared
124 |
125 | prevWorldPos = (prevModelMatrix * vec4(useDeform ? prv : pos, 1.0)).xyz;
126 | ^
127 | object_motion_vert.glsl:52:60: Error: `pos' undeclared
128 |
129 | prevWorldPos = (prevModelMatrix * vec4(useDeform ? prv : pos, 1.0)).xyz;
130 | ^
131 | object_motion_vert.glsl:52:42: Error: type mismatch
132 |
133 | prevWorldPos = (prevModelMatrix * vec4(useDeform ? prv : pos, 1.0)).xyz;
134 | ^
135 | object_motion_vert.glsl:52:37: Error: cannot construct `vec4' from a non-numeric data type
136 |
137 | prevWorldPos = (prevModelMatrix * vec4(useDeform ? prv : pos, 1.0)).xyz;
138 | ^
139 | object_motion_vert.glsl:52:19: Error: operands to arithmetic operators must be numeric
140 |
141 | prevWorldPos = (prevModelMatrix * vec4(useDeform ? prv : pos, 1.0)).xyz;
142 | ^
143 | object_motion_vert.glsl:52:18: Error: type mismatch
144 |
145 1516 | currWorldPos = (currModelMatrix * vec4(pos, 1.0)).xyz;
146 | ^
147 | object_motion_vert.glsl:53:42: Error: `pos' undeclared
148 |
149 | currWorldPos = (currModelMatrix * vec4(pos, 1.0)).xyz;
150 | ^
151 | object_motion_vert.glsl:53:37: Error: cannot construct `vec4' from a non-numeric data type
152 |
153 | currWorldPos = (currModelMatrix * vec4(pos, 1.0)).xyz;
154 | ^
155 | object_motion_vert.glsl:53:19: Error: operands to arithmetic operators must be numeric
156 |
157 | currWorldPos = (currModelMatrix * vec4(pos, 1.0)).xyz;
158 | ^
159 | object_motion_vert.glsl:53:18: Error: type mismatch
160 |
161 1517 | nextWorldPos = (nextModelMatrix * vec4(useDeform ? nxt : pos, 1.0)).xyz;
162 | ^
163 | object_motion_vert.glsl:54:54: Error: `nxt' undeclared
164 |
165 | nextWorldPos = (nextModelMatrix * vec4(useDeform ? nxt : pos, 1.0)).xyz;
166 | ^
167 | object_motion_vert.glsl:54:60: Error: `pos' undeclared
168 |
169 | nextWorldPos = (nextModelMatrix * vec4(useDeform ? nxt : pos, 1.0)).xyz;
170 | ^
171 | object_motion_vert.glsl:54:42: Error: type mismatch
172 |
173 | nextWorldPos = (nextModelMatrix * vec4(useDeform ? nxt : pos, 1.0)).xyz;
174 | ^
175 | object_motion_vert.glsl:54:37: Error: cannot construct `vec4' from a non-numeric data type
176 |
177 | nextWorldPos = (nextModelMatrix * vec4(useDeform ? nxt : pos, 1.0)).xyz;
178 | ^
179 | object_motion_vert.glsl:54:19: Error: operands to arithmetic operators must be numeric
180 |
181 | nextWorldPos = (nextModelMatrix * vec4(useDeform ? nxt : pos, 1.0)).xyz;
182 | ^
183 | object_motion_vert.glsl:54:18: Error: type mismatch
184
185ERROR (gpu.shader): eevee_legacy_minz_downdepth FragShader:
186 |
187 105 | out vec4 fragColor;
188 | ^
189 | effect_minmaxz_frag.glsl:31:11: Error: `fragColor' redeclared
190
191ERROR (gpu.shader): gpu_shader_3D_polyline VertShader:
192 |
193 87 | interp.final_color = color;
194 | ^
195 | gpu_shader_3D_polyline_vert.glsl:6:24: Error: `color' undeclared
196
197ERROR (gpu.shader): eevee_legacy_minz_downlevel FragShader:
198 |
199 105 | out vec4 fragColor;
200 | ^
201 | effect_minmaxz_frag.glsl:31:11: Error: `fragColor' redeclared
202
203ERROR (gpu.shader): eevee_legacy_lightprobe_planar_downsample_common FragShader:
204 |
205 400 | FragColor = textureLod(source, vec3(uvs + ofs.xy, lightprobe_geom_iface.layer), 0.0);
206 | ^
207 | lightprobe_planar_downsample_frag.glsl:34:53: Error: `lightprobe_geom_iface' undeclared
208 | lightprobe_planar_downsample_frag.glsl:34:53: Error: type mismatch
209 |
210 | FragColor = textureLod(source, vec3(uvs + ofs.xy, lightprobe_geom_iface.layer), 0.0);
211 | ^
212 | lightprobe_planar_downsample_frag.glsl:34:34: Error: cannot construct `vec3' from a non-numeric data type
213 |
214 | FragColor = textureLod(source, vec3(uvs + ofs.xy, lightprobe_geom_iface.layer), 0.0);
215 | ^
216 | lightprobe_planar_downsample_frag.glsl:34:15: Error: no matching function for call to `textureLod(sampler2DArray, error, float)'; candidates are:
217 | lightprobe_planar_downsample_frag.glsl:34:15: Error: vec4 textureLod(sampler1D, float, float)
218 | lightprobe_planar_downsample_frag.glsl:34:15: Error: ivec4 textureLod(isampler1D, float, float)
219 | lightprobe_planar_downsample_frag.glsl:34:15: Error: uvec4 textureLod(usampler1D, float, float)
220 | lightprobe_planar_downsample_frag.glsl:34:15: Error: vec4 textureLod(sampler2D, vec2, float)
221 | lightprobe_planar_downsample_frag.glsl:34:15: Error: ivec4 textureLod(isampler2D, vec2, float)
222 | lightprobe_planar_downsample_frag.glsl:34:15: Error: uvec4 textureLod(usampler2D, vec2, float)
223 | lightprobe_planar_downsample_frag.glsl:34:15: Error: vec4 textureLod(sampler3D, vec3, float)
224 | lightprobe_planar_downsample_frag.glsl:34:15: Error: ivec4 textureLod(isampler3D, vec3, float)
225 | lightprobe_planar_downsample_frag.glsl:34:15: Error: uvec4 textureLod(usampler3D, vec3, float)
226 | lightprobe_planar_downsample_frag.glsl:34:15: Error: vec4 textureLod(samplerCube, vec3, float)
227 | lightprobe_planar_downsample_frag.glsl:34:15: Error: ivec4 textureLod(isamplerCube, vec3, float)
228 | lightprobe_planar_downsample_frag.glsl:34:15: Error: uvec4 textureLod(usamplerCube, vec3, float)
229 | lightprobe_planar_downsample_frag.glsl:34:15: Error: float textureLod(sampler1DShadow, vec3, float)
230 | lightprobe_planar_downsample_frag.glsl:34:15: Error: float textureLod(sampler2DShadow, vec3, float)
231 | lightprobe_planar_downsample_frag.glsl:34:15: Error: vec4 textureLod(sampler1DArray, vec2, float)
232 | lightprobe_planar_downsample_frag.glsl:34:15: Error: ivec4 textureLod(isampler1DArray, vec2, float)
233 | lightprobe_planar_downsample_frag.glsl:34:15: Error: uvec4 textureLod(usampler1DArray, vec2, float)
234 | lightprobe_planar_downsample_frag.glsl:34:15: Error: vec4 textureLod(sampler2DArray, vec3, float)
235 | lightprobe_planar_downsample_frag.glsl:34:15: Error: ivec4 textureLod(isampler2DArray, vec3, float)
236 | lightprobe_planar_downsample_frag.glsl:34:15: Error: uvec4 textureLod(usampler2DArray, vec3, float)
237 | lightprobe_planar_downsample_frag.glsl:34:15: Error: vec4 textureLod(samplerCubeArray, vec4, float)
238 | lightprobe_planar_downsample_frag.glsl:34:15: Error: ivec4 textureLod(isamplerCubeArray, vec4, float)
239 | lightprobe_planar_downsample_frag.glsl:34:15: Error: uvec4 textureLod(usamplerCubeArray, vec4, float)
240 | lightprobe_planar_downsample_frag.glsl:34:15: Error: float textureLod(sampler1DArrayShadow, vec3, float)
241 |
242 401 | FragColor += textureLod(source, vec3(uvs + ofs.xw, lightprobe_geom_iface.layer), 0.0);
243 | ^
244 | lightprobe_planar_downsample_frag.glsl:35:54: Error: `lightprobe_geom_iface' undeclared
245 | lightprobe_planar_downsample_frag.glsl:35:54: Error: type mismatch
246 |
247 | FragColor += textureLod(source, vec3(uvs + ofs.xw, lightprobe_geom_iface.layer), 0.0);
248 | ^
249 | lightprobe_planar_downsample_frag.glsl:35:35: Error: cannot construct `vec3' from a non-numeric data type
250 |
251 | FragColor += textureLod(source, vec3(uvs + ofs.xw, lightprobe_geom_iface.layer), 0.0);
252 | ^
253 | lightprobe_planar_downsample_frag.glsl:35:16: Error: no matching function for call to `textureLod(sampler2DArray, error, float)'; candidates are:
254 | lightprobe_planar_downsample_frag.glsl:35:16: Error: vec4 textureLod(sampler1D, float, float)
255 | lightprobe_planar_downsample_frag.glsl:35:16: Error: ivec4 textureLod(isampler1D, float, float)
256 | lightprobe_planar_downsample_frag.glsl:35:16: Error: uvec4 textureLod(usampler1D, float, float)
257 | lightprobe_planar_downsample_frag.glsl:35:16: Error: vec4 textureLod(sampler2D, vec2, float)
258 | lightprobe_planar_downsample_frag.glsl:35:16: Error: ivec4 textureLod(isampler2D, vec2, float)
259 | lightprobe_planar_downsample_frag.glsl:35:16: Error: uvec4 textureLod(usampler2D, vec2, float)
260 | lightprobe_planar_downsample_frag.glsl:35:16: Error: vec4 textureLod(sampler3D, vec3, float)
261 | lightprobe_planar_downsample_frag.glsl:35:16: Error: ivec4 textureLod(isampler3D, vec3, float)
262 | lightprobe_planar_downsample_frag.glsl:35:16: Error: uvec4 textureLod(usampler3D, vec3, float)
263 | lightprobe_planar_downsample_frag.glsl:35:16: Error: vec4 textureLod(samplerCube, vec3, float)
264 | lightprobe_planar_downsample_frag.glsl:35:16: Error: ivec4 textureLod(isamplerCube, vec3, float)
265 | lightprobe_planar_downsample_frag.glsl:35:16: Error: uvec4 textureLod(usamplerCube, vec3, float)
266 | lightprobe_planar_downsample_frag.glsl:35:16: Error: float textureLod(sampler1DShadow, vec3, float)
267 | lightprobe_planar_downsample_frag.glsl:35:16: Error: float textureLod(sampler2DShadow, vec3, float)
268 | lightprobe_planar_downsample_frag.glsl:35:16: Error: vec4 textureLod(sampler1DArray, vec2, float)
269 | lightprobe_planar_downsample_frag.glsl:35:16: Error: ivec4 textureLod(isampler1DArray, vec2, float)
270 | lightprobe_planar_downsample_frag.glsl:35:16: Error: uvec4 textureLod(usampler1DArray, vec2, float)
271 | lightprobe_planar_downsample_frag.glsl:35:16: Error: vec4 textureLod(sampler2DArray, vec3, float)
272 | lightprobe_planar_downsample_frag.glsl:35:16: Error: ivec4 textureLod(isampler2DArray, vec3, float)
273 | lightprobe_planar_downsample_frag.glsl:35:16: Error: uvec4 textureLod(usampler2DArray, vec3, float)
274 | lightprobe_planar_downsample_frag.glsl:35:16: Error: vec4 textureLod(samplerCubeArray, vec4, float)
275 | lightprobe_planar_downsample_frag.glsl:35:16: Error: ivec4 textureLod(isamplerCubeArray, vec4, float)
276 | lightprobe_planar_downsample_frag.glsl:35:16: Error: uvec4 textureLod(usamplerCubeArray, vec4, float)
277 | lightprobe_planar_downsample_frag.glsl:35:16: Error: float textureLod(sampler1DArrayShadow, vec3, float)
278 |
279 402 | FragColor += textureLod(source, vec3(uvs + ofs.zy, lightprobe_geom_iface.layer), 0.0);
280 | ^
281 | lightprobe_planar_downsample_frag.glsl:36:54: Error: `lightprobe_geom_iface' undeclared
282 | lightprobe_planar_downsample_frag.glsl:36:54: Error: type mismatch
283 |
284 | FragColor += textureLod(source, vec3(uvs + ofs.zy, lightprobe_geom_iface.layer), 0.0);
285 | ^
286 | lightprobe_planar_downsample_frag.glsl:36:35: Error: cannot construct `vec3' from a non-numeric data type
287 |
288 | FragColor += textureLod(source, vec3(uvs + ofs.zy, lightprobe_geom_iface.layer), 0.0);
289 | ^
290 | lightprobe_planar_downsample_frag.glsl:36:16: Error: no matching function for call to `textureLod(sampler2DArray, error, float)'; candidates are:
291 | lightprobe_planar_downsample_frag.glsl:36:16: Error: vec4 textureLod(sampler1D, float, float)
292 | lightprobe_planar_downsample_frag.glsl:36:16: Error: ivec4 textureLod(isampler1D, float, float)
293 | lightprobe_planar_downsample_frag.glsl:36:16: Error: uvec4 textureLod(usampler1D, float, float)
294 | lightprobe_planar_downsample_frag.glsl:36:16: Error: vec4 textureLod(sampler2D, vec2, float)
295 | lightprobe_planar_downsample_frag.glsl:36:16: Error: ivec4 textureLod(isampler2D, vec2, float)
296 | lightprobe_planar_downsample_frag.glsl:36:16: Error: uvec4 textureLod(usampler2D, vec2, float)
297 | lightprobe_planar_downsample_frag.glsl:36:16: Error: vec4 textureLod(sampler3D, vec3, float)
298 | lightprobe_planar_downsample_frag.glsl:36:16: Error: ivec4 textureLod(isampler3D, vec3, float)
299 | lightprobe_planar_downsample_frag.glsl:36:16: Error: uvec4 textureLod(usampler3D, vec3, float)
300 | lightprobe_planar_downsample_frag.glsl:36:16: Error: vec4 textureLod(samplerCube, vec3, float)
301 | lightprobe_planar_downsample_frag.glsl:36:16: Error: ivec4 textureLod(isamplerCube, vec3, float)
302 | lightprobe_planar_downsample_frag.glsl:36:16: Error: uvec4 textureLod(usamplerCube, vec3, float)
303 | lightprobe_planar_downsample_frag.glsl:36:16: Error: float textureLod(sampler1DShadow, vec3, float)
304 | lightprobe_planar_downsample_frag.glsl:36:16: Error: float textureLod(sampler2DShadow, vec3, float)
305 | lightprobe_planar_downsample_frag.glsl:36:16: Error: vec4 textureLod(sampler1DArray, vec2, float)
306 | lightprobe_planar_downsample_frag.glsl:36:16: Error: ivec4 textureLod(isampler1DArray, vec2, float)
307
308ERROR (gpu.shader): gpu_shader_3D_polyline_smooth_color_no_geom VertShader:
309 |
310 172 | in_pos0 = vertex_fetch_attribute(src_index_a, pos, vec4).xyz;
311 | ^
312 | gpu_shader_3D_polyline_vert_no_geom.glsl:90:58: Error: syntax error, unexpected ')', expecting '('
313
314ERROR (gpu.shader): eevee_legacy_minz_downdepth_layer FragShader:
315 |
316 107 | out vec4 fragColor;
317 | ^
318 | effect_minmaxz_frag.glsl:31:11: Error: `fragColor' redeclared
319
320ERROR (gpu.shader): eevee_legacy_minz_copydepth FragShader:
321 |
322 105 | out vec4 fragColor;
323 | ^
324 | effect_minmaxz_frag.glsl:31:11: Error: `fragColor' redeclared
325
326ERROR (gpu.shader): overlay_armature_shape_outline_clipped_no_geom VertShader:
327 |
328 1233 | in_pos[0] = vertex_fetch_attribute_raw(vertex_id_from_index_id(4 * line_prim_id), pos, vec3);
329 | ^
330 | overlay_armature_shape_outline_vert_no_geom.glsl:68:94: Error: syntax error, unexpected ')', expecting '('
331
332ERROR (gpu.shader): eevee_legacy_maxz_downdepth FragShader:
333 |
334 105 | out vec4 fragColor;
335 | ^
336 | effect_minmaxz_frag.glsl:31:11: Error: `fragColor' redeclared
337
338ERROR (gpu.shader): eevee_legacy_maxz_downlevel FragShader:
339 |
340 105 | out vec4 fragColor;
341 | ^
342 | effect_minmaxz_frag.glsl:31:11: Error: `fragColor' redeclared
343
344ERROR (gpu.shader): eevee_legacy_cryptomatte_hair VertShader:
345 |
346 1907 | layout(std140) uniform drw_curves
347 | ^
348 | cryptomatte_lib.glsl:14:25: Error: syntax error, unexpected '('
349
350Compilation eevee_legacy_depth_of_field_gather_common Failed
351Compilation eevee_legacy_maxz_copydepth_layer Failed
352Compilation gpu_shader_3D_polyline_uniform_color_no_geom Failed
353Compilation eevee_legacy_taa_resolve Failed
354Compilation gpu_shader_3D_polyline_no_geom Failed
355Compilation eevee_legacy_depth_of_field_resolve_common Failed
356Compilation gpu_shader_3D_polyline_flat_color_no_geom Failed
357Compilation eevee_legacy_effect_motion_blur_object_common Failed
358Compilation eevee_legacy_minz_downdepth Failed
359Compilation gpu_shader_3D_polyline Failed
360Compilation eevee_legacy_minz_downlevel Failed
361Compilation eevee_legacy_lightprobe_planar_downsample_common Failed
362Compilation gpu_shader_3D_polyline_smooth_color_no_geom Failed
363Compilation eevee_legacy_minz_downdepth_layer Failed
364Compilation eevee_legacy_minz_copydepth Failed
365Compilation overlay_armature_shape_outline_clipped_no_geom Failed
366Compilation eevee_legacy_maxz_downdepth Failed
367Compilation eevee_legacy_maxz_downlevel Failed
368Compilation eevee_legacy_cryptomatte_hair Failed
369eevee_legacy_mateiral_surface_vert_pointcloud: Validation failed : Overlapping Sampler irradianceGrid (0) while merging eevee_legacy_material_surface_vert_common
370eevee_legacy_mateiral_surface_vert_pointcloud: Validation failed : Overlapping Sampler irradianceGrid (0) while merging eevee_legacy_surface_lib_pointcloud
371ERROR (gpu.shader): eevee_legacy_maxz_copydepth FragShader:
372 |
373 105 | out vec4 fragColor;
374 | ^
375 | effect_minmaxz_frag.glsl:31:11: Error: `fragColor' redeclared
376
377ERROR (gpu.shader): eevee_legacy_probe_grid_fill FragShader:
378 |
379 81 | ivec2 coord = ivec2(gl_FragCoord.xy) % data_size;
380 | ^
381 | lightprobe_grid_fill_frag.glsl:9:42: Error: `data_size' undeclared
382 |
383 | ivec2 coord = ivec2(gl_FragCoord.xy) % data_size;
384 | ^
385 | lightprobe_grid_fill_frag.glsl:9:17: Error: RHS of operator % must be an integer
386 |
387 82 | FragColor = texelFetch(irradianceGrid, ivec3(coord, 0), 0);
388 | ^
389 | lightprobe_grid_fill_frag.glsl:10:48: `coord' used uninitialized
390 |
391 84 | if (any(greaterThanEqual(ivec2(gl_FragCoord.xy), data_size))) {
392 | ^
393 | lightprobe_grid_fill_frag.glsl:12:52: Error: `data_size' undeclared
394 |
395 | if (any(greaterThanEqual(ivec2(gl_FragCoord.xy), data_size))) {
396 | ^
397 | lightprobe_grid_fill_frag.glsl:12:11: Error: no matching function for call to `greaterThanEqual(ivec2, error)'; candidates are:
398 | lightprobe_grid_fill_frag.glsl:12:11: Error: bvec2 greaterThanEqual(vec2, vec2)
399 | lightprobe_grid_fill_frag.glsl:12:11: Error: bvec3 greaterThanEqual(vec3, vec3)
400 | lightprobe_grid_fill_frag.glsl:12:11: Error: bvec4 greaterThanEqual(vec4, vec4)
401 | lightprobe_grid_fill_frag.glsl:12:11: Error: bvec2 greaterThanEqual(ivec2, ivec2)
402 | lightprobe_grid_fill_frag.glsl:12:11: Error: bvec3 greaterThanEqual(ivec3, ivec3)
403 | lightprobe_grid_fill_frag.glsl:12:11: Error: bvec4 greaterThanEqual(ivec4, ivec4)
404 | lightprobe_grid_fill_frag.glsl:12:11: Error: bvec2 greaterThanEqual(uvec2, uvec2)
405 | lightprobe_grid_fill_frag.glsl:12:11: Error: bvec3 greaterThanEqual(uvec3, uvec3)
406 | lightprobe_grid_fill_frag.glsl:12:11: Error: bvec4 greaterThanEqual(uvec4, uvec4)
407 | lightprobe_grid_fill_frag.glsl:12:11: Error: bvec2 greaterThanEqual(dvec2, dvec2)
408 | lightprobe_grid_fill_frag.glsl:12:11: Error: bvec3 greaterThanEqual(dvec3, dvec3)
409 | lightprobe_grid_fill_frag.glsl:12:11: Error: bvec4 greaterThanEqual(dvec4, dvec4)
410 |
411 | if (any(greaterThanEqual(ivec2(gl_FragCoord.xy), data_size))) {
412 | ^
413 | lightprobe_grid_fill_frag.glsl:12:7: Error: no matching function for call to `any(error)'; candidates are:
414 | lightprobe_grid_fill_frag.glsl:12:7: Error: bool any(bvec2)
415 | lightprobe_grid_fill_frag.glsl:12:7: Error: bool any(bvec3)
416 | lightprobe_grid_fill_frag.glsl:12:7: Error: bool any(bvec4)
417 | lightprobe_grid_fill_frag.glsl:12:7: Error: if-statement condition must be scalar boolean
418
419ERROR (gpu.shader): draw_hair_refine_compute ComputeShader:
420 |
421 413 | hair_get_interp_attrs(data0, data1, data2, data3, interp_time);
422 | ^
423 | common_hair_refine_comp.glsl:20:3: Error: no function with name 'hair_get_interp_attrs'
424 |
425 415 | vec4 weights = hair_get_weights_cardinal(interp_time);
426 | ^
427 | common_hair_refine_comp.glsl:22:18: Error: no function with name 'hair_get_weights_cardinal'
428 |
429 416 | vec4 result = hair_interp_data(data0, data1, data2, data3, weights);
430 | ^
431 | common_hair_refine_comp.glsl:23:17: Error: no function with name 'hair_interp_data'
432 |
433 418 | uint index = uint(hair_get_id() * hairStrandsRes) + gl_GlobalInvocationID.y;
434 | ^
435 | common_hair_refine_comp.glsl:25:21: Error: no function with name 'hair_get_id'
436 | common_hair_refine_comp.glsl:25:21: Error: operands to arithmetic operators must be numeric
437 |
438 | uint index = uint(hair_get_id() * hairStrandsRes) + gl_GlobalInvocationID.y;
439 | ^
440 | common_hair_refine_comp.glsl:25:16: Error: cannot construct `uint' from a non-numeric data type
441 | common_hair_refine_comp.glsl:25:16: Error: operands to arithmetic operators must be numeric
442 |
443 419 | posTime[index] = result;
444 | ^
445 | common_hair_refine_comp.glsl:26:14: `index' used uninitialized
446 |
447 | posTime[index] = result;
448 | ^
449 | common_hair_refine_comp.glsl:26:23: `result' used uninitialized
450
451ERROR (gpu.shader): eevee_legacy_downsample_shared FragShader:
452 |
453 400 | vec2 uvs = gl_FragCoord.xy * texelSize;
454 | ^
455 | effect_downsample_frag.glsl:36:32: Error: `texelSize' undeclared
456 |
457 | vec2 uvs = gl_FragCoord.xy * texelSize;
458 | ^
459 | effect_downsample_frag.glsl:36:14: Error: operands to arithmetic operators must be numeric
460 |
461 401 | vec4 ofs = texelSize.xyxy * vec4(0.75, 0.75, -0.75, -0.75);
462 | ^
463 | effect_downsample_frag.glsl:37:14: Error: `texelSize' undeclared
464 | effect_downsample_frag.glsl:37:14: Error: type mismatch
465 | effect_downsample_frag.glsl:37:14: Error: operands to arithmetic operators must be numeric
466 |
467 404 | FragColor = textureLod(source, uvs + ofs.xy, 0.0);
468 | ^
469 | effect_downsample_frag.glsl:40:40: `ofs' used uninitialized
470 |
471 405 | FragColor += textureLod(source, uvs + ofs.xw, 0.0);
472 | ^
473 | effect_downsample_frag.glsl:41:41: `ofs' used uninitialized
474 |
475 406 | FragColor += textureLod(source, uvs + ofs.zy, 0.0);
476 | ^
477 | effect_downsample_frag.glsl:42:41: `ofs' used uninitialized
478 |
479 407 | FragColor += textureLod(source, uvs + ofs.zw, 0.0);
480 | ^
481 | effect_downsample_frag.glsl:43:41: `ofs' used uninitialized
482
483ERROR (gpu.shader): gpu_shader_3D_polyline_uniform_color_clipped_no_geom VertShader:
484 |
485 175 | in_pos0 = vertex_fetch_attribute(src_index_a, pos, vec4).xyz;
486 | ^
487 | gpu_shader_3D_polyline_vert_no_geom.glsl:90:58: Error: syntax error, unexpected ')', expecting '('
488
489ERROR (gpu.shader): eevee_legacy_maxz_downdepth_layer FragShader:
490 |
491 107 | out vec4 fragColor;
492 | ^
493 | effect_minmaxz_frag.glsl:31:11: Error: `fragColor' redeclared
494
495ERROR (gpu.shader): overlay_armature_shape_outline_no_geom VertShader:
496 |
497 1230 | in_pos[0] = vertex_fetch_attribute_raw(vertex_id_from_index_id(4 * line_prim_id), pos, vec3);
498 | ^
499 | overlay_armature_shape_outline_vert_no_geom.glsl:68:94: Error: syntax error, unexpected ')', expecting '('
500
501ERROR (gpu.shader): eevee_legacy_probe_filter_diffuse FragShader:
502 |
503 1790 | N = normalize(cubevec);
504 | ^
505 | lightprobe_filter_diffuse_frag.glsl:147:17: Error: `cubevec' undeclared
506 |
507 | N = normalize(cubevec);
508 | ^
509 | lightprobe_filter_diffuse_frag.glsl:147:7: Error: no matching function for call to `normalize(error)'; candidates are:
510 | lightprobe_filter_diffuse_frag.glsl:147:7: Error: float normalize(float)
511 | lightprobe_filter_diffuse_frag.glsl:147:7: Error: vec2 normalize(vec2)
512 | lightprobe_filter_diffuse_frag.glsl:147:7: Error: vec3 normalize(vec3)
513 | lightprobe_filter_diffuse_frag.glsl:147:7: Error: vec4 normalize(vec4)
514 | lightprobe_filter_diffuse_frag.glsl:147:7: Error: double normalize(double)
515 | lightprobe_filter_diffuse_frag.glsl:147:7: Error: dvec2 normalize(dvec2)
516 | lightprobe_filter_diffuse_frag.glsl:147:7: Error: dvec3 normalize(dvec3)
517 | lightprobe_filter_diffuse_frag.glsl:147:7: Error: dvec4 normalize(dvec4)
518
519Compilation eevee_legacy_maxz_copydepth Failed
520Compilation eevee_legacy_probe_grid_fill Failed
521Compilation draw_hair_refine_compute Failed
522Compilation eevee_legacy_downsample_shared Failed
523Compilation gpu_shader_3D_polyline_uniform_color_clipped_no_geom Failed
524Compilation eevee_legacy_maxz_downdepth_layer Failed
525Compilation overlay_armature_shape_outline_no_geom Failed
526Compilation eevee_legacy_probe_filter_diffuse Failed
527eevee_legacy_material_prepass_frag_alpha_hash_pointcloud: Validation failed : Overlapping Sampler irradianceGrid (0) while merging draw_pointcloud
528ERROR (gpu.shader): eevee_legacy_cryptomatte_common VertShader:
529 |
530 2437 | return textureLod(utilTex, vec3(lut_coords(cos_theta, roughness), BRDF_LUT_LAYER), 0.0).rg;
531 | ^
532 | common_utiltex_lib.glsl:48:21: Error: `utilTex' undeclared
533 |
534 | return textureLod(utilTex, vec3(lut_coords(cos_theta, roughness), BRDF_LUT_LAYER), 0.0).rg;
535 | ^
536 | common_utiltex_lib.glsl:48:10: Error: no matching function for call to `textureLod(error, vec3, float)'; candidates are:
537 | common_utiltex_lib.glsl:48:10: Error: vec4 textureLod(sampler1D, float, float)
538 | common_utiltex_lib.glsl:48:10: Error: ivec4 textureLod(isampler1D, float, float)
539 | common_utiltex_lib.glsl:48:10: Error: uvec4 textureLod(usampler1D, float, float)
540 | common_utiltex_lib.glsl:48:10: Error: vec4 textureLod(sampler2D, vec2, float)
541 | common_utiltex_lib.glsl:48:10: Error: ivec4 textureLod(isampler2D, vec2, float)
542 | common_utiltex_lib.glsl:48:10: Error: uvec4 textureLod(usampler2D, vec2, float)
543 | common_utiltex_lib.glsl:48:10: Error: vec4 textureLod(sampler3D, vec3, float)
544 | common_utiltex_lib.glsl:48:10: Error: ivec4 textureLod(isampler3D, vec3, float)
545 | common_utiltex_lib.glsl:48:10: Error: uvec4 textureLod(usampler3D, vec3, float)
546 | common_utiltex_lib.glsl:48:10: Error: vec4 textureLod(samplerCube, vec3, float)
547 | common_utiltex_lib.glsl:48:10: Error: ivec4 textureLod(isamplerCube, vec3, float)
548 | common_utiltex_lib.glsl:48:10: Error: uvec4 textureLod(usamplerCube, vec3, float)
549 | common_utiltex_lib.glsl:48:10: Error: float textureLod(sampler1DShadow, vec3, float)
550 | common_utiltex_lib.glsl:48:10: Error: float textureLod(sampler2DShadow, vec3, float)
551 | common_utiltex_lib.glsl:48:10: Error: vec4 textureLod(sampler1DArray, vec2, float)
552 | common_utiltex_lib.glsl:48:10: Error: ivec4 textureLod(isampler1DArray, vec2, float)
553 | common_utiltex_lib.glsl:48:10: Error: uvec4 textureLod(usampler1DArray, vec2, float)
554 | common_utiltex_lib.glsl:48:10: Error: vec4 textureLod(sampler2DArray, vec3, float)
555 | common_utiltex_lib.glsl:48:10: Error: ivec4 textureLod(isampler2DArray, vec3, float)
556 | common_utiltex_lib.glsl:48:10: Error: uvec4 textureLod(usampler2DArray, vec3, float)
557 | common_utiltex_lib.glsl:48:10: Error: vec4 textureLod(samplerCubeArray, vec4, float)
558 | common_utiltex_lib.glsl:48:10: Error: ivec4 textureLod(isamplerCubeArray, vec4, float)
559 | common_utiltex_lib.glsl:48:10: Error: uvec4 textureLod(usamplerCubeArray, vec4, float)
560 | common_utiltex_lib.glsl:48:10: Error: float textureLod(sampler1DArrayShadow, vec3, float)
561 | common_utiltex_lib.glsl:48:10: Error: type mismatch
562 |
563 | return textureLod(utilTex, vec3(lut_coords(cos_theta, roughness), BRDF_LUT_LAYER), 0.0).rg;
564 | ^
565 | common_utiltex_lib.glsl:48:3: Error: could not implicitly convert return value to vec2, in function `brdf_lut'
566 |
567 2490 | vec2 btdf_low = textureLod(utilTex, coords, 0.0).rg;
568 | ^
569 | common_utiltex_lib.glsl:101:30: Error: `utilTex' undeclared
570 |
571 | vec2 btdf_low = textureLod(utilTex, coords, 0.0).rg;
572 | ^
573 | common_utiltex_lib.glsl:101:19: Error: no matching function for call to `textureLod(error, vec3, float)'; candidates are:
574 | common_utiltex_lib.glsl:101:19: Error: vec4 textureLod(sampler1D, float, float)
575 | common_utiltex_lib.glsl:101:19: Error: ivec4 textureLod(isampler1D, float, float)
576 | common_utiltex_lib.glsl:101:19: Error: uvec4 textureLod(usampler1D, float, float)
577 | common_utiltex_lib.glsl:101:19: Error: vec4 textureLod(sampler2D, vec2, float)
578 | common_utiltex_lib.glsl:101:19: Error: ivec4 textureLod(isampler2D, vec2, float)
579 | common_utiltex_lib.glsl:101:19: Error: uvec4 textureLod(usampler2D, vec2, float)
580 | common_utiltex_lib.glsl:101:19: Error: vec4 textureLod(sampler3D, vec3, float)
581 | common_utiltex_lib.glsl:101:19: Error: ivec4 textureLod(isampler3D, vec3, float)
582 | common_utiltex_lib.glsl:101:19: Error: uvec4 textureLod(usampler3D, vec3, float)
583 | common_utiltex_lib.glsl:101:19: Error: vec4 textureLod(samplerCube, vec3, float)
584 | common_utiltex_lib.glsl:101:19: Error: ivec4 textureLod(isamplerCube, vec3, float)
585 | common_utiltex_lib.glsl:101:19: Error: uvec4 textureLod(usamplerCube, vec3, float)
586 | common_utiltex_lib.glsl:101:19: Error: float textureLod(sampler1DShadow, vec3, float)
587 | common_utiltex_lib.glsl:101:19: Error: float textureLod(sampler2DShadow, vec3, float)
588 | common_utiltex_lib.glsl:101:19: Error: vec4 textureLod(sampler1DArray, vec2, float)
589 | common_utiltex_lib.glsl:101:19: Error: ivec4 textureLod(isampler1DArray, vec2, float)
590 | common_utiltex_lib.glsl:101:19: Error: uvec4 textureLod(usampler1DArray, vec2, float)
591 | common_utiltex_lib.glsl:101:19: Error: vec4 textureLod(sampler2DArray, vec3, float)
592 | common_utiltex_lib.glsl:101:19: Error: ivec4 textureLod(isampler2DArray, vec3, float)
593 | common_utiltex_lib.glsl:101:19: Error: uvec4 textureLod(usampler2DArray, vec3, float)
594 | common_utiltex_lib.glsl:101:19: Error: vec4 textureLod(samplerCubeArray, vec4, float)
595 | common_utiltex_lib.glsl:101:19: Error: ivec4 textureLod(isamplerCubeArray, vec4, float)
596 | common_utiltex_lib.glsl:101:19: Error: uvec4 textureLod(usamplerCubeArray, vec4, float)
597 | common_utiltex_lib.glsl:101:19: Error: float textureLod(sampler1DArrayShadow, vec3, float)
598 | common_utiltex_lib.glsl:101:19: Error: type mismatch
599 |
600 2493 | vec2 btdf_high = textureLod(utilTex, coords, 0.0).rg;
601 | ^
602 | common_utiltex_lib.glsl:104:31: Error: `utilTex' undeclared
603 |
604 | vec2 btdf_high = textureLod(utilTex, coords, 0.0).rg;
605 | ^
606 | common_utiltex_lib.glsl:104:20: Error: no matching function for call to `textureLod(error, vec3, float)'; candidates are:
607 | common_utiltex_lib.glsl:104:20: Error: vec4 textureLod(sampler1D, float, float)
608 | common_utiltex_lib.glsl:104:20: Error: ivec4 textureLod(isampler1D, float, float)
609 | common_utiltex_lib.glsl:104:20: Error: uvec4 textureLod(usampler1D, float, float)
610 | common_utiltex_lib.glsl:104:20: Error: vec4 textureLod(sampler2D, vec2, float)
611 | common_utiltex_lib.glsl:104:20: Error: ivec4 textureLod(isampler2D, vec2, float)
612 | common_utiltex_lib.glsl:104:20: Error: uvec4 textureLod(usampler2D, vec2, float)
613 | common_utiltex_lib.glsl:104:20: Error: vec4 textureLod(sampler3D, vec3, float)
614 | common_utiltex_lib.glsl:104:20: Error: ivec4 textureLod(isampler3D, vec3, float)
615 | common_utiltex_lib.glsl:104:20: Error: uvec4 textureLod(usampler3D, vec3, float)
616 | common_utiltex_lib.glsl:104:20: Error: vec4 textureLod(samplerCube, vec3, float)
617 | common_utiltex_lib.glsl:104:20: Error: ivec4 textureLod(isamplerCube, vec3, float)
618 | common_utiltex_lib.glsl:104:20: Error: uvec4 textureLod(usamplerCube, vec3, float)
619 | common_utiltex_lib.glsl:104:20: Error: float textureLod(sampler1DShadow, vec3, float)
620 | common_utiltex_lib.glsl:104:20: Error: float textureLod(sampler2DShadow, vec3, float)
621 | common_utiltex_lib.glsl:104:20: Error: vec4 textureLod(sampler1DArray, vec2, float)
622 | common_utiltex_lib.glsl:104:20: Error: ivec4 textureLod(isampler1DArray, vec2, float)
623 | common_utiltex_lib.glsl:104:20: Error: uvec4 textureLod(usampler1DArray, vec2, float)
624 | common_utiltex_lib.glsl:104:20: Error: vec4 textureLod(sampler2DArray, vec3, float)
625
626ERROR (gpu.shader): eevee_legacy_volumes_resolve_common FragShader:
627 |
628 4851 |
629 | ^
630 | volumetric_resolve_frag.glsl:35:3: Error: `FragColor0' undeclared
631 | volumetric_resolve_frag.glsl:35:3: Error: value of type vec4 cannot be assigned to variable of type error
632 |
633 4852 | FragColor0 = vec4(scattering, 1.0 - alpha);
634 | ^
635 | volumetric_resolve_frag.glsl:36:3: Error: `FragColor1' undeclared
636 | volumetric_resolve_frag.glsl:36:3: Error: value of type vec4 cannot be assigned to variable of type error
637
638ERROR (gpu.shader): eevee_legacy_volumes_accum FragShader:
639 |
640 797 | layout(location = 0) out vec4 FragColor0;
641 | ^
642 | volumetric_accum_frag.glsl:4:32: Error: `FragColor0' redeclared
643 |
644 798 | layout(location = 1) out vec4 FragColor1;
645 | ^
646 | volumetric_accum_frag.glsl:5:32: Error: `FragColor1' redeclared
647
648Compilation eevee_legacy_cryptomatte_common Failed
649Compilation eevee_legacy_volumes_resolve_common Failed
650Compilation eevee_legacy_volumes_accum Failed
651eevee_legacy_material_prepass_frag_opaque_pointcloud: Validation failed : Overlapping Sampler irradianceGrid (0) while merging draw_pointcloud
652Shader Test compilation result: 558 / 588 passed
653Shader compilation failed for OpenGL backend
for extensive log.
There are bindings that are declared multiple times making blender crash when using eevee.

Thanks for the information!

Have an update coming in shortly to firstly address the compilation failures ahead of other feedback. This should at least unblock testing. I've now verified that on my test systems, OpenGL compilation appears to be fully compliant.

A small number of Metal shaders are failing, but with errors which will be addressed in this other DIFF: (https://developer.blender.org/D16433)

Shader Test compilation result: 454 / 465 passed (skipped 122 for compatibility reasons)

I will also add that this DIFF alone will not enable EEVEE correctness and full functionality when running with Metal, as I wanted to share these as other updates to avoid bloating this beyond the scope of updating shader source. The key goal of this is to first get OpenGL up and running with all EEVEE shaders using ShaderCreateInfo. Though once all outstanding DIFFs have landed, along with one or two additional ones (Metal shader barycentric support + Metal Uniform buffer alignment rules), then EEVEE should be fully testable.

source/blender/draw/engines/eevee/eevee_legacy_shared_dof_defines.h
2 ↗(On Diff #57322)

Will move these inside the existing EEVEE defines file.

source/blender/draw/engines/eevee/eevee_shaders_extra.cc
19–20

In order for each shader type to have its correct properties from ShaderCreateInfo, the correct info name needs to be passed in.

Each of the input vert/geom/frag base sources for each material type (Surface, Volume, World etc and Mesh/Hair/Pointcloud) require a unique create-info. As these were resolved in a separate function, it seemed to make sense to determine the correct associated create info to use in the same place, to reduce code duplication.

I had experimented with referencing the vert/geom/frag source file directly inside the create-info, though these caused a few issues, as there are some source modifications when using the DRW_shader_library_create_shader_string path.

The relevant descriptions are located alongside the source/info fetching functions: e.g. eevee_get_vert_info.

Though please let me know if a different approach is preferable.

source/blender/draw/engines/eevee/shaders/background_vert.glsl
5–9

Can do! Would you like this to be done in this patch? Or as a follow-up?

Had kept It there as a reference for how the bindings should be, just in case anything was missed, but happy to remove these.

source/blender/gpu/shaders/infos/gpu_shader_3D_polyline_info.hh
31 ↗(On Diff #57322)

Will remove these changes and place them into a separate patch, alongside the suggested metal_backend_only flag, to ensure static compilation does not cause the OpenGL shader compilation tests to fail.

source/blender/gpu/intern/gpu_shader_create_info.cc
345–359

These create info declarations are guarded by WITH_BACKEND_METAL. Either remove the guard or guard these assignments.

This makes compilation fail on win/linux.

After the mentionned fixes, all shaders passed compilation successfully on Window+NVidia.

source/blender/draw/intern/shaders/common_hair_lib.glsl
8–13

This and the following error directive prevent draw_hair_refine_compute from compiling correctly.

Adding
`

.define("HAIR_SHADER")
.define("DRW_HAIR_INFO")

`

to the create info fixes the issue but it is a workaournd that should be at least documented.

As for this particular #ifdef it should be documented properly. I guess it is to guard against double inclusion into eevee shaders.

source/blender/draw/intern/shaders/common_hair_lib.glsl
8–13

Thanks, will document correctly. This was added to avoid use of hair module for cases where this was not needed. Primarily as a means of reducing binding complexity for other shaders, as previously, hair parameters may have been exposed whilst never being used. As it seemed to make more sense to not universally include hair-related shader inputs for all EEVEE materials, guarding this to avoid compilation failures if functions within the block may have used those uniforms.

(Needed as the nested includes may indirectly require inclusion of the hair lib).

Will also update and fix the compute case.

source/blender/gpu/intern/gpu_shader_create_info.cc
345–359

Ah yes, will guard the full metal-specific checks block.

This revision is now accepted and ready to land.Dec 8 2022, 8:57 PM