Просмотр исходного кода

support camera movement by default

Lucas Stadler лет назад: 10
Родитель
Сommit
5ba30a77fd
2 измененных файлов с 10 добавлено и 23 удалено
  1. 9 23
      glsl/defaultFiles.js
  2. 1 0
      glsl/transformShader.js

+ 9 - 23
glsl/defaultFiles.js

@ -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
};

+ 1 - 0
glsl/transformShader.js

@ -3,6 +3,7 @@ var prelude = `precision highp float;
3 3
uniform float iGlobalTime;
4 4
uniform vec2 iResolution;
5 5
uniform vec3 iMouse;
6
uniform vec3 iDirection;
6 7
7 8
`;
8 9