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:
Diffstat (limited to 'source/blender/gpu/shaders/gpu_shader_image_overlays_stereo_merge_frag.glsl')
-rw-r--r--source/blender/gpu/shaders/gpu_shader_image_overlays_stereo_merge_frag.glsl47
1 files changed, 47 insertions, 0 deletions
diff --git a/source/blender/gpu/shaders/gpu_shader_image_overlays_stereo_merge_frag.glsl b/source/blender/gpu/shaders/gpu_shader_image_overlays_stereo_merge_frag.glsl
new file mode 100644
index 00000000000..c6e9860d940
--- /dev/null
+++ b/source/blender/gpu/shaders/gpu_shader_image_overlays_stereo_merge_frag.glsl
@@ -0,0 +1,47 @@
+#define S3D_DISPLAY_ANAGLYPH 0
+#define S3D_DISPLAY_INTERLACE 1
+
+#define S3D_INTERLACE_ROW 0
+#define S3D_INTERLACE_COLUMN 1
+#define S3D_INTERLACE_CHECKERBOARD 2
+
+/* Composite stereo textures */
+
+uniform sampler2D imageTexture;
+uniform sampler2D overlayTexture;
+
+uniform int stereoDisplaySettings;
+
+#define stereo_display_mode (stereoDisplaySettings & ((1 << 3) - 1))
+#define stereo_interlace_mode ((stereoDisplaySettings >> 3) & ((1 << 3) - 1))
+#define stereo_interlace_swap bool(stereoDisplaySettings >> 6)
+
+layout(location = 0) out vec4 imageColor;
+layout(location = 1) out vec4 overlayColor;
+
+bool interlace(ivec2 texel)
+{
+ int interlace_mode = stereo_interlace_mode;
+ if (interlace_mode == S3D_INTERLACE_CHECKERBOARD) {
+ return ((texel.x + texel.y) & 1) != 0;
+ }
+ else if (interlace_mode == S3D_INTERLACE_ROW) {
+ return (texel.y & 1) != 0;
+ }
+ else if (interlace_mode == S3D_INTERLACE_COLUMN) {
+ return (texel.x & 1) != 0;
+ }
+}
+
+void main()
+{
+ ivec2 texel = ivec2(gl_FragCoord.xy);
+
+ if (stereo_display_mode == S3D_DISPLAY_INTERLACE &&
+ (interlace(texel) == stereo_interlace_swap)) {
+ discard;
+ }
+
+ imageColor = texelFetch(imageTexture, texel, 0);
+ overlayColor = texelFetch(overlayTexture, texel, 0);
+}