From 49bc640b76c77a19e523cd1843585a0c6b21e82f Mon Sep 17 00:00:00 2001 From: Jason Fielder Date: Wed, 30 Mar 2022 19:47:59 +0200 Subject: Metal: GLSL Shader compatibility 5 MSL does not have an implicit global scope, this is emulated via macro's adding an indirection for uniforms, attributes, shader stage inputs and outputs such as: #define roughness shaderinst->roughness. Variables in GLSL which exist within uniform blocks can be directly referenced via the global scope, unlike standard C++. This means that variable name pollution occurs if subsequent local variables in the code use the same name, resulting in compilation errors. A number of these conflicting names have been renamed to ensure unique naming and no further scope pollution. Ref T96261 Reviewed By: fclem Maniphest Tasks: T96261 Differential Revision: https://developer.blender.org/D14452 --- .../draw/engines/workbench/shaders/infos/workbench_prepass_info.hh | 2 +- .../draw/engines/workbench/shaders/workbench_prepass_frag.glsl | 2 +- .../draw/engines/workbench/shaders/workbench_prepass_hair_vert.glsl | 4 ++-- .../engines/workbench/shaders/workbench_prepass_pointcloud_vert.glsl | 2 +- .../draw/engines/workbench/shaders/workbench_prepass_vert.glsl | 2 +- .../engines/workbench/shaders/workbench_transparent_accum_frag.glsl | 2 +- 6 files changed, 7 insertions(+), 7 deletions(-) (limited to 'source/blender/draw/engines/workbench') diff --git a/source/blender/draw/engines/workbench/shaders/infos/workbench_prepass_info.hh b/source/blender/draw/engines/workbench/shaders/infos/workbench_prepass_info.hh index 6e1da090f9f..d3766da23cf 100644 --- a/source/blender/draw/engines/workbench/shaders/infos/workbench_prepass_info.hh +++ b/source/blender/draw/engines/workbench/shaders/infos/workbench_prepass_info.hh @@ -74,7 +74,7 @@ GPU_SHADER_INTERFACE_INFO(workbench_material_iface, "") .smooth(Type::FLOAT, "alpha_interp") .smooth(Type::VEC2, "uv_interp") .flat(Type::INT, "object_id") - .flat(Type::FLOAT, "roughness") + .flat(Type::FLOAT, "_roughness") .flat(Type::FLOAT, "metallic"); GPU_SHADER_CREATE_INFO(workbench_material) diff --git a/source/blender/draw/engines/workbench/shaders/workbench_prepass_frag.glsl b/source/blender/draw/engines/workbench/shaders/workbench_prepass_frag.glsl index 1b20171b3ff..82fa65449eb 100644 --- a/source/blender/draw/engines/workbench/shaders/workbench_prepass_frag.glsl +++ b/source/blender/draw/engines/workbench/shaders/workbench_prepass_frag.glsl @@ -7,7 +7,7 @@ void main() { normalData = workbench_normal_encode(gl_FrontFacing, normal_interp); - materialData = vec4(color_interp, workbench_float_pair_encode(roughness, metallic)); + materialData = vec4(color_interp, workbench_float_pair_encode(_roughness, metallic)); objectId = uint(object_id); diff --git a/source/blender/draw/engines/workbench/shaders/workbench_prepass_hair_vert.glsl b/source/blender/draw/engines/workbench/shaders/workbench_prepass_hair_vert.glsl index 65b9f4de4b6..71cf08b7e8c 100644 --- a/source/blender/draw/engines/workbench/shaders/workbench_prepass_hair_vert.glsl +++ b/source/blender/draw/engines/workbench/shaders/workbench_prepass_hair_vert.glsl @@ -66,7 +66,7 @@ void main() normal_interp = normalize(normal_world_to_view(nor)); - workbench_material_data_get(resource_handle, color_interp, alpha_interp, roughness, metallic); + workbench_material_data_get(resource_handle, color_interp, alpha_interp, _roughness, metallic); if (materialIndex == 0) { color_interp = hair_get_customdata_vec3(ac); @@ -76,7 +76,7 @@ void main() * So we lower their alpha artificially. */ alpha_interp *= 0.3; - workbench_hair_random_material(hair_rand, color_interp, roughness, metallic); + workbench_hair_random_material(hair_rand, color_interp, _roughness, metallic); object_id = int(uint(resource_handle) & 0xFFFFu) + 1; } diff --git a/source/blender/draw/engines/workbench/shaders/workbench_prepass_pointcloud_vert.glsl b/source/blender/draw/engines/workbench/shaders/workbench_prepass_pointcloud_vert.glsl index 911d6f5b036..366bc2f9105 100644 --- a/source/blender/draw/engines/workbench/shaders/workbench_prepass_pointcloud_vert.glsl +++ b/source/blender/draw/engines/workbench/shaders/workbench_prepass_pointcloud_vert.glsl @@ -19,7 +19,7 @@ void main() uv_interp = vec2(0.0); - workbench_material_data_get(resource_handle, color_interp, alpha_interp, roughness, metallic); + workbench_material_data_get(resource_handle, color_interp, alpha_interp, _roughness, metallic); if (materialIndex == 0) { color_interp = vec3(1.0); diff --git a/source/blender/draw/engines/workbench/shaders/workbench_prepass_vert.glsl b/source/blender/draw/engines/workbench/shaders/workbench_prepass_vert.glsl index 3a63b141c5f..0637f669961 100644 --- a/source/blender/draw/engines/workbench/shaders/workbench_prepass_vert.glsl +++ b/source/blender/draw/engines/workbench/shaders/workbench_prepass_vert.glsl @@ -16,7 +16,7 @@ void main() normal_interp = normalize(normal_object_to_view(nor)); - workbench_material_data_get(resource_handle, color_interp, alpha_interp, roughness, metallic); + workbench_material_data_get(resource_handle, color_interp, alpha_interp, _roughness, metallic); if (materialIndex == 0) { color_interp = ac.rgb; diff --git a/source/blender/draw/engines/workbench/shaders/workbench_transparent_accum_frag.glsl b/source/blender/draw/engines/workbench/shaders/workbench_transparent_accum_frag.glsl index 9c0f93c67d9..d8f1b83d747 100644 --- a/source/blender/draw/engines/workbench/shaders/workbench_transparent_accum_frag.glsl +++ b/source/blender/draw/engines/workbench/shaders/workbench_transparent_accum_frag.glsl @@ -62,7 +62,7 @@ void main() #endif #ifdef V3D_LIGHTING_STUDIO - vec3 shaded_color = get_world_lighting(color, roughness, metallic, N, I); + vec3 shaded_color = get_world_lighting(color, _roughness, metallic, N, I); #endif #ifdef V3D_LIGHTING_FLAT -- cgit v1.2.3