|
|
@ -88,35 +88,21 @@ float trace(vec3 from, vec3 direction) {
|
|
88
|
88
|
}
|
|
89
|
89
|
|
|
90
|
90
|
uniform vec3 origin; //#slider[(-10.0,0.41,10.0),(-10.0,2.03,10.0),(-10.0,-1.34,10.0)]
|
|
91
|
|
uniform vec3 angle; //#slider[(-3.0,0.31,3.0),(-3.0,1.77,3.0),(-3.0,-0.18,3.0)]
|
|
92
|
|
uniform vec3 color; //#slider[(0.0, 1.0, 1.0),(0.0,0.0,1.0),(0.0,0.0,1.0)]
|
|
93
|
|
uniform float colorMix; //#slider[0.0,0.9,1.0]
|
|
|
91
|
uniform float whee; //#slider[-3.1415,0.0,3.1415]
|
|
94
|
92
|
|
|
95
|
93
|
void main() {
|
|
96
|
|
vec2 q = gl_FragCoord.xy / iResolution.xy;
|
|
97
|
|
vec2 p = -1.0 + 2.0*q;
|
|
98
|
|
p.x *= iResolution.x / iResolution.y;
|
|
99
|
|
vec2 mo = iMouse.xy/iResolution.xy;
|
|
|
94
|
// screen coords (0,0)..(width,height) to "centered" & normalized coords (-1,-1)..(1,1)
|
|
|
95
|
vec2 normalizedCoord = -1.0 + gl_FragCoord.xy / iResolution * 2.0;
|
|
|
96
|
// aspect ratio (?)
|
|
|
97
|
normalizedCoord.x *= iResolution.x / iResolution.y;
|
|
100
|
98
|
|
|
101
|
|
float time = 15.0 + 0.0; // iGlobalTime
|
|
|
99
|
mat3 ca = setCamera(origin, origin + iDirection, whee);
|
|
|
100
|
vec3 direction = ca * normalize(vec3(normalizedCoord.xy, 2.5));
|
|
102
|
101
|
|
|
103
|
|
// camera
|
|
104
|
|
vec3 ro = origin; //vec3( -0.5+3.2*cos(0.1*time + 6.0*mo.x), 1.0 + 2.0*mo.y, 0.5 + 3.2*sin(0.1*time + 6.0*mo.x) );
|
|
105
|
|
vec3 ta = angle; //vec3( -0.5, -0.4, 0.5 );
|
|
106
|
|
|
|
107
|
|
// camera-to-world transformation
|
|
108
|
|
mat3 ca = setCamera( ro, ta, 0.0 );
|
|
109
|
|
|
|
110
|
|
// ray direction
|
|
111
|
|
vec3 rd = ca * normalize( vec3(p.xy, 2.5) );
|
|
112
|
|
|
|
113
|
|
// render
|
|
114
|
|
float dist = trace(ro, rd);
|
|
|
102
|
// render
|
|
|
103
|
float dist = trace(origin, direction);
|
|
115
|
104
|
vec3 col = vec3(dist, dist, dist);
|
|
116
|
105
|
|
|
117
|
|
col = mix(color, col, colorMix);
|
|
118
|
|
//col = pow( col, vec3(0.4545));
|
|
119
|
|
|
|
120
|
106
|
gl_FragColor = vec4( col, 1.0 );
|
|
121
|
107
|
}`
|
|
122
|
108
|
};
|