@@ -70,12 +70,6 @@ const SOLAR_RADIUS = 695.7e6;
70
70
const SOLAR_LUMINOSITY = 3.828e26 ;
71
71
// watts
72
72
const SOLAR_TEMPERATURE = 5772. ;
73
- // kelvin
74
-
75
- const PI = 3.14159265358979323846264338327950288419716939937510 ;
76
- const PHI = 1.6180339887 ;
77
- const BIG = 1e20 ;
78
- const SMALL = 1e-20 ;
79
73
function maybe_int (
80
74
/*bool*/ exists
81
75
) {
@@ -121,6 +115,43 @@ function maybe_vec4(
121
115
} ;
122
116
}
123
117
118
+ const PI = 3.14159265358979323846264338327950288419716939937510 ;
119
+ const PHI = 1.6180339887 ;
120
+ const BIG = 1e20 ;
121
+ const SMALL = 1e-20 ;
122
+ /*
123
+ "bump" is the Alan Zucconi bump function.
124
+ It's a fast and easy way to approximate any kind of wavelet or gaussian function
125
+ Adapted from GPU Gems and Alan Zucconi
126
+ from https://www.alanzucconi.com/2017/07/15/improving-the-rainbow/
127
+ */
128
+ /*float*/
129
+ function bump (
130
+ /*float*/ x ,
131
+ /*float*/ edge0 ,
132
+ /*float*/ edge1 ,
133
+ /*float*/ height
134
+ ) {
135
+ let center = ( edge1 + edge0 ) / 2. ;
136
+ let width = ( edge1 - edge0 ) / 2. ;
137
+ let offset = ( x - center ) / width ;
138
+ return height * glm . max ( 1. - offset * offset , 0. ) ;
139
+ }
140
+
141
+ /*
142
+ "oplus" is the o-plus operator,
143
+ or the reciprocal of the sum of reciprocals.
144
+ It's a handy function that comes up a lot in some physics problems.
145
+ It's pretty useful for preventing division by zero.
146
+ */
147
+ /*float*/
148
+ function oplus (
149
+ /*float*/ a ,
150
+ /*float*/ b
151
+ ) {
152
+ return 1. / ( 1. / a + 1. / b ) ;
153
+ }
154
+
124
155
/*maybe_float*/
125
156
function get_distance_along_line_to_union (
126
157
/*maybe_float*/ shape1 ,
@@ -162,8 +193,8 @@ function get_distances_along_line_to_intersection(
162
193
/*maybe_vec2*/ shape1 ,
163
194
/*maybe_vec2*/ shape2
164
195
) {
165
- let x = shape1 . exists && shape2 . exists ? glm . max ( shape1 . value . x , shape2 . value . x ) : 0. f ;
166
- let y = shape1 . exists && shape2 . exists ? glm . min ( shape1 . value . y , shape2 . value . y ) : 0. f ;
196
+ let x = shape1 . exists && shape2 . exists ? glm . max ( shape1 . value . x , shape2 . value . x ) : 0.0 ;
197
+ let y = shape1 . exists && shape2 . exists ? glm . min ( shape1 . value . y , shape2 . value . y ) : 0.0 ;
167
198
return maybe_vec2 ( glm . vec2 ( x , y ) , shape1 . exists && shape2 . exists && x < y ) ;
168
199
}
169
200
@@ -193,7 +224,7 @@ function get_distance_along_2d_line_to_line(
193
224
// offset
194
225
let R = D [ '-' ] ( A [ '*' ] ( glm . dot ( D , A ) ) ) ;
195
226
// rejection
196
- return maybe_float ( glm . length ( R ) / glm . dot ( B , glm . normalize ( ( R ) [ "*" ] ( - 1 ) ) ) , glm . abs ( glm . abs ( glm . dot ( A , B ) ) - 1. f ) > 0. f ) ;
227
+ return maybe_float ( glm . length ( R ) / glm . dot ( B , glm . normalize ( ( R ) [ "*" ] ( - 1 ) ) ) , glm . abs ( glm . abs ( glm . dot ( A , B ) ) - 1.0 ) > 0.0 ) ;
197
228
}
198
229
199
230
/*
@@ -218,7 +249,7 @@ function get_distance_along_2d_line_to_ray(
218
249
// distance along B
219
250
let xA = xB / glm . dot ( B , A ) ;
220
251
// distance along A
221
- return maybe_float ( xB , glm . abs ( glm . abs ( glm . dot ( A , B ) ) - 1. f ) > 0. f && xA > 0. f ) ;
252
+ return maybe_float ( xB , glm . abs ( glm . abs ( glm . dot ( A , B ) ) - 1.0 ) > 0.0 && xA > 0.0 ) ;
222
253
}
223
254
224
255
/*
@@ -244,7 +275,7 @@ function get_distance_along_2d_line_to_line_segment(
244
275
// distance along B
245
276
let xA = xB / glm . dot ( B , A ) ;
246
277
// distance along A
247
- return maybe_float ( xB , glm . abs ( glm . abs ( glm . dot ( A , B ) ) - 1. f ) > 0. f && 0. < xA && xA < glm . length ( B2 [ '-' ] ( B1 ) ) ) ;
278
+ return maybe_float ( xB , glm . abs ( glm . abs ( glm . dot ( A , B ) ) - 1.0 ) > 0.0 && 0. < xA && xA < glm . length ( B2 [ '-' ] ( B1 ) ) ) ;
248
279
}
249
280
250
281
/*maybe_vec2*/
@@ -310,7 +341,7 @@ function get_distance_along_3d_line_nearest_to_line(
310
341
// cross
311
342
let R = D [ '-' ] ( ( A [ '*' ] ( glm . dot ( D , A ) ) ) [ '-' ] ( C [ '*' ] ( glm . dot ( D , C ) ) ) ) ;
312
343
// rejection
313
- return maybe_float ( glm . length ( R ) / - glm . dot ( B , glm . normalize ( R ) ) , glm . abs ( glm . abs ( glm . dot ( A , B ) ) - 1. f ) > 0. f ) ;
344
+ return maybe_float ( glm . length ( R ) / - glm . dot ( B , glm . normalize ( R ) ) , glm . abs ( glm . abs ( glm . dot ( A , B ) ) - 1.0 ) > 0.0 ) ;
314
345
}
315
346
316
347
/*
@@ -334,7 +365,7 @@ function get_distance_along_3d_line_nearest_to_ray(
334
365
// distance along B
335
366
let xA = xB / glm . dot ( B , A ) ;
336
367
// distance along A
337
- return maybe_float ( xB , glm . abs ( glm . abs ( glm . dot ( A , B ) ) - 1. f ) > 0. f && xA > 0. f ) ;
368
+ return maybe_float ( xB , glm . abs ( glm . abs ( glm . dot ( A , B ) ) - 1.0 ) > 0.0 && xA > 0.0 ) ;
338
369
}
339
370
340
371
/*
@@ -359,7 +390,7 @@ function get_distance_along_3d_line_nearest_to_line_segment(
359
390
// distance along B
360
391
let xA = xB / glm . dot ( B , A ) ;
361
392
// distance along A
362
- return maybe_float ( xB , glm . abs ( glm . abs ( glm . dot ( A , B ) ) - 1. f ) > 0. f && 0. < xA && xA < glm . length ( B1 [ '-' ] ( B0 ) ) ) ;
393
+ return maybe_float ( xB , glm . abs ( glm . abs ( glm . dot ( A , B ) ) - 1.0 ) > 0.0 && 0. < xA && xA < glm . length ( B1 [ '-' ] ( B0 ) ) ) ;
363
394
}
364
395
365
396
/*
@@ -521,7 +552,7 @@ function get_distances_along_3d_line_to_infinite_cylinder(
521
552
let a = 1.0 - BA * BA ;
522
553
let b = glm . dot ( D , A ) - BD * BA ;
523
554
let c = glm . dot ( D , D ) - BD * BD - r * r ;
524
- let h = glm . sqrt ( glm . max ( b * b - a * c , 0. f ) ) ;
555
+ let h = glm . sqrt ( glm . max ( b * b - a * c , 0.0 ) ) ;
525
556
return maybe_vec2 ( glm . vec2 ( ( - b + h ) / a , ( - b - h ) / a ) , h > 0.0 ) ;
526
557
}
527
558
@@ -621,7 +652,7 @@ function get_distance_along_3d_line_to_infinite_cone(
621
652
let c = glm . dot ( D , B ) * glm . dot ( D , B ) - glm . dot ( D , D ) * cosb * cosb ;
622
653
let det = b * b - 4. * a * c ;
623
654
if ( det < 0. ) {
624
- return maybe_float ( 0. f , false ) ;
655
+ return maybe_float ( 0.0 , false ) ;
625
656
}
626
657
627
658
det = glm . sqrt ( det ) ;
@@ -1165,39 +1196,6 @@ function get_rgb_fraction_of_light_transmitted_through_fluid_along_flat_surface(
1165
1196
return Math . exp ( ( ( beta_ray [ '+' ] ( beta_mie [ '+' ] ( beta_abs ) ) ) ) [ '*' ] ( - sigma ) ) ;
1166
1197
}
1167
1198
1168
- /*
1169
- "bump" is the Alan Zucconi bump function.
1170
- It's a fast and easy way to approximate any kind of wavelet or gaussian function
1171
- Adapted from GPU Gems and Alan Zucconi
1172
- from https://www.alanzucconi.com/2017/07/15/improving-the-rainbow/
1173
- */
1174
- /*float*/
1175
- function bump (
1176
- /*float*/ x ,
1177
- /*float*/ edge0 ,
1178
- /*float*/ edge1 ,
1179
- /*float*/ height
1180
- ) {
1181
- let center = ( edge1 + edge0 ) / 2. ;
1182
- let width = ( edge1 - edge0 ) / 2. ;
1183
- let offset = ( x - center ) / width ;
1184
- return height * glm . max ( 1. - offset * offset , 0. ) ;
1185
- }
1186
-
1187
- /*
1188
- "oplus" is the o-plus operator,
1189
- or the reciprocal of the sum of reciprocals.
1190
- It's a handy function that comes up a lot in some physics problems.
1191
- It's pretty useful for preventing division by zero.
1192
- */
1193
- /*float*/
1194
- function oplus (
1195
- /*float*/ a ,
1196
- /*float*/ b
1197
- ) {
1198
- return 1. / ( 1. / a + 1. / b ) ;
1199
- }
1200
-
1201
1199
/*
1202
1200
This function returns a rgb vector that best represents color at a given wavelength
1203
1201
It is from Alan Zucconi: https://www.alanzucconi.com/2017/07/15/improving-the-rainbow/
0 commit comments