@@ -15,9 +15,9 @@ fn matrix_eq_approx(a: Projection, b: Projection) -> bool {
15
15
let v1 = a. cols [ i] ;
16
16
let v2 = b. cols [ i] ;
17
17
if !is_equal_approx ( v1. x , v2. x )
18
- && !is_equal_approx ( v1. y , v2. y )
19
- && !is_equal_approx ( v1. z , v2. z )
20
- && !is_equal_approx ( v1. w , v2. w )
18
+ || !is_equal_approx ( v1. y , v2. y )
19
+ || !is_equal_approx ( v1. z , v2. z )
20
+ || !is_equal_approx ( v1. w , v2. w )
21
21
{
22
22
return false ;
23
23
}
@@ -39,12 +39,12 @@ fn test_create_orthogonal() {
39
39
for [ left, right, bottom, top, near, far] in TEST_DATA {
40
40
let rust_proj = Projection :: create_orthogonal ( left, right, bottom, top, near, far) ;
41
41
let godot_proj = InnerProjection :: create_orthogonal (
42
- left as _ ,
43
- right as _ ,
44
- bottom as _ ,
45
- top as _ ,
46
- near as _ ,
47
- far as _ ,
42
+ left. as_f64 ( ) ,
43
+ right. as_f64 ( ) ,
44
+ bottom. as_f64 ( ) ,
45
+ top. as_f64 ( ) ,
46
+ near. as_f64 ( ) ,
47
+ far. as_f64 ( ) ,
48
48
) ;
49
49
50
50
assert_eq_approx ! (
@@ -70,10 +70,10 @@ fn test_create_orthogonal_aspect() {
70
70
for ( size, aspect, near, far, flip_fov) in TEST_DATA {
71
71
let rust_proj = Projection :: create_orthogonal_aspect ( size, aspect, near, far, flip_fov) ;
72
72
let godot_proj = InnerProjection :: create_orthogonal_aspect (
73
- size as _ ,
74
- aspect as _ ,
75
- near as _ ,
76
- far as _ ,
73
+ size. as_f64 ( ) ,
74
+ aspect. as_f64 ( ) ,
75
+ near. as_f64 ( ) ,
76
+ far. as_f64 ( ) ,
77
77
flip_fov,
78
78
) ;
79
79
@@ -99,10 +99,10 @@ fn test_create_perspective() {
99
99
for ( fov_y, aspect, near, far, flip_fov) in TEST_DATA {
100
100
let rust_proj = Projection :: create_perspective ( fov_y, aspect, near, far, flip_fov) ;
101
101
let godot_proj = InnerProjection :: create_perspective (
102
- fov_y as _ ,
103
- aspect as _ ,
104
- near as _ ,
105
- far as _ ,
102
+ fov_y. as_f64 ( ) ,
103
+ aspect. as_f64 ( ) ,
104
+ near. as_f64 ( ) ,
105
+ far. as_f64 ( ) ,
106
106
flip_fov,
107
107
) ;
108
108
@@ -126,12 +126,12 @@ fn test_create_frustum() {
126
126
for [ left, right, bottom, top, near, far] in TEST_DATA {
127
127
let rust_proj = Projection :: create_frustum ( left, right, bottom, top, near, far) ;
128
128
let godot_proj = InnerProjection :: create_frustum (
129
- left as _ ,
130
- right as _ ,
131
- bottom as _ ,
132
- top as _ ,
133
- near as _ ,
134
- far as _ ,
129
+ left. as_f64 ( ) ,
130
+ right. as_f64 ( ) ,
131
+ bottom. as_f64 ( ) ,
132
+ top. as_f64 ( ) ,
133
+ near. as_f64 ( ) ,
134
+ far. as_f64 ( ) ,
135
135
) ;
136
136
137
137
assert_eq_approx ! (
@@ -155,12 +155,13 @@ fn test_create_frustum_aspect() {
155
155
for ( size, aspect, offset, near, far, flip_fov) in TEST_DATA {
156
156
let rust_proj =
157
157
Projection :: create_frustum_aspect ( size, aspect, offset, near, far, flip_fov) ;
158
+
158
159
let godot_proj = InnerProjection :: create_frustum_aspect (
159
- size as _ ,
160
- aspect as _ ,
160
+ size. as_f64 ( ) ,
161
+ aspect. as_f64 ( ) ,
161
162
offset,
162
- near as _ ,
163
- far as _ ,
163
+ near. as_f64 ( ) ,
164
+ far. as_f64 ( ) ,
164
165
flip_fov,
165
166
) ;
166
167
@@ -177,28 +178,32 @@ fn test_create_frustum_aspect() {
177
178
178
179
#[ itest]
179
180
fn test_projection_combined ( ) {
181
+ let range = [ 0 , 5 , 10 , 15 , 20 ] ;
182
+
180
183
fn f ( v : isize ) -> real {
181
184
( v as real ) * 0.5 - 0.5
182
185
}
186
+
183
187
// Orthogonal
184
- for left_i in 0 .. 20 {
188
+ for left_i in range {
185
189
let left = f ( left_i) ;
186
- for right in ( left_i + 1 ..= 20 ) . map ( f ) {
187
- for bottom_i in 0 .. 20 {
190
+ for right in range . map ( |v| f ( v + left_i ) ) {
191
+ for bottom_i in range {
188
192
let bottom = f ( bottom_i) ;
189
- for top in ( bottom_i + 1 ..= 20 ) . map ( f ) {
190
- for near_i in 0 .. 20 {
193
+ for top in range . map ( |v| f ( v + bottom_i ) ) {
194
+ for near_i in range {
191
195
let near = f ( near_i) ;
192
- for far in ( near_i + 1 ..= 20 ) . map ( f ) {
196
+ for far in range . map ( |v| f ( v + near_i ) ) {
193
197
let rust_proj =
194
198
Projection :: create_orthogonal ( left, right, bottom, top, near, far) ;
199
+
195
200
let godot_proj = InnerProjection :: create_orthogonal (
196
- left as _ ,
197
- right as _ ,
198
- bottom as _ ,
199
- top as _ ,
200
- near as _ ,
201
- far as _ ,
201
+ left. as_f64 ( ) ,
202
+ right. as_f64 ( ) ,
203
+ bottom. as_f64 ( ) ,
204
+ top. as_f64 ( ) ,
205
+ near. as_f64 ( ) ,
206
+ far. as_f64 ( ) ,
202
207
) ;
203
208
204
209
assert_eq_approx ! (
@@ -220,20 +225,21 @@ fn test_projection_combined() {
220
225
}
221
226
222
227
// Perspective
223
- for fov_y in ( 0 .. 18 ) . map ( |v| ( v as real ) * 10.0 ) {
224
- for aspect_x in 1 ..=10 {
225
- for aspect_y in 1 ..=10 {
228
+ for fov_y in [ 3 , 6 , 12 , 15 ] . map ( |v| ( v as real ) * 10.0 ) {
229
+ for aspect_x in 1 ..=3 {
230
+ for aspect_y in 1 ..=3 {
226
231
let aspect = ( aspect_x as real ) / ( aspect_y as real ) ;
227
- for near_i in 1 ..10 {
232
+ for near_i in 1 ..4 {
228
233
let near = near_i as real ;
229
- for far in ( near_i + 1 ..= 20 ) . map ( |v| v as real ) {
234
+ for far in range . map ( |v| ( v + near_i + 1 ) as real ) {
230
235
let rust_proj =
231
236
Projection :: create_perspective ( fov_y, aspect, near, far, false ) ;
237
+
232
238
let godot_proj = InnerProjection :: create_perspective (
233
- fov_y as _ ,
234
- aspect as _ ,
235
- near as _ ,
236
- far as _ ,
239
+ fov_y. as_f64 ( ) ,
240
+ aspect. as_f64 ( ) ,
241
+ near. as_f64 ( ) ,
242
+ far. as_f64 ( ) ,
237
243
false ,
238
244
) ;
239
245
@@ -255,24 +261,25 @@ fn test_projection_combined() {
255
261
}
256
262
257
263
// Frustum
258
- for left_i in 0 .. 20 {
264
+ for left_i in range {
259
265
let left = f ( left_i) ;
260
- for right in ( left_i + 1 ..= 20 ) . map ( f ) {
261
- for bottom_i in 0 .. 20 {
266
+ for right in range . map ( |v| f ( v + left_i + 1 ) ) {
267
+ for bottom_i in range {
262
268
let bottom = f ( bottom_i) ;
263
- for top in ( bottom_i + 1 ..= 20 ) . map ( f ) {
264
- for near_i in 0 .. 20 {
269
+ for top in range . map ( |v| f ( v + bottom_i + 1 ) ) {
270
+ for near_i in range {
265
271
let near = ( near_i as real ) * 0.5 ;
266
- for far in ( near_i + 1 ..= 20 ) . map ( |v| ( v as real ) * 0.5 ) {
272
+ for far in range . map ( |v| ( ( v + near_i + 1 ) as real ) * 0.5 ) {
267
273
let rust_proj =
268
274
Projection :: create_frustum ( left, right, bottom, top, near, far) ;
275
+
269
276
let godot_proj = InnerProjection :: create_frustum (
270
- left as _ ,
271
- right as _ ,
272
- bottom as _ ,
273
- top as _ ,
274
- near as _ ,
275
- far as _ ,
277
+ left. as_f64 ( ) ,
278
+ right. as_f64 ( ) ,
279
+ bottom. as_f64 ( ) ,
280
+ top. as_f64 ( ) ,
281
+ near. as_f64 ( ) ,
282
+ far. as_f64 ( ) ,
276
283
) ;
277
284
278
285
assert_eq_approx ! (
@@ -294,13 +301,14 @@ fn test_projection_combined() {
294
301
}
295
302
296
303
// Size, Aspect, Near, Far
297
- for size in ( 1 ..=10 ) . map ( |v| v as real ) {
298
- for aspect_x in 1 ..=10 {
299
- for aspect_y in 1 ..=10 {
304
+ let range = [ 1 , 4 , 7 , 10 ] ;
305
+ for size in range. map ( |v| v as real ) {
306
+ for aspect_x in range {
307
+ for aspect_y in range {
300
308
let aspect = ( aspect_x as real ) / ( aspect_y as real ) ;
301
- for near_i in 1 .. 10 {
309
+ for near_i in range {
302
310
let near = near_i as real ;
303
- for far in ( near_i + 1 ..= 20 ) . map ( |v| v as real ) {
311
+ for far in range . map ( |v| ( v + near_i ) as real ) {
304
312
let rust_proj_frustum = Projection :: create_frustum_aspect (
305
313
size,
306
314
aspect,
@@ -310,11 +318,11 @@ fn test_projection_combined() {
310
318
false ,
311
319
) ;
312
320
let godot_proj_frustum = InnerProjection :: create_frustum_aspect (
313
- size as _ ,
314
- aspect as _ ,
321
+ size. as_f64 ( ) ,
322
+ aspect. as_f64 ( ) ,
315
323
Vector2 :: ZERO ,
316
- near as _ ,
317
- far as _ ,
324
+ near. as_f64 ( ) ,
325
+ far. as_f64 ( ) ,
318
326
false ,
319
327
) ;
320
328
@@ -327,11 +335,12 @@ fn test_projection_combined() {
327
335
328
336
let rust_proj_ortho =
329
337
Projection :: create_orthogonal_aspect ( size, aspect, near, far, false ) ;
338
+
330
339
let godot_proj_ortho = InnerProjection :: create_orthogonal_aspect (
331
- size as _ ,
332
- aspect as _ ,
333
- near as _ ,
334
- far as _ ,
340
+ size. as_f64 ( ) ,
341
+ aspect. as_f64 ( ) ,
342
+ near. as_f64 ( ) ,
343
+ far. as_f64 ( ) ,
335
344
false ,
336
345
) ;
337
346
0 commit comments