partial collision

This commit is contained in:
Zack Buhman 2025-12-04 19:26:04 -06:00
parent 1224a6e1ad
commit 916041667b
16 changed files with 5711 additions and 5457 deletions

View File

@ -103,6 +103,7 @@ MAIN_OBJS = \
src/glad.o \ src/glad.o \
src/opengl.o \ src/opengl.o \
src/render.o \ src/render.o \
src/collision.o \
$(patsubst %.glsl,%.glsl.o,$(wildcard src/shader/*.glsl)) \ $(patsubst %.glsl,%.glsl.o,$(wildcard src/shader/*.glsl)) \
$(patsubst %.data,%.data.o,$(wildcard src/level/*.data)) \ $(patsubst %.data,%.data.o,$(wildcard src/level/*.data)) \
$(patsubst %.data.pal,%.data.pal.o,$(wildcard src/level/*.data.pal)) \ $(patsubst %.data.pal,%.data.pal.o,$(wildcard src/level/*.data.pal)) \

Binary file not shown.

Binary file not shown.

6
include/collision.hpp Normal file
View File

@ -0,0 +1,6 @@
#pragma once
#include "math/float_types.hpp"
vec4 collision(mat4x4 trans,
vec3 point, vec3 velocity);

File diff suppressed because it is too large Load Diff

View File

@ -2,296 +2,296 @@
# www.blender.org # www.blender.org
mtllib block.mtl mtllib block.mtl
o Cube o Cube
v 0.728013 0.440923 -0.381697 v 1.456025 0.440923 -0.381697
v 0.644238 0.452916 -0.461143 v 1.288476 0.452916 -0.461143
v 0.622394 0.500000 -0.343897 v 1.244787 0.500000 -0.343897
v 0.709167 0.454219 -0.412896 v 1.418335 0.454219 -0.412896
v 0.701099 0.469791 -0.369685 v 1.402199 0.469791 -0.369685
v 0.690111 0.474526 -0.398518 v 1.380222 0.474526 -0.398518
v 0.637305 0.475900 -0.427367 v 1.274610 0.475900 -0.427367
v 0.678710 0.458580 -0.441779 v 1.357419 0.458580 -0.441779
v 0.669937 0.476518 -0.416845 v 1.339874 0.476518 -0.416845
v 0.662611 0.491320 -0.355910 v 1.325221 0.491320 -0.355910
v 0.629327 0.493098 -0.384544 v 1.258653 0.493098 -0.384544
v 0.664788 0.486997 -0.389481 v 1.329576 0.486997 -0.389481
v -0.728013 0.440923 -0.381697 v -1.456025 0.440923 -0.381697
v -0.622394 0.500000 -0.343897 v -1.244787 0.500000 -0.343897
v -0.644238 0.452916 -0.461143 v -1.288476 0.452916 -0.461143
v -0.701099 0.469791 -0.369685 v -1.402199 0.469791 -0.369685
v -0.709167 0.454219 -0.412896 v -1.418335 0.454219 -0.412896
v -0.690111 0.474526 -0.398518 v -1.380222 0.474526 -0.398518
v -0.629326 0.493098 -0.384544 v -1.258653 0.493098 -0.384544
v -0.662611 0.491320 -0.355910 v -1.325221 0.491320 -0.355910
v -0.664788 0.486997 -0.389481 v -1.329576 0.486997 -0.389481
v -0.678710 0.458580 -0.441780 v -1.357419 0.458580 -0.441780
v -0.637305 0.475900 -0.427367 v -1.274610 0.475900 -0.427367
v -0.669937 0.476518 -0.416845 v -1.339874 0.476518 -0.416845
v 0.728013 0.440923 0.381697 v 1.456025 0.440923 0.381697
v 0.622394 0.500000 0.343897 v 1.244787 0.500000 0.343897
v 0.644238 0.452916 0.461143 v 1.288476 0.452916 0.461143
v 0.701099 0.469791 0.369685 v 1.402199 0.469791 0.369685
v 0.709167 0.454219 0.412896 v 1.418335 0.454219 0.412896
v 0.690111 0.474526 0.398518 v 1.380222 0.474526 0.398518
v 0.629326 0.493098 0.384544 v 1.258653 0.493098 0.384544
v 0.662611 0.491320 0.355910 v 1.325221 0.491320 0.355910
v 0.664788 0.486997 0.389481 v 1.329576 0.486997 0.389481
v 0.678710 0.458580 0.441780 v 1.357419 0.458580 0.441780
v 0.637305 0.475900 0.427367 v 1.274610 0.475900 0.427367
v 0.669937 0.476518 0.416845 v 1.339874 0.476518 0.416845
v -0.644238 0.452916 0.461143 v -1.288476 0.452916 0.461143
v -0.622394 0.500000 0.343897 v -1.244787 0.500000 0.343897
v -0.728013 0.440923 0.381697 v -1.456025 0.440923 0.381697
v -0.637305 0.475900 0.427367 v -1.274610 0.475900 0.427367
v -0.678710 0.458580 0.441779 v -1.357419 0.458580 0.441779
v -0.669937 0.476518 0.416845 v -1.339874 0.476518 0.416845
v -0.662611 0.491320 0.355910 v -1.325221 0.491320 0.355910
v -0.629327 0.493098 0.384544 v -1.258653 0.493098 0.384544
v -0.664788 0.486997 0.389481 v -1.329576 0.486997 0.389481
v -0.709167 0.454219 0.412896 v -1.418335 0.454219 0.412896
v -0.701099 0.469791 0.369685 v -1.402199 0.469791 0.369685
v -0.690111 0.474526 0.398518 v -1.380222 0.474526 0.398518
v 0.887658 -0.000000 -0.857357 v 1.775316 -0.000000 -0.857357
v 0.871802 0.049732 -0.877005 v 1.743604 0.049732 -0.877005
v 0.890004 0.006663 -0.885957 v 1.780008 0.006663 -0.885957
v 0.884201 0.024866 -0.893148 v 1.768401 0.024866 -0.893148
v 0.902222 0.000000 -0.828995 v 1.804443 0.000000 -0.828995
v 0.948146 0.050904 -0.783980 v 1.896293 0.050904 -0.783980
v 0.935700 0.006820 -0.825706 v 1.871401 0.006820 -0.825706
v 0.952510 0.025452 -0.809229 v 1.905020 0.025452 -0.809229
v 0.893715 -0.000000 -0.855422 v 1.787430 -0.000000 -0.855422
v 0.910149 0.049848 -0.864452 v 1.820297 0.049848 -0.864452
v 0.912263 0.006678 -0.878805 v 1.824526 0.006678 -0.878805
v 0.918278 0.024924 -0.882110 v 1.836557 0.024924 -0.882110
v 0.897222 -0.000000 -0.851240 v 1.794445 -0.000000 -0.851240
v 0.938053 0.050306 -0.830395 v 1.876107 0.050306 -0.830395
v 0.928072 0.006740 -0.859850 v 1.856144 0.006740 -0.859850
v 0.943017 0.025153 -0.852220 v 1.886035 0.025153 -0.852220
v -0.902222 -0.000000 -0.828995 v -1.804443 -0.000000 -0.828995
v -0.948146 0.050904 -0.783980 v -1.896293 0.050904 -0.783980
v -0.935700 0.006820 -0.825706 v -1.871401 0.006820 -0.825706
v -0.952510 0.025452 -0.809229 v -1.905020 0.025452 -0.809229
v -0.887658 0.000000 -0.857357 v -1.775316 0.000000 -0.857357
v -0.871802 0.049732 -0.877005 v -1.743604 0.049732 -0.877005
v -0.890004 0.006663 -0.885957 v -1.780008 0.006663 -0.885957
v -0.884201 0.024866 -0.893148 v -1.768401 0.024866 -0.893148
v -0.897222 0.000000 -0.851240 v -1.794445 0.000000 -0.851240
v -0.938053 0.050306 -0.830395 v -1.876107 0.050306 -0.830395
v -0.928072 0.006740 -0.859850 v -1.856144 0.006740 -0.859850
v -0.943017 0.025153 -0.852220 v -1.886035 0.025153 -0.852220
v -0.893715 0.000000 -0.855422 v -1.787430 0.000000 -0.855422
v -0.910149 0.049848 -0.864452 v -1.820297 0.049848 -0.864452
v -0.912263 0.006678 -0.878805 v -1.824526 0.006678 -0.878805
v -0.918278 0.024924 -0.882110 v -1.836557 0.024924 -0.882110
v 0.902222 -0.000000 0.828995 v 1.804443 -0.000000 0.828995
v 0.948146 0.050904 0.783980 v 1.896293 0.050904 0.783980
v 0.935700 0.006820 0.825706 v 1.871401 0.006820 0.825706
v 0.952510 0.025452 0.809229 v 1.905020 0.025452 0.809229
v 0.887658 0.000000 0.857357 v 1.775316 0.000000 0.857357
v 0.871802 0.049732 0.877005 v 1.743604 0.049732 0.877005
v 0.890004 0.006663 0.885957 v 1.780008 0.006663 0.885957
v 0.884201 0.024866 0.893148 v 1.768401 0.024866 0.893148
v 0.897222 0.000000 0.851240 v 1.794445 0.000000 0.851240
v 0.938053 0.050306 0.830395 v 1.876107 0.050306 0.830395
v 0.928072 0.006740 0.859850 v 1.856144 0.006740 0.859850
v 0.943017 0.025153 0.852220 v 1.886035 0.025153 0.852220
v 0.893715 0.000000 0.855422 v 1.787430 0.000000 0.855422
v 0.910149 0.049848 0.864452 v 1.820297 0.049848 0.864452
v 0.912263 0.006678 0.878805 v 1.824526 0.006678 0.878805
v 0.918278 0.024924 0.882110 v 1.836557 0.024924 0.882110
v -0.887658 -0.000000 0.857357 v -1.775316 -0.000000 0.857357
v -0.871802 0.049732 0.877005 v -1.743604 0.049732 0.877005
v -0.890004 0.006663 0.885957 v -1.780008 0.006663 0.885957
v -0.884201 0.024866 0.893148 v -1.768401 0.024866 0.893148
v -0.902222 0.000000 0.828995 v -1.804443 0.000000 0.828995
v -0.948146 0.050904 0.783980 v -1.896293 0.050904 0.783980
v -0.935700 0.006820 0.825706 v -1.871401 0.006820 0.825706
v -0.952510 0.025452 0.809229 v -1.905020 0.025452 0.809229
v -0.893715 -0.000000 0.855422 v -1.787430 -0.000000 0.855422
v -0.910149 0.049848 0.864452 v -1.820297 0.049848 0.864452
v -0.912263 0.006678 0.878805 v -1.824526 0.006678 0.878805
v -0.918278 0.024924 0.882110 v -1.836557 0.024924 0.882110
v -0.897222 -0.000000 0.851240 v -1.794445 -0.000000 0.851240
v -0.938053 0.050306 0.830395 v -1.876107 0.050306 0.830395
v -0.928072 0.006740 0.859850 v -1.856144 0.006740 0.859850
v -0.943017 0.025153 0.852220 v -1.886035 0.025153 0.852220
vn -0.0000 -1.0000 -0.0000 vn -0.0000 -1.0000 -0.0000
vn 0.7680 0.6161 -0.1749 vn 0.5143 0.8250 -0.2343
vn 0.5160 0.7394 0.4325 vn 0.2884 0.8265 0.4834
vn -0.2198 0.7587 -0.6133 vn -0.1120 0.7728 -0.6247
vn -0.0000 1.0000 -0.0000 vn -0.0000 1.0000 -0.0000
vn 0.6999 0.7036 -0.1229 vn 0.4400 0.8846 -0.1545
vn 0.4765 0.7600 -0.4419 vn 0.2616 0.8344 -0.4852
vn 0.1624 0.8309 -0.5321 vn 0.0820 0.8393 -0.5375
vn 0.0922 0.9356 -0.3409 vn 0.0463 0.9386 -0.3420
vn 0.1698 0.9759 -0.1368 vn 0.0858 0.9867 -0.1383
vn 0.4635 0.8821 -0.0835 vn 0.2530 0.9631 -0.0912
vn 0.3422 0.8972 -0.2792 vn 0.1791 0.9394 -0.2923
vn -0.6999 0.7036 -0.1229 vn -0.4400 0.8846 -0.1545
vn -0.4364 0.8996 -0.0186 vn -0.2357 0.9716 -0.0201
vn -0.1698 0.9759 -0.1368 vn -0.0858 0.9867 -0.1383
vn -0.1108 0.9292 -0.3525 vn -0.0557 0.9335 -0.3542
vn -0.1624 0.8309 -0.5321 vn -0.0820 0.8393 -0.5375
vn -0.4841 0.7821 -0.3924 vn -0.2666 0.8615 -0.4322
vn -0.3422 0.8972 -0.2792 vn -0.1791 0.9394 -0.2923
vn 0.6999 0.7036 0.1229 vn 0.4400 0.8846 0.1545
vn 0.4364 0.8996 0.0186 vn 0.2357 0.9716 0.0201
vn 0.1698 0.9759 0.1368 vn 0.0858 0.9867 0.1383
vn 0.1108 0.9292 0.3525 vn 0.0557 0.9335 0.3542
vn 0.1624 0.8309 0.5321 vn 0.0820 0.8393 0.5375
vn 0.4841 0.7821 0.3924 vn 0.2666 0.8615 0.4322
vn 0.3422 0.8972 0.2792 vn 0.1791 0.9394 0.2923
vn -0.1624 0.8309 0.5321 vn -0.0820 0.8393 0.5375
vn -0.0922 0.9356 0.3409 vn -0.0463 0.9386 0.3420
vn -0.1698 0.9759 0.1368 vn -0.0858 0.9867 0.1383
vn -0.4635 0.8821 0.0835 vn -0.2530 0.9631 0.0912
vn -0.6999 0.7036 0.1229 vn -0.4400 0.8846 0.1545
vn -0.4765 0.7600 0.4419 vn -0.2616 0.8344 0.4852
vn -0.3422 0.8972 0.2792 vn -0.1791 0.9394 0.2923
vn 0.7314 0.6819 -0.0000 vn 0.4726 0.8813 -0.0000
vn 0.4882 0.8728 -0.0000 vn 0.2693 0.9630 -0.0000
vn 0.2110 0.9775 -0.0000 vn 0.1073 0.9942 -0.0000
vn -0.0000 0.8267 0.5626 vn -0.0000 0.8267 0.5626
vn -0.0000 0.9280 0.3727 vn -0.0000 0.9280 0.3727
vn -0.0000 0.9859 0.1674 vn -0.0000 0.9859 0.1674
vn -0.7314 0.6819 -0.0000 vn -0.4726 0.8813 -0.0000
vn -0.4882 0.8728 -0.0000 vn -0.2693 0.9630 -0.0000
vn -0.2110 0.9775 -0.0000 vn -0.1073 0.9942 -0.0000
vn -0.0000 0.8267 -0.5626 vn -0.0000 0.8267 -0.5626
vn -0.0000 0.9280 -0.3727 vn -0.0000 0.9280 -0.3727
vn -0.0000 0.9859 -0.1674 vn -0.0000 0.9859 -0.1674
vn -0.5160 0.7394 0.4325 vn -0.2884 0.8265 0.4834
vn -0.7572 0.6246 0.1912 vn -0.5015 0.8273 0.2532
vn -0.0000 0.7180 0.6961 vn -0.0000 0.7180 0.6961
vn -0.2198 0.7587 0.6133 vn -0.1120 0.7728 0.6247
vn 0.2198 0.7587 0.6133 vn 0.1120 0.7728 0.6247
vn -0.5160 0.7394 -0.4325 vn -0.2884 0.8265 -0.4834
vn 0.7572 0.6246 0.1912 vn 0.5015 0.8273 0.2532
vn -0.8709 0.4915 -0.0000 vn -0.6631 0.7485 -0.0000
vn -0.0000 0.7180 -0.6961 vn -0.0000 0.7180 -0.6961
vn -0.7572 0.6246 -0.1912 vn -0.5015 0.8273 -0.2532
vn 0.8709 0.4915 -0.0000 vn 0.6631 0.7485 -0.0000
vn 0.5158 0.7394 -0.4326 vn 0.2883 0.8265 -0.4835
vn -0.2035 -0.9781 0.0432 vn -0.1034 -0.9937 0.0439
vn -0.8026 -0.5709 0.1732 vn -0.5581 -0.7940 0.2410
vn -0.9116 0.3575 0.2028 vn -0.7426 0.5825 0.3305
vn -0.1734 -0.9746 0.1415 vn -0.0877 -0.9858 0.1431
vn -0.7254 -0.3411 0.5978 vn -0.4662 -0.4384 0.7684
vn -0.6279 0.5771 0.5222 vn -0.3741 0.6876 0.6223
vn -0.0717 -0.9726 0.2209 vn -0.0359 -0.9745 0.2214
vn -0.2952 -0.2637 0.9183 vn -0.1527 -0.2728 0.9499
vn -0.2427 0.6123 0.7525 vn -0.1241 0.6263 0.7697
vn 0.0706 -0.9728 0.2208 vn 0.0353 -0.9746 0.2213
vn 0.2974 -0.2673 0.9166 vn 0.1539 -0.2766 0.9486
vn 0.2447 0.6108 0.7530 vn 0.1252 0.6250 0.7705
vn 0.1706 -0.9749 0.1431 vn 0.0863 -0.9857 0.1447
vn 0.7210 -0.3464 0.6002 vn 0.4615 -0.4435 0.7684
vn 0.6276 0.5759 0.5239 vn 0.3739 0.6861 0.6241
vn 0.2012 -0.9785 0.0452 vn 0.1021 -0.9937 0.0459
vn 0.7988 -0.5750 0.1771 vn 0.5531 -0.7962 0.2453
vn 0.9117 0.3568 0.2038 vn 0.7428 0.5813 0.3321
vn -0.0706 -0.9728 -0.2208 vn -0.0353 -0.9746 -0.2213
vn -0.2974 -0.2673 -0.9166 vn -0.1539 -0.2766 -0.9486
vn -0.2447 0.6108 -0.7530 vn -0.1252 0.6250 -0.7705
vn -0.1706 -0.9749 -0.1431 vn -0.0863 -0.9857 -0.1447
vn -0.7210 -0.3464 -0.6002 vn -0.4615 -0.4435 -0.7684
vn -0.6276 0.5759 -0.5239 vn -0.3739 0.6861 -0.6241
vn -0.2012 -0.9785 -0.0452 vn -0.1021 -0.9937 -0.0459
vn -0.7988 -0.5750 -0.1771 vn -0.5531 -0.7962 -0.2453
vn -0.9117 0.3568 -0.2038 vn -0.7428 0.5813 -0.3321
vn 0.0717 -0.9726 -0.2209 vn 0.0359 -0.9745 -0.2214
vn 0.2952 -0.2637 -0.9183 vn 0.1527 -0.2728 -0.9499
vn 0.2427 0.6123 -0.7525 vn 0.1241 0.6263 -0.7697
vn 0.1734 -0.9746 -0.1415 vn 0.0877 -0.9858 -0.1431
vn 0.7254 -0.3411 -0.5978 vn 0.4662 -0.4384 -0.7684
vn 0.6279 0.5771 -0.5222 vn 0.3741 0.6876 -0.6223
vn 0.2035 -0.9781 -0.0432 vn 0.1034 -0.9937 -0.0439
vn 0.8026 -0.5709 -0.1732 vn 0.5581 -0.7940 -0.2410
vn 0.9116 0.3575 -0.2028 vn 0.7426 0.5825 -0.3305
vn 0.1996 -0.9799 -0.0000 vn 0.1013 -0.9949 -0.0000
vn 0.7425 -0.6699 -0.0000 vn 0.4847 -0.8747 -0.0000
vn 0.9856 0.1690 -0.0000 vn 0.9459 0.3244 -0.0000
vn -0.0000 -0.9739 -0.2269 vn -0.0000 -0.9739 -0.2269
vn -0.0000 -0.3674 -0.9300 vn -0.0000 -0.3674 -0.9300
vn -0.0000 0.5445 -0.8387 vn -0.0000 0.5445 -0.8387
vn -0.1996 -0.9799 -0.0000 vn -0.1013 -0.9949 -0.0000
vn -0.7425 -0.6699 -0.0000 vn -0.4847 -0.8747 -0.0000
vn -0.9856 0.1690 -0.0000 vn -0.9459 0.3244 -0.0000
vn -0.0000 -0.9739 0.2269 vn -0.0000 -0.9739 0.2269
vn -0.0000 -0.3674 0.9300 vn -0.0000 -0.3674 0.9300
vn -0.0000 0.5445 0.8387 vn -0.0000 0.5445 0.8387
vn 0.2016 0.7561 -0.6227 vn 0.1024 0.7678 -0.6324
vn 0.7572 0.6246 -0.1912 vn 0.5015 0.8273 -0.2532
vn 0.5158 0.7394 0.4326 vn 0.2883 0.8265 0.4835
vn -0.2016 0.7561 -0.6227 vn -0.1024 0.7678 -0.6324
vn 0.6722 0.7276 -0.1367 vn 0.4134 0.8949 -0.1681
vn 0.4841 0.7821 -0.3924 vn 0.2666 0.8615 -0.4322
vn 0.1583 0.8271 -0.5393 vn 0.0799 0.8350 -0.5445
vn 0.1108 0.9292 -0.3525 vn 0.0557 0.9335 -0.3542
vn 0.1526 0.9814 -0.1165 vn 0.0770 0.9901 -0.1175
vn 0.4364 0.8996 -0.0186 vn 0.2357 0.9716 -0.0201
vn -0.6722 0.7276 -0.1367 vn -0.4134 0.8949 -0.1681
vn -0.4635 0.8821 -0.0835 vn -0.2530 0.9631 -0.0912
vn -0.1526 0.9814 -0.1165 vn -0.0770 0.9901 -0.1175
vn -0.0922 0.9356 -0.3409 vn -0.0463 0.9386 -0.3420
vn -0.1583 0.8271 -0.5393 vn -0.0799 0.8350 -0.5445
vn -0.4765 0.7600 -0.4419 vn -0.2616 0.8344 -0.4852
vn 0.6722 0.7276 0.1367 vn 0.4134 0.8949 0.1681
vn 0.4635 0.8821 0.0835 vn 0.2530 0.9631 0.0912
vn 0.1526 0.9814 0.1165 vn 0.0770 0.9901 0.1175
vn 0.0922 0.9356 0.3409 vn 0.0463 0.9386 0.3420
vn 0.1583 0.8271 0.5393 vn 0.0799 0.8350 0.5445
vn 0.4765 0.7600 0.4419 vn 0.2616 0.8344 0.4852
vn -0.1583 0.8271 0.5393 vn -0.0799 0.8350 0.5445
vn -0.1108 0.9292 0.3525 vn -0.0557 0.9335 0.3542
vn -0.1526 0.9814 0.1165 vn -0.0770 0.9901 0.1175
vn -0.4364 0.8996 0.0186 vn -0.2357 0.9716 0.0201
vn -0.6722 0.7276 0.1367 vn -0.4134 0.8949 0.1681
vn -0.4841 0.7821 0.3924 vn -0.2666 0.8615 0.4322
vn -0.5158 0.7394 0.4326 vn -0.2883 0.8265 0.4835
vn -0.7680 0.6161 0.1749 vn -0.5143 0.8250 0.2343
vn -0.2016 0.7561 0.6227 vn -0.1024 0.7678 0.6324
vn 0.2016 0.7561 0.6227 vn 0.1024 0.7678 0.6324
vn -0.5158 0.7394 -0.4326 vn -0.2883 0.8265 -0.4835
vn 0.7680 0.6161 0.1749 vn 0.5143 0.8250 0.2343
vn -0.7680 0.6161 -0.1749 vn -0.5143 0.8250 -0.2343
vn 0.5160 0.7394 -0.4325 vn 0.2884 0.8265 -0.4834
vn -0.2012 -0.9785 0.0452 vn -0.1021 -0.9937 0.0459
vn -0.7988 -0.5749 0.1771 vn -0.5531 -0.7962 0.2453
vn -0.9117 0.3568 0.2038 vn -0.7428 0.5813 0.3321
vn -0.1706 -0.9749 0.1431 vn -0.0863 -0.9857 0.1447
vn -0.7210 -0.3464 0.6002 vn -0.4615 -0.4435 0.7684
vn -0.6276 0.5759 0.5239 vn -0.3739 0.6861 0.6241
vn -0.0706 -0.9728 0.2208 vn -0.0353 -0.9746 0.2212
vn -0.2974 -0.2673 0.9166 vn -0.1539 -0.2766 0.9486
vn -0.2447 0.6108 0.7530 vn -0.1252 0.6250 0.7705
vn 0.0717 -0.9726 0.2209 vn 0.0359 -0.9745 0.2214
vn 0.2952 -0.2637 0.9183 vn 0.1527 -0.2728 0.9499
vn 0.2427 0.6123 0.7525 vn 0.1241 0.6263 0.7697
vn 0.1734 -0.9746 0.1415 vn 0.0877 -0.9858 0.1431
vn 0.7254 -0.3411 0.5978 vn 0.4662 -0.4384 0.7684
vn 0.6279 0.5771 0.5222 vn 0.3741 0.6876 0.6223
vn 0.2035 -0.9781 0.0432 vn 0.1034 -0.9937 0.0439
vn 0.8026 -0.5709 0.1732 vn 0.5581 -0.7940 0.2410
vn 0.9116 0.3575 0.2028 vn 0.7426 0.5825 0.3305
vn -0.0717 -0.9726 -0.2209 vn -0.0359 -0.9745 -0.2214
vn -0.2952 -0.2637 -0.9183 vn -0.1527 -0.2728 -0.9499
vn -0.2427 0.6123 -0.7525 vn -0.1241 0.6263 -0.7697
vn -0.1734 -0.9746 -0.1415 vn -0.0877 -0.9858 -0.1431
vn -0.7254 -0.3411 -0.5978 vn -0.4662 -0.4384 -0.7684
vn -0.6279 0.5771 -0.5222 vn -0.3741 0.6876 -0.6223
vn -0.2035 -0.9781 -0.0432 vn -0.1034 -0.9937 -0.0439
vn -0.8026 -0.5709 -0.1732 vn -0.5581 -0.7940 -0.2410
vn -0.9116 0.3575 -0.2028 vn -0.7426 0.5825 -0.3305
vn 0.0706 -0.9728 -0.2208 vn 0.0353 -0.9746 -0.2212
vn 0.2974 -0.2673 -0.9166 vn 0.1539 -0.2766 -0.9486
vn 0.2447 0.6108 -0.7530 vn 0.1252 0.6250 -0.7705
vn 0.1706 -0.9749 -0.1431 vn 0.0863 -0.9857 -0.1447
vn 0.7210 -0.3464 -0.6002 vn 0.4615 -0.4435 -0.7684
vn 0.6276 0.5759 -0.5239 vn 0.3739 0.6861 -0.6241
vn 0.2012 -0.9785 -0.0452 vn 0.1021 -0.9937 -0.0459
vn 0.7988 -0.5749 -0.1771 vn 0.5531 -0.7962 -0.2453
vn 0.9117 0.3568 -0.2038 vn 0.7428 0.5813 -0.3321
vn 0.2198 0.7587 -0.6133 vn 0.1120 0.7728 -0.6247
vt 0.044995 0.962648 vt 0.044995 0.962648
vt 0.962429 0.947171 vt 0.962429 0.947171
vt 0.955005 0.037352 vt 0.955005 0.037352

View File

@ -18,30 +18,30 @@ const int cube_Cube_triangles[] = {
const int cube_Cube_triangles_length = (sizeof (cube_Cube_triangles)) / (sizeof (cube_Cube_triangles[0])); const int cube_Cube_triangles_length = (sizeof (cube_Cube_triangles)) / (sizeof (cube_Cube_triangles[0]));
const float cube_vertices[] = { const float cube_vertices[] = {
-1.000000f, 1.000000f, 1.000000f, 0.625000f, 0.000000f, -1.0000f, -0.0000f, -0.0000f, -2.000000f, 1.000000f, 1.000000f, 0.625000f, 0.000000f, -1.0000f, -0.0000f, -0.0000f,
-1.000000f, -1.000000f, -1.000000f, 0.375000f, 0.250000f, -1.0000f, -0.0000f, -0.0000f, -2.000000f, -1.000000f, -1.000000f, 0.375000f, 0.250000f, -1.0000f, -0.0000f, -0.0000f,
-1.000000f, -1.000000f, 1.000000f, 0.375000f, 0.000000f, -1.0000f, -0.0000f, -0.0000f, -2.000000f, -1.000000f, 1.000000f, 0.375000f, 0.000000f, -1.0000f, -0.0000f, -0.0000f,
-1.000000f, 1.000000f, -1.000000f, 0.625000f, 0.250000f, -0.0000f, -0.0000f, -1.0000f, -2.000000f, 1.000000f, -1.000000f, 0.625000f, 0.250000f, -0.0000f, -0.0000f, -1.0000f,
1.000000f, -1.000000f, -1.000000f, 0.375000f, 0.500000f, -0.0000f, -0.0000f, -1.0000f, 2.000000f, -1.000000f, -1.000000f, 0.375000f, 0.500000f, -0.0000f, -0.0000f, -1.0000f,
-1.000000f, -1.000000f, -1.000000f, 0.375000f, 0.250000f, -0.0000f, -0.0000f, -1.0000f, -2.000000f, -1.000000f, -1.000000f, 0.375000f, 0.250000f, -0.0000f, -0.0000f, -1.0000f,
1.000000f, 1.000000f, -1.000000f, 0.625000f, 0.500000f, 1.0000f, -0.0000f, -0.0000f, 2.000000f, 1.000000f, -1.000000f, 0.625000f, 0.500000f, 1.0000f, -0.0000f, -0.0000f,
1.000000f, -1.000000f, 1.000000f, 0.375000f, 0.750000f, 1.0000f, -0.0000f, -0.0000f, 2.000000f, -1.000000f, 1.000000f, 0.375000f, 0.750000f, 1.0000f, -0.0000f, -0.0000f,
1.000000f, -1.000000f, -1.000000f, 0.375000f, 0.500000f, 1.0000f, -0.0000f, -0.0000f, 2.000000f, -1.000000f, -1.000000f, 0.375000f, 0.500000f, 1.0000f, -0.0000f, -0.0000f,
1.000000f, 1.000000f, 1.000000f, 0.625000f, 0.750000f, -0.0000f, -0.0000f, 1.0000f, 2.000000f, 1.000000f, 1.000000f, 0.625000f, 0.750000f, -0.0000f, -0.0000f, 1.0000f,
-1.000000f, -1.000000f, 1.000000f, 0.375000f, 1.000000f, -0.0000f, -0.0000f, 1.0000f, -2.000000f, -1.000000f, 1.000000f, 0.375000f, 1.000000f, -0.0000f, -0.0000f, 1.0000f,
1.000000f, -1.000000f, 1.000000f, 0.375000f, 0.750000f, -0.0000f, -0.0000f, 1.0000f, 2.000000f, -1.000000f, 1.000000f, 0.375000f, 0.750000f, -0.0000f, -0.0000f, 1.0000f,
1.000000f, -1.000000f, -1.000000f, 0.375000f, 0.500000f, -0.0000f, -1.0000f, -0.0000f, 2.000000f, -1.000000f, -1.000000f, 0.375000f, 0.500000f, -0.0000f, -1.0000f, -0.0000f,
-1.000000f, -1.000000f, 1.000000f, 0.125000f, 0.750000f, -0.0000f, -1.0000f, -0.0000f, -2.000000f, -1.000000f, 1.000000f, 0.125000f, 0.750000f, -0.0000f, -1.0000f, -0.0000f,
-1.000000f, -1.000000f, -1.000000f, 0.125000f, 0.500000f, -0.0000f, -1.0000f, -0.0000f, -2.000000f, -1.000000f, -1.000000f, 0.125000f, 0.500000f, -0.0000f, -1.0000f, -0.0000f,
-1.000000f, 1.000000f, -1.000000f, 0.875000f, 0.500000f, -0.0000f, 1.0000f, -0.0000f, -2.000000f, 1.000000f, -1.000000f, 0.875000f, 0.500000f, -0.0000f, 1.0000f, -0.0000f,
1.000000f, 1.000000f, 1.000000f, 0.625000f, 0.750000f, -0.0000f, 1.0000f, -0.0000f, 2.000000f, 1.000000f, 1.000000f, 0.625000f, 0.750000f, -0.0000f, 1.0000f, -0.0000f,
1.000000f, 1.000000f, -1.000000f, 0.625000f, 0.500000f, -0.0000f, 1.0000f, -0.0000f, 2.000000f, 1.000000f, -1.000000f, 0.625000f, 0.500000f, -0.0000f, 1.0000f, -0.0000f,
-1.000000f, 1.000000f, -1.000000f, 0.625000f, 0.250000f, -1.0000f, -0.0000f, -0.0000f, -2.000000f, 1.000000f, -1.000000f, 0.625000f, 0.250000f, -1.0000f, -0.0000f, -0.0000f,
1.000000f, 1.000000f, -1.000000f, 0.625000f, 0.500000f, -0.0000f, -0.0000f, -1.0000f, 2.000000f, 1.000000f, -1.000000f, 0.625000f, 0.500000f, -0.0000f, -0.0000f, -1.0000f,
1.000000f, 1.000000f, 1.000000f, 0.625000f, 0.750000f, 1.0000f, -0.0000f, -0.0000f, 2.000000f, 1.000000f, 1.000000f, 0.625000f, 0.750000f, 1.0000f, -0.0000f, -0.0000f,
-1.000000f, 1.000000f, 1.000000f, 0.625000f, 1.000000f, -0.0000f, -0.0000f, 1.0000f, -2.000000f, 1.000000f, 1.000000f, 0.625000f, 1.000000f, -0.0000f, -0.0000f, 1.0000f,
1.000000f, -1.000000f, 1.000000f, 0.375000f, 0.750000f, -0.0000f, -1.0000f, -0.0000f, 2.000000f, -1.000000f, 1.000000f, 0.375000f, 0.750000f, -0.0000f, -1.0000f, -0.0000f,
-1.000000f, 1.000000f, 1.000000f, 0.875000f, 0.750000f, -0.0000f, 1.0000f, -0.0000f, -2.000000f, 1.000000f, 1.000000f, 0.875000f, 0.750000f, -0.0000f, 1.0000f, -0.0000f,
}; };
const int cube_vertices_length = (sizeof (cube_vertices)) / (sizeof (cube_vertices[0])); const int cube_vertices_length = (sizeof (cube_vertices)) / (sizeof (cube_vertices[0]));

View File

@ -2,14 +2,14 @@
# www.blender.org # www.blender.org
mtllib cube.mtl mtllib cube.mtl
o Cube o Cube
v -1.000000 -1.000000 1.000000 v -2.000000 -1.000000 1.000000
v -1.000000 1.000000 1.000000 v -2.000000 1.000000 1.000000
v -1.000000 -1.000000 -1.000000 v -2.000000 -1.000000 -1.000000
v -1.000000 1.000000 -1.000000 v -2.000000 1.000000 -1.000000
v 1.000000 -1.000000 1.000000 v 2.000000 -1.000000 1.000000
v 1.000000 1.000000 1.000000 v 2.000000 1.000000 1.000000
v 1.000000 -1.000000 -1.000000 v 2.000000 -1.000000 -1.000000
v 1.000000 1.000000 -1.000000 v 2.000000 1.000000 -1.000000
vn -1.0000 -0.0000 -0.0000 vn -1.0000 -0.0000 -0.0000
vn -0.0000 -0.0000 -1.0000 vn -0.0000 -0.0000 -1.0000
vn 1.0000 -0.0000 -0.0000 vn 1.0000 -0.0000 -0.0000

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@ -1,5 +1,7 @@
#pragma once #pragma once
#include "state.h"
#ifdef __cplusplus #ifdef __cplusplus
extern "C" { extern "C" {
#endif #endif
@ -22,7 +24,7 @@ extern "C" {
uint uniform_normal_trans, uint uniform_normal_trans,
uint uniform_base_color, uint uniform_base_color,
uint uniform_light_pos, uint uniform_light_pos,
float paddle_x); struct game_state * state);
#ifdef __cplusplus #ifdef __cplusplus
} }

19
include/state.h Normal file
View File

@ -0,0 +1,19 @@
#pragma once
#ifdef __cplusplus
extern "C" {
#endif
struct game_state {
float paddle_x;
float paddle_y;
float ball_x;
float ball_y;
float ball_dx;
float ball_dy;
};
#ifdef __cplusplus
}
#endif

View File

@ -5,5 +5,6 @@ cd include/model
python ~/model_generator2/generate_indexed_cpp2.py paddle.obj paddle > paddle.h python ~/model_generator2/generate_indexed_cpp2.py paddle.obj paddle > paddle.h
python ~/model_generator2/generate_indexed_cpp2.py block.obj block > block.h python ~/model_generator2/generate_indexed_cpp2.py block.obj block > block.h
python ~/model_generator2/generate_indexed_cpp2.py ball.obj ball > ball.h python ~/model_generator2/generate_indexed_cpp2.py ball.obj ball > ball.h
python ~/model_generator2/generate_indexed_cpp2.py cube.obj cube > cube.h
rm -f *.mtl rm -f *.mtl

174
src/collision.cpp Normal file
View File

@ -0,0 +1,174 @@
#include <math.h>
#include "collision.hpp"
#include "model/cube.h"
// cube_vertices
// cube_Cube_triangles
vec3 _plane_normal(vec3 a,
vec3 b,
vec3 c)
{
return normalize(cross(b - a, c - a));
}
float _plane_d(vec3 normal,
vec3 origin)
{
return -dot(normal, origin);
}
float _signed_distance(vec3 plane_normal,
float plane_d,
vec3 point)
{
return dot(point, plane_normal) + plane_d;
}
float clamp(float v,
float min,
float max)
{
if (v > max)
return max;
if (v < min)
return min;
return v;
}
vec2 _t0_t1(float signed_distance,
float r_n_dot_v)
{
if (r_n_dot_v == 0.0)
return vec2(0.0, 1.0);
else {
float t0 = (-1.0 - signed_distance) * r_n_dot_v;
float t1 = ( 1.0 - signed_distance) * r_n_dot_v;
if (t0 > t1) {
float tmp = t0;
t0 = t1;
t1 = tmp;
}
t0 = clamp(t0, 0.0, 1.0);
t1 = clamp(t0, 0.0, 1.0);
return vec2(t0, t1);
}
}
bool point_in_triangle(vec3 point,
vec3 ap,
vec3 bp,
vec3 cp)
{
vec3 ba = bp - ap;
vec3 ca = cp - ap;
vec3 vp = point - ap;
float a = dot(ba, ba);
float b = dot(ba, ca);
float c = dot(ca, ca);
float d = dot(vp, ba);
float e = dot(vp, ca);
float x = (d * c) - (e * b);
float y = (e * a) - (d * b);
float z = x + y - ((a * c) - (b * b));
return (z < 0) and not ((x < 0) or (y < 0));
}
vec2 collision_inner(vec3 plane_normal,
vec3 a, vec3 b, vec3 c,
vec3 point,
vec3 velocity)
{
vec3 plane_origin = a;
float plane_d = _plane_d(plane_normal, plane_origin);
float signed_distance = _signed_distance(plane_normal, plane_d, point);
float n_dot_v = dot(plane_normal, velocity);
float r_n_dot_v = 1.0f / n_dot_v;
//bool embedded = n_dot_v == 0.0f;
if (n_dot_v == 0.0f) {
if (fabsf(signed_distance) >= 1.0f)
return false;
}
vec2 t0_t1 = _t0_t1(signed_distance, r_n_dot_v);
float t0 = t0_t1.x;
//float t1 = t0_t1.y;
vec3 plane_intersection_point = point - plane_normal + t0 * velocity;
bool inside = point_in_triangle(plane_intersection_point, a, b, c);
float inside_f = inside ? 1.0f : 0.0f;
return vec2(inside_f, t0);
}
vec4 collision(mat4x4 trans,
vec3 point, vec3 velocity)
{
bool collision = false;
float smallest = 0.0f;
vec3 smallest_normal = vec3(0, 0, 0);
for (int i = 0; i < cube_Cube_triangles_length / 3; i++) {
const float * a = &cube_vertices[cube_Cube_triangles[i * 3 + 0] * 8];
const float * b = &cube_vertices[cube_Cube_triangles[i * 3 + 1] * 8];
const float * c = &cube_vertices[cube_Cube_triangles[i * 3 + 2] * 8];
vec3 ap = trans * vec3(a[0], a[1], a[2]);
vec3 bp = trans * vec3(b[0], b[1], b[2]);
vec3 cp = trans * vec3(c[0], c[1], c[2]);
vec3 plane_normal = _plane_normal(ap, bp, cp);
vec2 res = collision_inner(plane_normal, ap, bp, cp, point, velocity);
bool inside = res.x == 1.0f;
float t0 = res.y;
if (!inside)
continue;
if (collision == false || t0 < smallest) {
smallest = t0;
smallest_normal = plane_normal;
}
collision = true;
}
float collision_f = collision ? 1.0 : 0.0;
return vec4(smallest_normal.x,
smallest_normal.y,
smallest_normal.z,
collision_f);
}
/*
bool collision(float ball_x, float ball_y,
float ball_dx, float ball_dy)
{
const uint8_t * level = (const uint8_t *)src_level_level1_data_start;
const uint8_t * pal = (const uint8_t *)src_level_level1_data_pal_start;
for (int y = 0; y < 28; y++) {
for (int x = 0; x < 13; x++) {
char tile = level[y * 13 + x];
if (tile == 0)
continue;
//if ( (paddle_x + 1.0) >= ((float)x - 1.0)
//&& (paddle_x - 1.0) <= ((float)x + 1.0)
//&& (paddle_y + 1.0) >= ((float)y - 1.0)
//&& (paddle_y - 1.0) <= ((float)y + 1.0)) {
collision_inner(translate(vec3(x, y, 0)),
vec3(ball_x, ball_y, 0),
vec3(ball_dx, ball_dy, 0));
}
}
}
*/

View File

@ -1,5 +1,6 @@
#include <stdio.h> #include <stdio.h>
#include <unistd.h> #include <unistd.h>
#include <math.h>
#include "glad/glad.h" #include "glad/glad.h"
@ -14,9 +15,9 @@
#include "model/block.h" #include "model/block.h"
#include "model/paddle.h" #include "model/paddle.h"
#include "model/ball.h" #include "model/ball.h"
#include "model/cube.h" //#include "model/cube.h"
int vp_width = 2400; int vp_width = 1600;
int vp_height = 1200; int vp_height = 1200;
void framebuffer_size_callback(GLFWwindow* window, int width, int height) void framebuffer_size_callback(GLFWwindow* window, int width, int height)
@ -35,6 +36,14 @@ static const float triangle_vertex_buffer_data[] = {
}; };
*/ */
float deadzone(float n)
{
if (fabsf(n) < 0.02)
return 0.0f;
else
return n;
}
int main() int main()
{ {
////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////
@ -114,10 +123,18 @@ int main()
const double frame_rate = 60.0; const double frame_rate = 60.0;
const double first_frame = glfwGetTime(); const double first_frame = glfwGetTime();
double last_frame = first_frame; double last_frame = first_frame;
double frames = 0; double frames = 1;
const char * last_gamepad_name = NULL; const char * last_gamepad_name = NULL;
float paddle_x = 0.0; struct game_state state;
state.paddle_x = 0.0;
state.paddle_y = 26.0;
state.ball_x = 0.0;
state.ball_y = 25.0;
state.ball_dx = 0.1;
state.ball_dy = 0.1;
while(!glfwWindowShouldClose(window)) { while(!glfwWindowShouldClose(window)) {
if(glfwGetKey(window, GLFW_KEY_ESCAPE) == GLFW_PRESS) if(glfwGetKey(window, GLFW_KEY_ESCAPE) == GLFW_PRESS)
@ -130,6 +147,8 @@ int main()
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
float paddle_dx = 0.0; float paddle_dx = 0.0;
//float paddle_dy = 0.0;
for (int i = 0; i < 16; i++) { for (int i = 0; i < 16; i++) {
int present = glfwJoystickPresent(GLFW_JOYSTICK_1 + i); int present = glfwJoystickPresent(GLFW_JOYSTICK_1 + i);
int is_gamepad = glfwJoystickIsGamepad(GLFW_JOYSTICK_1 + i); int is_gamepad = glfwJoystickIsGamepad(GLFW_JOYSTICK_1 + i);
@ -142,19 +161,44 @@ int main()
printf("active gamepad: `%s`; axes: %d\n", name, count); printf("active gamepad: `%s`; axes: %d\n", name, count);
last_gamepad_name = name; last_gamepad_name = name;
} }
float left = axes[2] * 0.5 + 0.5; float left = axes[2] * 0.5 + 0.5;
float right = axes[5] * 0.5 + 0.5; float right = axes[5] * 0.5 + 0.5;
paddle_dx = right - left; paddle_dx = right - left;
//state.ball_dx = deadzone(axes[0]);
//state.ball_dy = deadzone(axes[1]);
break; break;
} }
} }
float extent = 0.25; float extent = 0.25;
paddle_x += paddle_dx * 0.4; state.paddle_x += paddle_dx * 0.4;
if (paddle_x < extent) if (state.paddle_x < extent)
paddle_x = extent; state.paddle_x = extent;
if (paddle_x > 12 - extent) if (state.paddle_x > 12 - extent)
paddle_x = 12 - extent; state.paddle_x = 12 - extent;
//state.paddle_y += paddle_dy * 0.4;
if ((state.ball_x + state.ball_dx * 0.4) > 12.25f) {
state.ball_x = 12.25f;
state.ball_dx = -state.ball_dx;
} else if ((state.ball_x + state.ball_dx * 0.4) < -0.25f) {
state.ball_x = -0.25f;
state.ball_dx = -state.ball_dx;
} else {
state.ball_x += state.ball_dx * 0.4;
}
if ((state.ball_y + state.ball_dy * 0.4) > 27.0f) {
state.ball_y = 27.0f;
state.ball_dy = -state.ball_dy;
} else if ((state.ball_y + state.ball_dy * 0.4) < 0.0f) {
state.ball_y = 0.0f;
state.ball_dy = -state.ball_dy;
} else {
state.ball_y += state.ball_dy * 0.4;
}
render(paddle_mesh, render(paddle_mesh,
block_mesh, block_mesh,
@ -166,14 +210,17 @@ int main()
uniform_normal_trans, uniform_normal_trans,
uniform_base_color, uniform_base_color,
uniform_light_pos, uniform_light_pos,
paddle_x); &state);
glfwSwapBuffers(window); glfwSwapBuffers(window);
glfwPollEvents(); glfwPollEvents();
double next_frame = last_frame + 1.0 / frame_rate; double next_frame = last_frame + 1.0 / frame_rate;
last_frame = glfwGetTime();
while (next_frame - glfwGetTime() > 0) { while (next_frame - glfwGetTime() > 0) {
double delta = next_frame - glfwGetTime(); double delta = next_frame - glfwGetTime();
if (delta < 0)
break;
glfwWaitEventsTimeout(delta); glfwWaitEventsTimeout(delta);
} }
//printf("fps %f\n", frames / (glfwGetTime() - first_frame)); //printf("fps %f\n", frames / (glfwGetTime() - first_frame));

View File

@ -4,6 +4,7 @@
#include "glad/glad.h" #include "glad/glad.h"
#include "collision.hpp"
#include "render.hpp" #include "render.hpp"
#include "math/float_types.hpp" #include "math/float_types.hpp"
#include "math/transform.hpp" #include "math/transform.hpp"
@ -57,14 +58,18 @@ mat4x4 perspective(float low1, float high1,
return m3; return m3;
} }
static const float x_scale = 1.0f / 12.0f;
//static const float y_scale = 1.0f / 27.0f;
static const float y_scale = 1.0f / 12.0f;
static inline float px(float x) static inline float px(float x)
{ {
return (x / 12.0) * 2.0 - 1.0 + 1.0f / 12.0f; return (x * x_scale) * 2.0 - 1.0 + x_scale;
} }
static inline float py(float y) static inline float py(float y)
{ {
return (y / 27.0) * -2.0 + 1.0 - 1.0f / 27.0f; return (y * y_scale) * -2.0 + 1.0 - y_scale;
} }
/* /*
@ -81,13 +86,15 @@ void render(mesh paddle_mesh,
uint uniform_normal_trans, uint uniform_normal_trans,
uint uniform_base_color, uint uniform_base_color,
uint uniform_light_pos, uint uniform_light_pos,
float paddle_x) struct game_state * state)
{ {
static float theta = 0; static float theta = 0;
float aspect = (float)vp_height / (float)vp_width; float aspect = (float)vp_height / (float)vp_width;
mat4x4 a = scale(vec3(aspect, 1.0f, 1.0f)); mat4x4 p = perspective(-1, 1, 0, 1);
mat4x4 tt = translate(vec3(-1.2f, 1.4f, 2.0f));
mat4x4 a = scale(vec3(aspect, 1.0f, 1.0f)) * p * tt * scale(0.05f);// * rotate_x(PI / 4.0f);
theta += 0.01; theta += 0.01;
@ -132,23 +139,27 @@ void render(mesh paddle_mesh,
for (int y = 0; y < 28; y++) { for (int y = 0; y < 28; y++) {
for (int x = 0; x < 13; x++) { for (int x = 0; x < 13; x++) {
char tile = level[y * 13 + x]; char tile = level[y * 13 + x];
if (tile == 0) //if (tile == 0)
continue; //continue;
const float cs = 1.0f / 255.0f; const float cs = 1.0f / 255.0f;
vec3 base_color = vec3(((float)pal[tile * 3 + 0]) * cs, vec3 base_color = vec3(((float)pal[tile * 3 + 0]) * cs,
((float)pal[tile * 3 + 1]) * cs, ((float)pal[tile * 3 + 1]) * cs,
((float)pal[tile * 3 + 2]) * cs); ((float)pal[tile * 3 + 2]) * cs);
mat4x4 rx = rotate_x(PI / 2.0f); mat4x4 rx = rotate_x(-PI / 2.0f);
//mat4x4 p = perspective(-1, 1, 0, 1); mat4x4 t = translate(vec3(x * 4.0f, -y * 2.0f, 0.0f));
mat4x4 s = scale(vec3(1.0f / 12.0f,
1.0f / 27.0f,
1.0f / 27.0f));
mat4x4 t = translate(vec3(px(x), py(y), 0.0)); mat4x4 trans = a * t * rx;
mat4x4 trans = a * t * rx * s; vec4 res = collision(t * rx,
vec3(state->ball_x * 4.0f, -state->ball_y * 2.0f, 0),
vec3(0, 0, 0));
bool collision = res.w == 1.0f;
if (collision) {
//vec3 normal = vec3(res.x, res.y, res.z);
base_color = vec3(1, 0, 0);
}
//mat3x3 normal_trans = transpose(inverse(submatrix(trans, 0, 0))); //mat3x3 normal_trans = transpose(inverse(submatrix(trans, 0, 0)));
mat3x3 normal_trans = submatrix(rx, 3, 3); mat3x3 normal_trans = submatrix(rx, 3, 3);
@ -169,16 +180,10 @@ void render(mesh paddle_mesh,
{ {
mat4x4 rx = rotate_y(PI / 2.0f); mat4x4 rx = rotate_y(PI / 2.0f);
mat4x4 s = scale(1.0f / 12.0f);
/*
mat4x4 s = scale(vec3(1.0f,
1.3f,
1.5f));
*/
mat4x4 t = translate(vec3(px(paddle_x), py(26), 0.0)); mat4x4 t = translate(vec3(state->paddle_x * 4.0f, -state->paddle_y * 2.0f, 0.0));
mat4x4 trans = a * t * rx * s; mat4x4 trans = a * t * rx;
mat3x3 normal_trans = submatrix(rx, 3, 3); mat3x3 normal_trans = submatrix(rx, 3, 3);
//vec3 base_color = vec3(1, 1, 1); //vec3 base_color = vec3(1, 1, 1);
vec3 base_color = vec3(1, 1, 1) * 0.5f; vec3 base_color = vec3(1, 1, 1) * 0.5f;
@ -226,10 +231,9 @@ void render(mesh paddle_mesh,
{ {
mat4x4 rx = rotate_y(PI / 2.0f); mat4x4 rx = rotate_y(PI / 2.0f);
mat4x4 s = scale(1.0f / 27.0f); mat4x4 t = translate(vec3(state->ball_x * 4.0f, -state->ball_y * 2.0f, 0.0));
mat4x4 t = translate(vec3(px(paddle_x), py(25), 0.0));
mat4x4 trans = a * t * rx * s; mat4x4 trans = a * t * rx;
mat3x3 normal_trans = submatrix(rx, 3, 3); mat3x3 normal_trans = submatrix(rx, 3, 3);
//vec3 base_color = vec3(1, 1, 1); //vec3 base_color = vec3(1, 1, 1);
vec3 base_color = vec3(1, 1, 1) * 0.5f; vec3 base_color = vec3(1, 1, 1) * 0.5f;