Selaa lähdekoodia

make default shader/distance function more interesting

Lucas Stadler 10 vuotta sitten
vanhempi
commit
42421002bf
1 muutettua tiedostoa jossa 23 lisäystä ja 8 poistoa
  1. 23 8
      glsl/raymarching.js

+ 23 - 8
glsl/raymarching.js

@ -74,8 +74,7 @@ void main() {
74 74
}
75 75
`
76 76
77
  var fragmentShaderSrc = `
78
precision highp float;
77
  var fragmentShaderSrc = `precision highp float;
79 78
80 79
uniform vec2 iResolution;
81 80
uniform vec3 iMouse;
@ -98,10 +97,6 @@ float trace(vec3 from, vec3 direction) {
98 97
	return 1.0-float(stepsDone)/float(MaximumRaySteps);
99 98
}
100 99
101
float DistanceEstimator(vec3 pos) {
102
  return length(pos) - 1.0;
103
}
104
105 100
/*uniform int MaxIterations; //#slider[1,50,200]
106 101
const float bailout = 4.0;
107 102
const float power = 8.0;
@ -159,6 +154,26 @@ float DistanceEstimator(vec3 z0) {
159 154
	return 0.5 * r * log(r)/r_dz;
160 155
}*/
161 156
157
float sphere(vec3 pos) {
158
  return length(pos) - 1.0;
159
}
160
161
float pMod1(inout float p, float size) {
162
  float halfsize = size * 0.5;
163
  float c = floor((p + halfsize)/size);
164
  p = mod(p+halfsize, size)-halfsize;
165
  return c;
166
}
167
168
uniform vec3 offset; //#slider[(0.0,10.0,20.0),(0.0,10.0,20.0),(0.0,2.5,20.0)]
169
170
float DistanceEstimator(vec3 pos) {
171
  pMod1(pos.x, offset.x);
172
  pMod1(pos.y, offset.y);
173
  pMod1(pos.z, offset.z);
174
  return sphere(pos);
175
}
176
162 177
mat3 setCamera( in vec3 ro, in vec3 ta, float cr ) {
163 178
	vec3 cw = normalize(ta-ro);
164 179
	vec3 cp = vec3(sin(cr), cos(cr),0.0);
@ -167,8 +182,8 @@ mat3 setCamera( in vec3 ro, in vec3 ta, float cr ) {
167 182
  return mat3( cu, cv, cw );
168 183
}
169 184
170
uniform vec3 origin; //#slider[(-10.0,1.0,10.0),(-10.0,2.0,10.0),(-10.0,-1.0,10.0)]
171
uniform vec3 angle; //#slider[(-3.0,0.0,3.0),(-3.0,0.0,3.0),(-3.0,0.0,3.0)]
185
uniform vec3 origin; //#slider[(-10.0,0.41,10.0),(-10.0,2.03,10.0),(-10.0,-1.34,10.0)]
186
uniform vec3 angle; //#slider[(-3.0,0.31,3.0),(-3.0,1.77,3.0),(-3.0,-0.18,3.0)]
172 187
uniform vec3 color; //#slider[(0.0, 1.0, 1.0),(0.0,0.0,1.0),(0.0,0.0,1.0)]
173 188
uniform float colorMix; //#slider[0.0,0.9,1.0]
174 189