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:
authorClément Foucault <foucault.clem@gmail.com>2020-02-11 17:18:55 +0300
committerClément Foucault <foucault.clem@gmail.com>2020-02-11 17:19:04 +0300
commit804e90b42d728ecb1073af8d0bae15a91b13a469 (patch)
tree309de25d99c92286b10c9d27e547fd43a69299c1 /source/blender/gpu/shaders
parent58cdab8b9759dd59b55895f2f76b9624addbb324 (diff)
DRW: Color Management improvement
Reviewed By: brecht sergey jbakker Differential Revision: http://developer.blender.org/D6729
Diffstat (limited to 'source/blender/gpu/shaders')
-rw-r--r--source/blender/gpu/shaders/gpu_shader_image_linear_frag.glsl33
-rw-r--r--source/blender/gpu/shaders/gpu_shader_image_overlays_merge_frag.glsl42
2 files changed, 42 insertions, 33 deletions
diff --git a/source/blender/gpu/shaders/gpu_shader_image_linear_frag.glsl b/source/blender/gpu/shaders/gpu_shader_image_linear_frag.glsl
deleted file mode 100644
index e6acdd446d3..00000000000
--- a/source/blender/gpu/shaders/gpu_shader_image_linear_frag.glsl
+++ /dev/null
@@ -1,33 +0,0 @@
-
-/* Display a linear image texture into sRGB space */
-
-uniform sampler2D image;
-
-in vec2 texCoord_interp;
-
-out vec4 fragColor;
-
-float linearrgb_to_srgb(float c)
-{
- if (c < 0.0031308) {
- return (c < 0.0) ? 0.0 : c * 12.92;
- }
- else {
- return 1.055 * pow(c, 1.0 / 2.4) - 0.055;
- }
-}
-
-void linearrgb_to_srgb(vec4 col_from, out vec4 col_to)
-{
- col_to.r = linearrgb_to_srgb(col_from.r);
- col_to.g = linearrgb_to_srgb(col_from.g);
- col_to.b = linearrgb_to_srgb(col_from.b);
- col_to.a = col_from.a;
-}
-
-void main()
-{
- fragColor = texture(image, texCoord_interp.st);
-
- linearrgb_to_srgb(fragColor, fragColor);
-}
diff --git a/source/blender/gpu/shaders/gpu_shader_image_overlays_merge_frag.glsl b/source/blender/gpu/shaders/gpu_shader_image_overlays_merge_frag.glsl
new file mode 100644
index 00000000000..e8323520af5
--- /dev/null
+++ b/source/blender/gpu/shaders/gpu_shader_image_overlays_merge_frag.glsl
@@ -0,0 +1,42 @@
+
+/* Merge overlays texture on top of image texture and transform to display space (assume sRGB) */
+
+uniform sampler2D image_texture;
+uniform sampler2D overlays_texture;
+uniform bool display_transform;
+
+in vec2 texCoord_interp;
+
+out vec4 fragColor;
+
+float linearrgb_to_srgb(float c)
+{
+ if (c < 0.0031308) {
+ return (c < 0.0) ? 0.0 : c * 12.92;
+ }
+ else {
+ return 1.055 * pow(c, 1.0 / 2.4) - 0.055;
+ }
+}
+
+void linearrgb_to_srgb(vec4 col_from, out vec4 col_to)
+{
+ col_to.r = linearrgb_to_srgb(col_from.r);
+ col_to.g = linearrgb_to_srgb(col_from.g);
+ col_to.b = linearrgb_to_srgb(col_from.b);
+ col_to.a = col_from.a;
+}
+
+void main()
+{
+ fragColor = texture(image_texture, texCoord_interp.st);
+
+ vec4 overlay_col = texture(overlays_texture, texCoord_interp.st);
+
+ fragColor *= 1.0 - overlay_col.a;
+ fragColor += overlay_col;
+
+ if (display_transform) {
+ linearrgb_to_srgb(fragColor, fragColor);
+ }
+}