Skip to content

Commit 46cf11e

Browse files
committed
create stereoscopic-3d subdir and move some things to it
1 parent c78d656 commit 46cf11e

5 files changed

+147
-0
lines changed
File renamed without changes.
+143
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,143 @@
1+
// Shutter 3D to side-by-side
2+
// by hunterk
3+
// license: public domain
4+
5+
#pragma parameter ZOOM "Zoom" 1.0 0.0 2.0 0.01
6+
#pragma parameter vert_pos "Vertical Modifier" 0.0 -2.0 2.0 0.01
7+
#pragma parameter horz_pos "Horizontal Modifier" 0.0 -2.0 2.0 0.01
8+
#pragma parameter separation "Eye Separation" 0.0 -2.0 2.0 0.01
9+
#pragma parameter flicker "Hold Last Frame (reduce flicker)" 0.0 0.0 1.0 1.0
10+
#pragma parameter height_mod "Image Height" 1.0 0.0 2.0 0.01
11+
12+
#if defined(VERTEX)
13+
14+
#if __VERSION__ >= 130
15+
#define COMPAT_VARYING out
16+
#define COMPAT_ATTRIBUTE in
17+
#define COMPAT_TEXTURE texture
18+
#else
19+
#define COMPAT_VARYING varying
20+
#define COMPAT_ATTRIBUTE attribute
21+
#define COMPAT_TEXTURE texture2D
22+
#endif
23+
24+
#ifdef GL_ES
25+
#define COMPAT_PRECISION mediump
26+
#else
27+
#define COMPAT_PRECISION
28+
#endif
29+
30+
COMPAT_ATTRIBUTE vec4 VertexCoord;
31+
COMPAT_ATTRIBUTE vec4 COLOR;
32+
COMPAT_ATTRIBUTE vec4 TexCoord;
33+
COMPAT_VARYING vec4 COL0;
34+
COMPAT_VARYING vec2 left_coord;
35+
COMPAT_VARYING vec2 right_coord;
36+
COMPAT_VARYING float timer;
37+
38+
vec4 _oPosition1;
39+
uniform mat4 MVPMatrix;
40+
uniform COMPAT_PRECISION int FrameDirection;
41+
uniform COMPAT_PRECISION int FrameCount;
42+
uniform COMPAT_PRECISION vec2 OutputSize;
43+
uniform COMPAT_PRECISION vec2 TextureSize;
44+
uniform COMPAT_PRECISION vec2 InputSize;
45+
46+
// compatibility #defines
47+
#define vTexCoord TEX0.xy
48+
#define SourceSize vec4(TextureSize, 1.0 / TextureSize) //either TextureSize or InputSize
49+
#define OutSize vec4(OutputSize, 1.0 / OutputSize)
50+
51+
#ifdef PARAMETER_UNIFORM
52+
uniform COMPAT_PRECISION float ZOOM, vert_pos, separation, flicker, height_mod, horz_pos;
53+
#else
54+
#define ZOOM 1.0
55+
#define vert_pos 0.0
56+
#define horz_pos 0.0
57+
#define separation 0.0
58+
#define flicker 0.0
59+
#define height_mod 1.0
60+
#endif
61+
62+
void main()
63+
{
64+
gl_Position = MVPMatrix * VertexCoord;
65+
vec2 temp_coord = TexCoord.xy - 0.5 * InputSize / TextureSize;
66+
temp_coord *= ZOOM;
67+
temp_coord *= vec2(2.,1. / height_mod);
68+
temp_coord += vec2(horz_pos, vert_pos);
69+
temp_coord += 0.5 * InputSize / TextureSize;
70+
left_coord = temp_coord.xy - vec2(0.5 + separation,0.) * InputSize / TextureSize;
71+
right_coord = temp_coord.xy + vec2(0.5 + separation,0.) * InputSize / TextureSize;
72+
timer = mod(float(FrameCount), 2.);
73+
}
74+
75+
#elif defined(FRAGMENT)
76+
77+
#ifdef GL_ES
78+
#ifdef GL_FRAGMENT_PRECISION_HIGH
79+
precision highp float;
80+
#else
81+
precision mediump float;
82+
#endif
83+
#define COMPAT_PRECISION mediump
84+
#else
85+
#define COMPAT_PRECISION
86+
#endif
87+
88+
#if __VERSION__ >= 130
89+
#define COMPAT_VARYING in
90+
#define COMPAT_TEXTURE texture
91+
out COMPAT_PRECISION vec4 FragColor;
92+
#else
93+
#define COMPAT_VARYING varying
94+
#define FragColor gl_FragColor
95+
#define COMPAT_TEXTURE texture2D
96+
#endif
97+
98+
uniform COMPAT_PRECISION int FrameDirection;
99+
uniform COMPAT_PRECISION int FrameCount;
100+
uniform COMPAT_PRECISION vec2 OutputSize;
101+
uniform COMPAT_PRECISION vec2 TextureSize;
102+
uniform COMPAT_PRECISION vec2 InputSize;
103+
uniform sampler2D Texture;
104+
uniform sampler2D PrevTexture;
105+
COMPAT_VARYING vec2 left_coord;
106+
COMPAT_VARYING vec2 right_coord;
107+
COMPAT_VARYING float timer;
108+
109+
// compatibility #defines
110+
#define Source Texture
111+
#define vTexCoord TEX0.xy
112+
113+
#define SourceSize vec4(TextureSize, 1.0 / TextureSize) //either TextureSize or InputSize
114+
#define OutSize vec4(OutputSize, 1.0 / OutputSize)
115+
116+
#ifdef PARAMETER_UNIFORM
117+
uniform COMPAT_PRECISION float ZOOM, vert_pos, separation, flicker, height_mod, horz_pos;
118+
#else
119+
#define ZOOM 1.0
120+
#define vert_pos 0.0
121+
#define horz_pos 0.0
122+
#define separation 0.0
123+
#define flicker 0.0
124+
#define height_mod 1.0
125+
#endif
126+
127+
void main()
128+
{
129+
vec4 left_screen = COMPAT_TEXTURE(Source, left_coord);
130+
vec4 left_hold = COMPAT_TEXTURE(PrevTexture, left_coord);
131+
vec4 right_screen = COMPAT_TEXTURE(Source, right_coord);
132+
vec4 right_hold = COMPAT_TEXTURE(PrevTexture, right_coord);
133+
left_screen = left_screen * timer + (1. - timer) * left_hold * flicker;
134+
vec2 left_fragcoord = left_coord * InputSize / TextureSize;
135+
bool left_check = left_fragcoord.x > 0.0001 && left_fragcoord.y > 0.0001 && left_fragcoord.x < 0.9999 && left_fragcoord.y < 0.9999;
136+
left_screen *= (left_check) ? 1.0 : 0.0;
137+
right_screen = right_screen * (1. - timer) + right_hold * timer * flicker;
138+
vec2 right_fragcoord = right_coord * InputSize / TextureSize;
139+
bool right_check = right_fragcoord.x > 0.0001 && right_fragcoord.y > 0.0001 && right_fragcoord.x < 0.9999 && right_fragcoord.y < 0.9999;
140+
right_screen *= (right_check) ? 1.0 : 0.0;
141+
FragColor = left_screen + right_screen;
142+
}
143+
#endif
File renamed without changes.
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
shaders = 1
2+
3+
shader0 = shaders/shutter-3d.glsl
4+
wrap_mode0 = edge

0 commit comments

Comments
 (0)