Differential D6922 Diff 22829 source/blender/gpu/shaders/gpu_shader_image_overlays_stereo_merge_frag.glsl
Changeset View
Changeset View
Standalone View
Standalone View
source/blender/gpu/shaders/gpu_shader_image_overlays_stereo_merge_frag.glsl
- This file was added.
| #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; | |||||
fclem: Camel Case for uniform samplers. | |||||
| 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; | |||||
Done Inline ActionsDid you mean layout(location = 1) ? Index is only when using dual source blending. Here we are using multitarget rendering. fclem: Did you mean `layout(location = 1)` ? Index is only when using dual source blending. Here we… | |||||
| 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; | |||||
| } | |||||
Done Inline Actionsdiscard implies return. fclem: discard implies return. | |||||
| imageColor = texelFetch(imageTexture, texel, 0); | |||||
| overlayColor = texelFetch(overlayTexture, texel, 0); | |||||
| } | |||||
Camel Case for uniform samplers.