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

git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorOmar Emara <mail@OmarEmara.dev>2022-05-30 16:08:23 +0300
committerOmar Emara <mail@OmarEmara.dev>2022-05-30 16:08:23 +0300
commitc469934ba9968dad2747ff816e356e176f84ca3c (patch)
treee36a6a036395d8eb961b75affe76c3b383af31f1 /source/blender/gpu
parentda2fb695b35a98f96400b6a783a614de724ab3a0 (diff)
parenta8471459fd18f356f730c684665c8dadadad723d (diff)
Merge branch 'master' into temp-viewport-compositor-merge
Diffstat (limited to 'source/blender/gpu')
-rw-r--r--source/blender/gpu/CMakeLists.txt2
-rw-r--r--source/blender/gpu/GPU_capabilities.h2
-rw-r--r--source/blender/gpu/intern/gpu_capabilities.cc5
-rw-r--r--source/blender/gpu/intern/gpu_material_library.h2
-rw-r--r--source/blender/gpu/opengl/gl_backend.cc22
-rw-r--r--source/blender/gpu/shaders/gpu_shader_common_obinfos_lib.glsl23
-rw-r--r--source/blender/gpu/shaders/material/gpu_shader_material_blackbody.glsl12
-rw-r--r--source/blender/gpu/shaders/material/gpu_shader_material_normal_map.glsl3
-rw-r--r--source/blender/gpu/shaders/material/gpu_shader_material_wavelength.glsl12
9 files changed, 15 insertions, 68 deletions
diff --git a/source/blender/gpu/CMakeLists.txt b/source/blender/gpu/CMakeLists.txt
index d571b4ce404..f781519b5ff 100644
--- a/source/blender/gpu/CMakeLists.txt
+++ b/source/blender/gpu/CMakeLists.txt
@@ -446,8 +446,6 @@ set(GLSL_SRC
shaders/gpu_shader_cfg_world_clip_lib.glsl
shaders/gpu_shader_colorspace_lib.glsl
- shaders/gpu_shader_common_obinfos_lib.glsl
-
GPU_shader_shared_utils.h
)
diff --git a/source/blender/gpu/GPU_capabilities.h b/source/blender/gpu/GPU_capabilities.h
index 061b850619f..7fe467de402 100644
--- a/source/blender/gpu/GPU_capabilities.h
+++ b/source/blender/gpu/GPU_capabilities.h
@@ -35,7 +35,7 @@ int GPU_max_compute_shader_storage_blocks(void);
int GPU_extensions_len(void);
const char *GPU_extension_get(int i);
-int GPU_texture_size_with_limit(int res, bool limit_gl_texture_size);
+int GPU_texture_size_with_limit(int res);
bool GPU_mip_render_workaround(void);
bool GPU_depth_blitting_workaround(void);
diff --git a/source/blender/gpu/intern/gpu_capabilities.cc b/source/blender/gpu/intern/gpu_capabilities.cc
index 4ec215c2d3b..eb69a1d2635 100644
--- a/source/blender/gpu/intern/gpu_capabilities.cc
+++ b/source/blender/gpu/intern/gpu_capabilities.cc
@@ -33,11 +33,10 @@ int GPU_max_texture_size()
return GCaps.max_texture_size;
}
-int GPU_texture_size_with_limit(int res, bool limit_gl_texture_size)
+int GPU_texture_size_with_limit(int res)
{
int size = GPU_max_texture_size();
- int reslimit = (limit_gl_texture_size && (U.glreslimit != 0)) ? min_ii(U.glreslimit, size) :
- size;
+ int reslimit = (U.glreslimit != 0) ? min_ii(U.glreslimit, size) : size;
return min_ii(reslimit, res);
}
diff --git a/source/blender/gpu/intern/gpu_material_library.h b/source/blender/gpu/intern/gpu_material_library.h
index 08cb770698e..5aa311ed101 100644
--- a/source/blender/gpu/intern/gpu_material_library.h
+++ b/source/blender/gpu/intern/gpu_material_library.h
@@ -34,7 +34,7 @@ typedef struct GPUFunction {
eGPUType paramtype[MAX_PARAMETER];
GPUFunctionQual paramqual[MAX_PARAMETER];
int totparam;
- /* TOOD(@fclem): Clean that void pointer. */
+ /* TODO(@fclem): Clean that void pointer. */
void *source; /* GPUSource */
} GPUFunction;
diff --git a/source/blender/gpu/opengl/gl_backend.cc b/source/blender/gpu/opengl/gl_backend.cc
index 1cd2301aa4e..0c796ddc765 100644
--- a/source/blender/gpu/opengl/gl_backend.cc
+++ b/source/blender/gpu/opengl/gl_backend.cc
@@ -291,26 +291,12 @@ static void detect_workarounds()
}
/* See T82856: AMD drivers since 20.11 running on a polaris architecture doesn't support the
* `GL_INT_2_10_10_10_REV` data type correctly. This data type is used to pack normals and flags.
- * The work around uses `GPU_RGBA16I`.
+ * The work around uses `GPU_RGBA16I`. In 22.?.? drivers this has been fixed for
+ * polaris platform. Keeping legacy platforms around just in case.
*/
if (GPU_type_matches(GPU_DEVICE_ATI, GPU_OS_ANY, GPU_DRIVER_OFFICIAL)) {
- const Vector<std::string> matches = {"RX 460",
- "RX 470",
- "RX 480",
- "RX 490",
- "RX 560",
- "RX 560X",
- "RX 570",
- "RX 580",
- "RX 580X",
- "RX 590",
- "RX550/550",
- "(TM) 520",
- "(TM) 530",
- "(TM) 535",
- "R5",
- "R7",
- "R9"};
+ const Vector<std::string> matches = {
+ "RX550/550", "(TM) 520", "(TM) 530", "(TM) 535", "R5", "R7", "R9"};
if (match_renderer(renderer, matches)) {
GCaps.use_hq_normals_workaround = true;
diff --git a/source/blender/gpu/shaders/gpu_shader_common_obinfos_lib.glsl b/source/blender/gpu/shaders/gpu_shader_common_obinfos_lib.glsl
deleted file mode 100644
index f5b6de4899f..00000000000
--- a/source/blender/gpu/shaders/gpu_shader_common_obinfos_lib.glsl
+++ /dev/null
@@ -1,23 +0,0 @@
-
-#pragma BLENDER_REQUIRE(common_view_lib.glsl)
-
-#ifndef GPU_OBINFOS_UBO
-# define GPU_OBINFOS_UBO
-struct ObjectInfos {
- vec4 drw_OrcoTexCoFactors[2];
- vec4 drw_ObjectColor;
- vec4 drw_Infos;
-};
-
-# ifndef USE_GPU_SHADER_CREATE_INFO
-layout(std140) uniform infoBlock
-{
- /* DRW_RESOURCE_CHUNK_LEN = 512 */
- ObjectInfos drw_infos[512];
-};
-# endif
-
-# define OrcoTexCoFactors (drw_infos[resource_id].drw_OrcoTexCoFactors)
-# define ObjectInfo (drw_infos[resource_id].drw_Infos)
-# define ObjectColor (drw_infos[resource_id].drw_ObjectColor)
-#endif
diff --git a/source/blender/gpu/shaders/material/gpu_shader_material_blackbody.glsl b/source/blender/gpu/shaders/material/gpu_shader_material_blackbody.glsl
index d0111aa3839..e257483f364 100644
--- a/source/blender/gpu/shaders/material/gpu_shader_material_blackbody.glsl
+++ b/source/blender/gpu/shaders/material/gpu_shader_material_blackbody.glsl
@@ -1,13 +1,5 @@
void node_blackbody(float temperature, sampler1DArray spectrummap, float layer, out vec4 color)
{
- if (temperature >= 12000.0) {
- color = vec4(0.826270103, 0.994478524, 1.56626022, 1.0);
- }
- else if (temperature < 965.0) {
- color = vec4(4.70366907, 0.0, 0.0, 1.0);
- }
- else {
- float t = (temperature - 965.0) / (12000.0 - 965.0);
- color = vec4(texture(spectrummap, vec2(t, layer)).rgb, 1.0);
- }
+ float t = (temperature - 800.0) / (12000.0 - 800.0);
+ color = vec4(texture(spectrummap, vec2(t, layer)).rgb, 1.0);
}
diff --git a/source/blender/gpu/shaders/material/gpu_shader_material_normal_map.glsl b/source/blender/gpu/shaders/material/gpu_shader_material_normal_map.glsl
index e219e2b9bbe..a54dc59ddfe 100644
--- a/source/blender/gpu/shaders/material/gpu_shader_material_normal_map.glsl
+++ b/source/blender/gpu/shaders/material/gpu_shader_material_normal_map.glsl
@@ -1,3 +1,5 @@
+
+#ifdef OBINFO_LIB
void node_normal_map(vec4 tangent, vec3 texnormal, out vec3 outnormal)
{
if (all(equal(tangent, vec4(0.0, 0.0, 0.0, 1.0)))) {
@@ -10,6 +12,7 @@ void node_normal_map(vec4 tangent, vec3 texnormal, out vec3 outnormal)
outnormal = texnormal.x * tangent.xyz + texnormal.y * B + texnormal.z * g_data.N;
outnormal = normalize(outnormal);
}
+#endif
void color_to_normal_new_shading(vec3 color, out vec3 normal)
{
diff --git a/source/blender/gpu/shaders/material/gpu_shader_material_wavelength.glsl b/source/blender/gpu/shaders/material/gpu_shader_material_wavelength.glsl
index 2c5d38eabbe..48d627dcd0b 100644
--- a/source/blender/gpu/shaders/material/gpu_shader_material_wavelength.glsl
+++ b/source/blender/gpu/shaders/material/gpu_shader_material_wavelength.glsl
@@ -1,15 +1,7 @@
-void node_wavelength(float wavelength,
- sampler1DArray spectrummap,
- float layer,
- vec3 xyz_to_r,
- vec3 xyz_to_g,
- vec3 xyz_to_b,
- out vec4 color)
+void node_wavelength(float wavelength, sampler1DArray spectrummap, float layer, out vec4 color)
{
- mat3 xyz_to_rgb = mat3(xyz_to_r, xyz_to_g, xyz_to_b);
float t = (wavelength - 380.0) / (780.0 - 380.0);
- vec3 xyz = texture(spectrummap, vec2(t, layer)).rgb;
- vec3 rgb = xyz * xyz_to_rgb;
+ vec3 rgb = texture(spectrummap, vec2(t, layer)).rgb;
rgb *= 1.0 / 2.52; /* Empirical scale from lg to make all comps <= 1. */
color = vec4(clamp(rgb, 0.0, 1.0), 1.0);
}