forked from raysan5/raylib
-
Notifications
You must be signed in to change notification settings - Fork 0
/
CHANGELOG
1495 lines (1446 loc) · 86.1 KB
/
CHANGELOG
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
963
964
965
966
967
968
969
970
971
972
973
974
975
976
977
978
979
980
981
982
983
984
985
986
987
988
989
990
991
992
993
994
995
996
997
998
999
1000
changelog
---------
Current Release: raylib 4.0.0 (05 November 2021)
-------------------------------------------------------------------------
Release: raylib 4.0 - 8th Anniversary Edition (05 November 2021)
-------------------------------------------------------------------------
KEY CHANGES:
- Naming consistency and coherency: Complete review of the library: sintax, naming, comments, decriptions, logs...
- Event Automation System: Support for input events recording and automatic re-playing, useful for automated testing and more!
- Custom game-loop control: Intended for advance users that want to control the events polling and the timming mechanisms
- rlgl 4.0: Completely decoupling from platform layer and raylib, intended for standalone usage as single-file header-only
- raymath 1.5: Complete review following new conventions, to make it more portable and self-contained
- raygui 3.0: Complete review and official new release, more portable and self-contained, intended for tools development
- raylib_parser: New tool to parse raylib.h and extract all required info into custom output formats (TXT, XML, JSON...)
- Zig and Odin official support
Detailed changes:
[core] ADDED: Support canvas resizing on web (#1840) by @skylersaleh
[core] ADDED: GetMouseDelta() (#1832) by @adricoin2010
[core] ADDED: Support additional mouse buttons (#1753) by @lambertwang
[core] ADDED: SetRandomSeed() (#1994) by @TommiSinivuo
[core] ADDED: GetTouchPointId() #1972
[core] ADDED: EncodeDataBase64() and DecodeDataBase64()
[core] REMOVED: PLATFORM_UWP, difficult to maintain
[core] REMOVED: IsGamepadName()
[core] RENAMED: SwapBuffers() to SwapScreenBuffer()
[core] RENAMED: Wait() to WaitTime()
[core] RENAMED: RayHitInfo to RayCollision (#1781)
[core] RENAMED: GetRayCollisionGround() to GetRayCollisionQuad() (#1781)
[core] REVIEWED: Support mouse wheel on x-axis (#1948)
[core] REVIEWED: DisableCursor() on web by registering an empty mouse click event function in emscripten (#1900) by @grenappels
[core] REVIEWED: LoadShader() and default locations and descriptions
[core] REVIEWED: LoadShaderFromMemory() (#1851) by @Ruminant
[core] REVIEWED: WaitTime(), avoid global variables dependency to make the function is self-contained (#1841)
[core] REVIEWED: SetWindowSize() to work on web (#1847) by @nikki93
[core] REVIEWED: Raspberry RPI/DRM keyboard blocking render loop (#1879) @luizpestana
[core] REVIEWED: Android multi-touch (#1869) by @humbe
[core] REVIEWED: Implemented GetGamepadName() for emscripten by @nbarkhina
[core] REVIEWED: HighDPI support (#1987) by @ArnaudValensi
[core] REVIEWED: KeyCallback(), register keys independently of the actions
[rlgl] ADDED: GRAPHIC_API_OPENGL_43
[rlgl] ADDED: rlUpdateVertexBufferElements() (#1915)
[rlgl] ADDED: rlActiveDrawBuffers() (#1911)
[rlgl] ADDED: rlEnableColorBlend()/rlDisableColorBlend()
[rlgl] ADDED: rlGetPixelFormatName()
[rlgl] REVIEWED: rlUpdateVertexBuffer (#1914) by @630Studios
[rlgl] REVIEWED: rlDrawVertexArrayElements() (#1891)
[rlgl] REVIEWED: Wrong normal matrix calculation (#1870)
[raymath] ADDED: Vector3Angle()
[raymath] REVIEWED: QuaternionFromAxisAngle() (#1892)
[raymath] REVIEWED: QuaternionToMatrix() returning transposed result. (#1793) by @object71
[shapes] ADDED: RenderPolyLinesEx() (#1758) by @lambertwang
[shapes] ADDED: DrawLineBezierCubic() (#2021) by @SAOMDVN
[textures] ADDED: GetImageColor() #2024
[textures] REMOVED: GenImagePerlinNoise()
[textures] RENAMED: GetTextureData() to LoadImageFromTexture()
[textures] RENAMED: GetScreenData() to LoadImageFromScreen()
[textures] REVIEWED: ExportImage() to use SaveFileData() (#1779)
[textures] REVIEWED: LoadImageAnim() #2005
[text] ADDED: Security check in case of not valid font
[text] ADDED: `GetGlyphInfo()` to get glyph info for a specific codepoint
[text] ADDED: `GetGlyphAtlasRec()` to get glyph rectangle within the generated font atlas
[text] ADDED: DrawTextPro() with text rotation support, WARNING: DrawTextPro() requires including `rlgl.h`, before it was only dependant on `textures` module.
[text] ADDED: UnloadCodepoints() to safely free loaded codepoints
[text] REMOVED: DrawTextRec() and DrawTextRecEx(), moved to example, those functions could be very specific depending on user needs so it's better to give the user the full source in case of special requirements instead of allowing a function with +10 input parameters.
[text] RENAMED: struct `CharInfo` to `GlyphInfo`, actually that's the correct naming for the data contained. It contains the character glyph metrics and the glyph image; in the past it also contained rectangle within the font atlas but that data has been moved to `Font` struct directly, so, `GlyphInfo` is a more correct name.
[text] RENAMED: `CodepointToUtf8()` to `CodepointToUTF8()`, capitalization of UTF-8 is the correct form, it would also require de hyphen but it can be omitted in this case.
[text] RENAMED: `TextToUtf8()` to `TextCodepointsToUTF8` for consistency and more detail on the functionality.
[text] RENAMED: GetCodepoints() to LoadCodepoints(), now codepoint array data is loaded dynamically instead of reusing a limited static buffer.
[text] RENAMED: GetNextCodepoint() to GetCodepoint()
[models] ADDED: MagikaVoxel VOX models loading
[models] ADDED: GenMeshCone() (#1903)
[models] ADDED: GetModelBoundingBox()
[models] ADDED: DrawBillboardPro() (#1759) by @nobytesgiven
[models] ADDED: DrawCubeTextureRec() (#2001) by @tdgroot
[models] ADDED: DrawCylinderEx() and DrawCylinderWiresEx() (#2049) by @Horrowind
[models] REMOVED: DrawBillboardEx()
[models] RENAMED: MeshBoundingBox() to GetMeshBoundingBox()
[models] RENAMED: MeshTangents() to GenMeshTangents()
[models] RENAMED: MeshBinormals() to GenMeshBinormals()
[models] REVIEWED: GenMeshTangents() (#1877) by @630Studios
[models] REVIEWED: CheckCollisionBoxSphere() by @Crydsch
[models] REVIEWED: GetRayCollisionQuad() by @Crydsch
[models] REVIEWED: LoadGLTF(), fixed missing transformations and nonroot skinning by @MrDiver
[models] REVIEWED: LoadGLTF(), rewriten from scratch, removed animations support (broken)
[models] REVIEWED: Decouple DrawMesh() and DrawMeshInstanced() (#1958)
[models] REVIEWED: Support vertex color attribute for GLTF and IQM (#1790) by @object71
[models] REVIEWED: DrawBillboardPro() (#1941) by @GithubPrankster
[models] REDESIGNED: Major review of glTF loading functionality (#1849) by @object71
[audio] ADDED: SeekMusicStream() (#2006) by @GithubPrankster
[audio] REMOVED: GetAudioStreamBufferSizeDefault()
[audio] RENAMED: InitAudioStream() to LoadAudioStream()
[audio] RENAMED: CloseAudioStream() to UnloadAudioStream()
[audio] RENAMED: IsMusicPlaying() to IsMusicStreamPlaying()
[audio] REVIEWED: ExportWaveAsCode()
[audio] REDESIGNED: Use frameCount on audio instead of sampleCount
[utils] REVIEWED: exit() on LOG_FATAL instead of LOG_ERROR (#1796)
[examples] ADDED: core_custom_frame_control
[examples] ADDED: core_basic_screen_manager
[examples] ADDED: core_split_screen (#1806) by @JeffM2501
[examples] ADDED: core_smooth_pixelperfect (#1771) by @NotManyIdeasDev
[examples] ADDED: shaders_texture_outline (#1883) by @GoldenThumbs
[examples] ADDED: models_loading_vox (#1940) by @procfxgen
[examples] ADDED: rlgl_compute_shader by @TSnake41 (#2088)
[examples] REMOVED: models_material_pbr
[examples] REMOVED: models_gltf_animation
[examples] REVIEWED: core_3d_picking
[examples] REVIEWED: core_input_mouse
[examples] REVIEWED: core_vr_simulator, RenderTexture usage
[examples] REVIEWED: core_window_letterbox, RenderTexture usage
[examples] REVIEWED: shapes_basic_shapes
[examples] REVIEWED: shapes_logo_raylib_anim
[examples] REVIEWED: textures_to_image
[examples] REVIEWED: text_rectangle_bounds
[examples] REVIEWED: text_unicode
[examples] REVIEWED: text_draw_3d
[examples] REVIEWED: models_loading
[examples] REVIEWED: models_skybox (#1792) (#1778)
[examples] REVIEWED: models_mesh_picking
[examples] REVIEWED: models_yaw_pitch_roll
[examples] REVIEWED: models_rlgl_solar_system
[examples] REVIEWED: shaders_custom_uniform, RenderTexture usage
[examples] REVIEWED: shaders_eratosthenes, RenderTexture usage
[examples] REVIEWED: shaders_julia_set, RenderTexture usage
[examples] REVIEWED: shaders_postprocessing, RenderTexture usage
[examples] REVIEWED: shaders_basic_lighting, simplified (#1865)
[examples] REVIEWED: audio_raw_stream.c
[examples] REVIEWED: raudio_standalone
[examples] REVIEWED: raylib_opengl_interop
[examples] REVIEWED: rlgl_standalone.c
[examples] REVIEWED: Resources licenses
[examples] REVIEWED: models resources reorganization
[templates] REMOVED: Moved to a separate repo: https://github.com/raysan5/raylib-game-template
[build] ADDED: Zig build file (#2014) by @TommiSinivuo
[build] ADDED: Android VS2019 solution (#2013) by @Kronka
[build] REMOVED: VS2017 project, outdated
[build] RENAMED: All raylib modules prefixed with 'r' (core -> rcore)
[build] RENAMED: SUPPORT_MOUSE_CURSOR_NATIVE to SUPPORT_MOUSE_CURSOR_POINT
[build] REVIEWED: examples/examples_template.c
[build] REVIEWED: Makefile to latest Emscripten SDK r23
[build] REVIEWED: Makefile for latest Android NDK r32 LTS
[build] REVIEWED: raylib resource files
[build] Moved some extra raylib libraries to /extras/ directory
[*] UPDATED: Multiple bindings to latest version
[*] UPDATED: Most external libraries to latest versions (except GLFW)
[*] Multiple code improvements and fixes by multiple contributors!
-------------------------------------------------------------------------
Release: raylib 3.7 (26 April 2021)
-------------------------------------------------------------------------
KEY CHANGES:
- [rlgl] REDESIGNED: Greater abstraction level, some functionality moved to core module
- [rlgl] REVIEWED: Instancing and stereo rendering
- [core] REDESIGNED: VR simulator, fbo/shader exposed to user
- [utils] ADDED: File access callbacks system
- [models] ADDED: glTF animations support (#1551) by @object71
- [audio] ADDED: Music streaming support from memory (#1606) by @nezvers
- [*] RENAMED: enum types and enum values for consistency
Detailed changes:
[core] ADDED: LoadVrStereoConfig()
[core] ADDED: UnloadVrStereoConfig()
[core] ADDED: BeginVrStereoMode()
[core] ADDED: EndVrStereoMode()
[core] ADDED: GetCurrentMonitor() (#1485) by @object71
[core] ADDED: SetGamepadMappings() (#1506)
[core] RENAMED: struct Camera: camera.type to camera.projection
[core] RENAMED: LoadShaderCode() to LoadShaderFromMemory() (#1690)
[core] RENAMED: SetMatrixProjection() to rlSetMatrixProjection()
[core] RENAMED: SetMatrixModelview() to rlSetMatrixModelview()
[core] RENAMED: GetMatrixModelview() to rlGetMatrixModelview()
[core] RENAMED: GetMatrixProjection() to rlGetMatrixProjection()
[core] RENAMED: GetShaderDefault() to rlGetShaderDefault()
[core] RENAMED: GetTextureDefault() to rlGetTextureDefault()
[core] REMOVED: GetShapesTexture()
[core] REMOVED: GetShapesTextureRec()
[core] REMOVED: GetMouseCursor()
[core] REMOVED: SetTraceLogExit()
[core] REVIEWED: GetFileName() and GetDirectoryPath() (#1534) by @gilzoide
[core] REVIEWED: Wait() to support FreeBSD (#1618)
[core] REVIEWED: HighDPI support on macOS retina (#1510)
[core] REDESIGNED: GetFileExtension(), includes the .dot
[core] REDESIGNED: IsFileExtension(), includes the .dot
[core] REDESIGNED: Compresion API to use sdefl/sinfl libs
[rlgl] ADDED: SUPPORT_GL_DETAILS_INFO config flag
[rlgl] REMOVED: GenTexture*() functions (#721)
[rlgl] REVIEWED: rlLoadShaderDefault()
[rlgl] REDESIGNED: rlLoadExtensions(), more details exposed
[raymath] REVIEWED: QuaternionFromEuler() (#1651)
[raymath] REVIEWED: MatrixRotateZYX() (#1642)
[shapes] ADDED: DrawLineBezierQuad() (#1468) by @epsilon-phase
[shapes] ADDED: CheckCollisionLines()
[shapes] ADDED: CheckCollisionPointLine() by @mkupiec1
[shapes] REVIEWED: CheckCollisionPointTriangle() by @mkupiec1
[shapes] REDESIGNED: SetShapesTexture()
[shapes] REDESIGNED: DrawCircleSector(), to use float params
[shapes] REDESIGNED: DrawCircleSectorLines(), to use float params
[shapes] REDESIGNED: DrawRing(), to use float params
[shapes] REDESIGNED: DrawRingLines(), to use float params
[textures] ADDED: DrawTexturePoly() and example (#1677) by @chriscamacho
[textures] ADDED: UnloadImageColors() for allocs consistency
[textures] RENAMED: GetImageData() to LoadImageColors()
[textures] REVIEWED: ImageClearBackground() and ImageDrawRectangleRec() (#1487) by @JeffM2501
[textures] REVIEWED: DrawTexturePro() and DrawRectanglePro() transformations (#1632) by @ChrisDill
[text] REDESIGNED: DrawFPS()
[models] ADDED: UploadMesh() (#1529)
[models] ADDED: UpdateMeshBuffer()
[models] ADDED: DrawMesh()
[models] ADDED: DrawMeshInstanced()
[models] ADDED: UnloadModelAnimations() (#1648) by @object71
[models] REMOVED: DrawGizmo()
[models] REMOVED: LoadMeshes()
[models] REMOVED: MeshNormalsSmooth()
[models] REVIEWED: DrawLine3D() (#1643)
[audio] REVIEWED: Multichannel sound system (#1548)
[audio] REVIEWED: jar_xm library (#1701) by @jmorel33
[utils] ADDED: SetLoadFileDataCallback()
[utils] ADDED: SetSaveFileDataCallback()
[utils] ADDED: SetLoadFileTextCallback()
[utils] ADDED: SetSaveFileTextCallback()
[examples] ADDED: text_draw_3d (#1689) by @Demizdor
[examples] ADDED: textures_poly (#1677) by @chriscamacho
[examples] ADDED: models_gltf_model (#1551) by @object71
[examples] RENAMED: shaders_rlgl_mesh_instanced to shaders_mesh_intancing
[examples] REDESIGNED: shaders_rlgl_mesh_instanced by @moliad
[examples] REDESIGNED: core_vr_simulator
[examples] REDESIGNED: models_yaw_pitch_roll
[build] ADDED: Config flag: SUPPORT_STANDARD_FILEIO
[build] ADDED: Config flag: SUPPORT_WINMM_HIGHRES_TIMER (#1641)
[build] ADDED: Config flag: SUPPORT_GL_DETAILS_INFO
[build] ADDED: Examples projects to VS2019 solution
[build] REVIEWED: Makefile to support PLATFORM_RPI (#1580)
[build] REVIEWED: Multiple typecast warnings by @JeffM2501
[build] REDESIGNED: VS2019 project build paths
[build] REDESIGNED: CMake build system by @object71
[*] RENAMED: Several functions parameters for consistency
[*] UPDATED: Multiple bindings to latest version
[*] UPDATED: All external libraries to latest versions
[*] Multiple code improvements and fixes by multiple contributors!
-------------------------------------------------------------------------
Release: raylib 3.5 - 7th Anniversary Edition (25 December 2020)
-------------------------------------------------------------------------
KEY CHANGES:
- [core] ADDED: PLATFORM_DRM to support RPI4 and other devices (#1388) by @kernelkinetic
- [core] REDESIGNED: Window states management system through FLAGS
- [rlgl] ADDED: RenderBatch type and related functions to allow custom batching (internal only)
- [rlgl] REDESIGNED: Framebuffers API to support multiple attachment types (#721)
- [textures] REDESIGNED: Image*() functions, big performance improvements (software rendering)
- [*] REVIEWED: Multiple functions to replace file accesses by memory accesses
- [*] ADDED: GitHub Actions CI to support multiple raylib build configurations
Detailed changes:
[core] ADDED: SetWindowState() / ClearWindowState() -> New flags added!
[core] ADDED: IsWindowFocused()
[core] ADDED: GetWindowScaleDPI()
[core] ADDED: GetMonitorRefreshRate() (#1289) by @Shylie
[core] ADDED: IsCursorOnScreen() (#1262) by @ChrisDill
[core] ADDED: SetMouseCursor() and GetMouseCursor() for standard Desktop cursors (#1407) by @chances
[core] REMOVED: struct RenderTexture2D: depthTexture variable
[core] REMOVED: HideWindow() / UnhideWindow() -> Use SetWindowState()
[core] REMOVED: DecorateWindow() / UndecorateWindow() -> Use SetWindowState()
[core] RENAMED: GetExtension() to GetFileExtension()
[core] REVIEWED: Several structs to reduce size and padding
[core] REVIEWED: struct Texture maps to Texture2D and TextureCubemap
[core] REVIEWED: ToggleFullscreen() (#1287)
[core] REVIEWED: InitWindow(), support empty title for window (#1323)
[core] REVIEWED: RPI: Mouse movements are bound to the screen resolution (#1392) (#1410) by @kernelkinetic
[core] REVIEWED: GetPrevDirectoryPath() fixes on Unix-like systems (#1246) by @ivan-cx
[core] REPLACED: rgif.h by msf_gif.h for automatic gif recording
[core] REDESIGNED: GetMouseWheelMove() to return float movement for precise scrolling (#1397) by @Doy-lee
[core] REDESIGNED: GetKeyPressed(), and added GetCharPressed() (#1336)
[core] UWP rework with improvements (#1231) by @Rover656
[core] Gamepad axis bug fixes and improvement (#1228) by @mmalecot
[core] Updated joystick mappings with latest version of gamecontrollerdb (#1381) by @coderoth
[rlgl] Corrected issue with OpenGL 1.1 support
[rlgl] ADDED: rlDrawMeshInstanced() (#1318) by @seanpringle
[rlgl] ADDED: rlCheckErrors (#1321) by @seanpringle
[rlgl] ADDED: BLEND_SET blending mode (#1251) by @RandomErrorMessage
[rlgl] ADDED: rlSetLineWidth(), rlGetLineWidth(), rlEnableSmoothLines(), rlDisableSmoothLines() (#1457) by @JeffM2501
[rlgl] RENAMED: rlUnproject() to Vector3Unproject() [raymath]
[rlgl] REVIEWED: Replace rlglDraw() calls by DrawRenderBatch() internal calls
[rlgl] REVIEWED: GenTextureCubemap(), use rlgl functionality only
[rlgl] REVIEWED: rlFramebufferAttach() to support texture layers
[rlgl] REVIEWED: GenDrawCube() and GenDrawQuad()
[rlgl] REVIEWED: Issues with vertex batch overflow (#1223)
[rlgl] REVIEWED: rlUpdateTexture(), issue with offsets
[rlgl] REDESIGNED: GenTexture*() to use the new fbo API (#721)
[raymath] ADDED: Normalize() and Remap() functions (#1247) by @NoorWachid
[raymath] ADDED: Vector2Reflect() (#1400) by @daniel-junior-dube
[raymath] ADDED: Vector2LengthSqr() and Vector3LengthSqr() (#1248) by @ThePituLegend
[raymath] ADDED: Vector2MoveTowards() function (#1233) by @anatagawa
[raymath] REVIEWED: Some functions consistency (#1197) by @Not-Nik
[raymath] REVIEWED: QuaternionFromVector3ToVector3() (#1263) by @jvocaturo
[raymath] REVIEWED: MatrixLookAt(), optimized (#1442) by @RandomErrorMessage
[shapes] ADDED: CheckCollisionLines(), by @Elkantor
[text] Avoid [textures] functions dependencies
[text] ADDED: Config flag: SUPPORT_TEXT_MANIPULATION
[text] ADDED: LoadFontFromMemory() (TTF only) (#1327)
[text] ADDED: UnloadFontData()
[text] RENAMED: FormatText() -> TextFormat()
[text] REVIEWED: Font struct, added charsPadding (#1432)
[text] REVIEWED: TextJoin()
[text] REVIEWED: TextReplace() (#1172)
[text] REVIEWED: LoadBMFont() to load data from memory (#1232)
[text] REVIEWED: GenImageFontAtlas(), fixed offset (#1171)
[text] REDESIGNED: LoadFontData(), reviewed input parameters
[text] REDESIGNED: LoadFontDefault(), some code simplifications
[text] REDESIGNED: LoadFontFromImage(), avoid LoadImageEx()
[text] REDESIGNED: LoadFontData(), avoid GenImageColor(), ImageFormat()
[text] REDESIGNED: LoadBMFont(), avoid ImageCopy(), ImageFormat(), ImageAlphaMask()
[textures] Move Color functions from [core] to [textures] module
[textures] ADDED: ColorAlphaBlend()
[textures] ADDED: GetPixelColor()
[textures] ADDED: SetPixelColor()
[textures] ADDED: LoadImageFromMemory() (#1327)
[textures] ADDED: LoadImageAnim() to load animated sequence of images
[textures] ADDED: DrawTextureTiled() (#1291) - @Demizdor
[textures] ADDED: UpdateTextureRec()
[textures] ADDED: UnloadImageColors(), UnloadImagePalette(), UnloadWaveSamples()
[textures] REMOVED: Config flag: SUPPORT_IMAGE_DRAWING
[textures] REMOVED: LoadImageEx()
[textures] REMOVED: LoadImagePro()
[textures] REMOVED: GetImageDataNormalized(), not exposed in the API
[textures] RENAMED: ImageExtractPalette() to GetImagePalette()
[textures] RENAMED: Fade() to ColorAlpha(), added #define for compatibility
[textures] RENAMED: GetImageData() -> LoadImageColors()
[textures] RENAMED: GetImagePalette() -> LoadImagePalette()
[textures] RENAMED: GetWaveData() -> LoadWaveSamples()
[textures] REVIEWED: GetPixelDataSize() to consider compressed data properly
[textures] REVIEWED: GetTextureData(), allow retrieving 32bit float data
[textures] REVIEWED: ImageDrawText*() params order
[textures] REVIEWED: ColorAlphaBlend(), support tint color
[textures] REVIEWED: ColorAlphaBlend(), integers-version, optimized (#1218)
[textures] REVIEWED: ImageDraw(), consider negative source offset properly (#1283)
[textures] REVIEWED: ImageDraw(), optimizations test (#1218)
[textures] REVIEWED: ImageResizeCanvas(), optimization (#1218)
[textures] REVIEWED: ExportImage(), optimized
[textures] REVIEWED: ImageAlphaPremultiply(), optimization
[textures] REVIEWED: ImageAlphaClear(), minor optimization
[textures] REVIEWED: ImageToPOT(), renamed parameter
[textures] REVIEWED: ImageCrop() (#1218)
[textures] REVIEWED: ImageToPOT() (#1218)
[textures] REVIEWED: ImageAlphaCrop() (#1218)
[textures] REVIEWED: ExportImage(), optimized (#1218)
[textures] REDESIGNED: ImageCrop(), optimized (#1218)
[textures] REDESIGNED: ImageRotateCCW(), optimized (#1218)
[textures] REDESIGNED: ImageRotateCW(), optimized (#1218)
[textures] REDESIGNED: ImageFlipHorizontal(), optimized (#1218)
[textures] REDESIGNED: ImageFlipVertical(), optimized (#1218)
[textures] REDESIGNED: ImageResizeCanvas(), optimized (#1218)
[textures] REDESIGNED: ImageDrawPixel(), optimized
[textures] REDESIGNED: ImageDrawLine(), optimized
[textures] REDESIGNED: ImageDraw(), optimized (#1218)
[textures] REDESIGNED: ImageResize(), optimized (#1218)
[textures] REDESIGNED: ImageFromImage(), optimized (#1218)
[textures] REDESIGNED: ImageDraw(), optimization (#1218)
[textures] REDESIGNED: ImageAlphaClear(), optimized (#1218)
[textures] REDESIGNED: ExportImageAsCode() to use memory buffer (#1232)
[textures] REDESIGNED: ColorFromHSV()
[models] ADDED: DrawTriangle3D() and DrawTriangleStrip3D()
[models] ADDED: UnloadModelKeepMeshes()
[models] REVIEWED: LoadModel(), avoid loading texcoords and normals from model if not existent
[models] REVIEWED: GenMeshCubicmap(), added comments and simplification
[models] REVIEWED: GenMeshCubicmap(), fixed generated normals (#1244) by @GoldenThumbs
[models] REVIEWED: GenMeshPoly(), fixed buffer overflow (#1269) by @frithrah
[models] REVIEWED: LoadOBJ(): Allow for multiple materials in obj files (#1408) by @chriscamacho and @codifies
[models] REVIEWED: LoadIQM() materials loading (#1227) by @sikor666
[models] REVIEWED: LoadGLTF() to read from memory buffer
[models] REVIEWED: UpdateMesh(), fix extra memory allocated when updating color buffer (#1271) by @4yn
[models] REVIEWED: MeshNormalsSmooth() (#1317) by @seanpringle
[models] REVIEWED: DrawGrid() (#1417)
[models] REDESIGNED: ExportMesh() to use memory buffer (#1232)
[models] REDESIGNED: LoadIQM() and LoadModelAnimations() to use memory buffers
[audio] ADDED: LoadWaveFromMemory() (#1327)
[audio] REMOVED: SetMusicLoopCount()
[audio] REVIEWED: Several functions, sampleCount vs frameCount (#1423)
[audio] REVIEWED: SaveWAV() to use memory write insted of file
[audio] REVIEWED: LoadMusicStream(), support WAV music streaming (#1198)
[audio] REVIEWED: Support multiple WAV sampleSize for MusicStream (#1340)
[audio] REVIEWED: SetAudioBufferPitch()
[audio] REDESIGNED: Audio looping system
[audio] REDESIGNED: LoadSound(): Use memory loading (WAV, OGG, MP3, FLAC) (#1312)
[audio] REDESIGNED: ExportWaveAsCode() to use memory buffers
[utils] ADDED: MemAlloc() / MemFree() (#1440)
[utils] ADDED: UnloadFileData() / UnloadFileText()
[utils] REVIEWED: android_fopen() to support SDCard access
[utils] REDESIGNED: SaveFile*() functions to expose file access results (#1420)
[rmem] REVIEWED: MemPool and other allocators optimization (#1211) by @assyrianic
[examples] ADDED: core/core_window_flags
[examples] ADDED: core/core_quat_conversion by @chriscamacho and @codifies
[examples] ADDED: textures/textures_blend_modes (#1261) by @accidentalrebel
[examples] ADDED: textures/textures_draw_tiled (#1291) by @Demizdor
[examples] ADDED: shaders/shaders_hot_reloading (#1198)
[examples] ADDED: shaders/shaders_rlgl_mesh_instanced (#1318) by @seanpringle
[examples] ADDED: shaders/shaders_multi_sampler2d
[examples] ADDED: others/embedded_files_loading
[examples] REVIEWED: textures/textures_raw_data (#1286)
[examples] REVIEWED: textures/textures_sprite_explosion, replace resources
[examples] REVIEWED: textures/textures_particles_blending, replace resources
[examples] REVIEWED: textures/textures_image_processing, support mouse
[examples] REVIEWED: models/models_skybox to work on OpenGL ES 2.0
[examples] REVIEWED: audio/resources, use open license resources
[examples] REVIEWED: others/raudio_standalone.c
[build] ADDED: New config.h configuration options exposing multiple #define values
[build] REMOVED: ANGLE VS2017 template project
[build] REVIEWED: All MSVC compile warnings
[build] Updated Makefile for web (#1332) by @rfaile313
[build] Updated build pipelines to use latest emscripten and Android NDK
[build] Updated emscriptem build script to generate .a on WebAssembly
[build] Updated Android build for Linux, supporting ANDROID_NDK at compile time by @branlix3000
[build] Updated VSCode project template tasks
[build] Updated VS2017.UWP project template by @Rover656
[build] Updated Android build pipeline
[build] REMOVED: AppVeyor and Travis CI build systems
[*] Moved raysan5/raylib/games to independent repo: raysan5/raylib-games
[*] Replaced several examples resources with more open licensed alternatives
[*] Updated BINDINGS.md with NEW bindings and added raylib version binding!
[*] Updated all external libraries to latest versions
[*] Multiple code improvements and small fixes
-----------------------------------------------
Release: raylib 3.0 (01 April 2020)
-----------------------------------------------
KEY CHANGES:
- Global context states used on all modules.
- Custom memory allocators for all modules and dependencies.
- Centralized file access system and memory data loading.
- Structures reviewed to reduce size and always be used as pass-by-value.
- Tracelog messages completely reviewed and categorized.
- raudio module reviewed to accomodate new Music struct and new miniaudio.
- text module reviewed to improve fonts generation and text management functions.
- Multiple new examples added and categorized examples table.
- GitHub Actions CI implemented for Windows, Linux and macOS.
Detailed changes:
[build] ADDED: VS2017.ANGLE project, by @msmshazan
[build] ADDED: VS2017 project support for x64 platform configuration
[build] ADDED: Makefile for Android building on macOS, by @Yunoinsky
[build] ADDED: Makefile for Android building on Linux, by @pamarcos
[build] REMOVED: VS2015 project
[build] REVIEWED: VSCode project
[build] REVIEWED: Makefile build system
[build] REVIEWED: Android building, by @NimbusFox
[build] REVIEWED: Compilation with CLion IDE, by @Rover656
[build] REVIEWED: Generation of web examples, by @pamarcos
[build] REVIEWED: Makefiles path to 'shell.html', by @niorad
[build] REVIEWED: VS2017 64bit compilation issues, by @spec-chum
[build] REVIEWED: Multiple fixes on projects building, by @ChrisDill, @JuDelCo, @electronstudio
[core] ADDED: Support touch/mouse indistinctly
[core] ADDED: FLAG_WINDOW_ALWAYS_RUN to avoid pause on minimize
[core] ADDED: Config flag SUPPORT_HALFBUSY_WAIT_LOOP
[core] ADDED: RPI mouse cursor point support on native mode
[core] ADDED: GetWorldToScreen2D()- Get screen space position for a 2d camera world space position, by @arvyy
[core] ADDED: GetScreenToWorld2D() - Get world space position for a 2d camera screen space position, by @arvyy
[core] ADDED: GetWorldToScreenEx() - Get size position for a 3d world space position
[core] ADDED: DirectoryExists() - Check if a directory path exists
[core] ADDED: GetPrevDirectoryPath() - Get previous directory path for a given path
[core] ADDED: CompressData() - Compress data (DEFLATE algorythm)
[core] ADDED: DecompressData() - Decompress data (DEFLATE algorythm)
[core] ADDED: GetWindowPosition() - Get window position XY on monitor
[core] ADDED: LoadFileData() - Load file data as byte array (read)
[core] ADDED: SaveFileData() - Save data to file from byte array (write)
[core] ADDED: LoadFileText() - Load text data from file (read), returns a '\0' terminated string
[core] ADDED: SaveFileText() - Save text data to file (write), string must be '\0' terminated
[core] REMOVED: Show raylib logo at initialization
[core] REVIEWED: GetFileName(), security checks
[core] REVIEWED: LoadStorageValue(), by @danimartin82
[core] REVIEWED: SaveStorageValue(), by @danimartin82
[core] REVIEWED: IsMouseButtonReleased(), when press/release events come too fast, by @oswjk
[core] REVIEWED: SetWindowMonitor(), by @DropsOfSerenity
[core] REVIEWED: IsFileExtension() to be case-insensitive
[core] REVIEWED: IsFileExtension() when checking no-extension files
[core] REVIEWED: Default font scale filter for HighDPI mode
[core] REVIEWED: Touch input scaling for PLATFORM_WEB
[core] REVIEWED: RPI input system, by @DarkElvenAngel
[core] REVIEWED: RPI input threads issues
[core] REVIEWED: OpenGL extensions loading and freeing
[core] REVIEWED: GetDirectoryPath()
[core] REVIEWED: Camera2D behavior, by @arvyy
[core] REVIEWED: OpenGL ES 2.0 extensions check
[rlgl] ADDED: Flags to allow frustrum culling near/far distance configuration at compile time
[rlgl] ADDED: Flags to sllow MAX_BATCH_BUFFERING config at compile time
[rlgl] ADDED: GetMatrixProjection(), by @chriscamacho
[rlgl] ADDED: rlUpdateMeshAt() - Update vertex or index data on GPU, at index, by @brankoku
[rlgl] REVIEWED: Vertex padding not zeroed for quads, by @kawa-yoiko
[rlgl] REVIEWED: Read texture data as RGBA from FBO on GLES 2.0
[rlgl] REVIEWED: LoadShaderCode() for const correctness, by @heretique
[rlgl] REVIEWED: rlLoadTexture()
[rlgl] REVIEWED: rlReadTexturePixels()
[rlgl] REVIEWED: rlUpdateMesh() to supports updating indices, by @brankoku
[rlgl] REVIEWED: GenTextureCubemap(), renamed parameters for consistency
[rlgl] REVIEWED: HDR pixels loading
[raymath] ADDED: MatrixRotateXYZ(), by @chriscamacho
[raymath] RENAMED: Vector3Multiply() to Vector3Scale()
[camera] REVIEWED: Free camera pitch, by @chriscamacho
[camera] REVIEWED: Camera not working properly at z-align, by @Ushio
[shapes] ADDED: DrawTriangleStrip() - Draw a triangle strip defined by points
[shapes] ADDED: DrawEllipse() - Draw ellipse
[shapes] ADDED: DrawEllipseLines() - Draw ellipse outline
[shapes] ADDED: DrawPolyLines() - Draw a polygon outline of n sides
[shapes] REVIEWED: DrawPoly() shape rendering, by @AlexHCC
[textures] ADDED: LoadAnimatedGIF() - Load animated GIF file
[textures] ADDED: GetImageAlphaBorder() - Get image alpha border rectangle
[textures] ADDED: ImageFromImage() - Create an image from another image piece
[textures] ADDED: ImageClearBackground(), by @iamsouravgupta
[textures] ADDED: ImageDrawPixel(), by @iamsouravgupta
[textures] ADDED: ImageDrawCircle(), by @iamsouravgupta
[textures] ADDED: ImageDrawLineEx(), by @iamsouravgupta
[textures] ADDED: ImageDrawPixelV(), by @RobLoach
[textures] ADDED: ImageDrawCircleV(), by @RobLoach
[textures] ADDED: ImageDrawLineV(), by @RobLoach
[textures] ADDED: ImageDrawRectangleV(), by @RobLoach
[textures] ADDED: ImageDrawRectangleRec(), by @RobLoach
[textures] REVIEWED: ImageDrawPixel(), by @RobLoach
[textures] REVIEWED: ImageDrawLine(), by @RobLoach
[textures] REVIEWED: ImageDrawCircle(), by @RobLoach
[textures] REVIEWED: ImageDrawRectangle(), by @RobLoach
[textures] REVIEWED: ImageDraw(), now it supports color tint parameter
[textures] REVIEWED: ImageResizeCanvas()
[textures] REVIEWED: ImageCrop() with security checks
[textures] REVIEWED: ImageAlphaMask()
[textures] REVIEWED: ImageDrawRectangleLines()
[textures] REVIEWED: GetImageData()
[text] ADDED: TextCopy() - Copy one string to another, returns bytes copied
[text] ADDED: GetCodepoints() - Get all codepoints in a string
[text] ADDED: CodepointToUtf8() - Encode codepoint into utf8 text
[text] ADDED: DrawTextCodepoint() - Draw one character (codepoint)
[text] RENAMED: LoadDefaultFont() -> LoadFontDefault()
[text] RENAMED: TextCountCodepoints() -> GetCodepointsCount()
[text] REVIEWED: TextFormat(), to support caching, by @brankoku
[text] REVIEWED: LoadFontData(), generate empty image for space character
[text] REVIEWED: TextSplit()
[text] REVIEWED: TextToInteger()
[text] REVIEWED: GetNextCodepoint(), renamed parameters for clarity
[text] REVIEWED: GenImageFontAtlas(), improved atlas size computing
[text] REDESIGNED: struct Font, character rectangles have been moved out from CharInfo to Font
[text] REDESIGNED: struct CharInfo, now includes directly an Image of the glyph
[text] REDESIGNED: GenImageFontAtlas(), additional recs parameter added
[text] REDESIGNED: ImageTextEx(), to avoid font retrieval from GPU
[models] ADDED: Support rlPushMatrix() and rlPopMatrix() on mesh drawing
[models] ADDED: DrawPoint3D() - Draw a point in 3D space, actually a small line, by @ProfJski
[models] ADDED: Multi texture support for materials in GLTF format, by @Gamerfiend, @chriscamacho
[models] REVIEWED: LoadGLTF(), fixed memory leak, by @jubalh
[models] REVIEWED: LoadIQM(), support multiple animations loading, by @culacant
[models] REVIEWED: GetCollisionRayModel(), to avoid pointers
[models] REVIEWED: CheckCollisionRay*(), parameters renamed
[models] REVIEWED: UnloadMesh(), to avoid pointers
[models] REVIEWED: LoadModel(), memory initialization
[models] REVIEWED: UpdateModelAnimation(), added security checks
[models] REVIEWED: Multiple fixes on models loading, by @jubalh
[models] REVIEWED: Normals updated when using animated meshes, by @@las3rlars
[models] REVIEWED: Compilation when the SUPPORT_MESH_GENERATION not set, by @@Elkantor
[raudio] ADDED: Multi-channel audio playing, by @chriscamacho
[raudio] REMOVED: LoadWaveEx()
[raudio] RENAMED: IsAudioBufferProcessed() to IsAudioStreamProcessed()
[raudio] REVIEWED: Ensure .xm playback starts in the right place, by @illegalinstruction
[raudio] REVIEWED: Fix short non-looping sounds, by @jbosh
[raudio] REVIEWED: Modules playing time to full length
[raudio] REDESIGNED: Replaced Music pointer by struct
[raudio] REDESIGNED: Removed sampleLeft from Music struct
[examples] ADDED: core_scissor_test, by @ChrisDill
[examples] ADDED: core_2d_camera_platformer, by @arvyy
[examples] ADDED: textures_mouse_painting, by @ChrisDill
[examples] ADDED: models_waving_cubes, by @codecat
[examples] ADDED: models_solar_system, by @aldrinmartoq
[examples] ADDED: shaders_fog, by @chriscamacho
[examples] ADDED: shaders_texture_waves, by @Anata
[examples] ADDED: shaders_basic_lighting, by @chriscamacho
[examples] ADDED: shaders_simple_mask, by @chriscamacho
[examples] ADDED: audio_multichannel_sound, by @chriscamacho
[examples] ADDED: shaders_spotlight, by @chriscamacho
[examples] RENAMED: text_sprite_font > text_font_spritefont
[examples] RENAMED: text_ttf_loading > text_font_filters
[examples] RENAMED: text_bmfont_ttf > text_font_loading
[examples] REMOVED: models_obj_viewer
[examples] REMOVED: models_solar_system
[examples] REVIEWED: models_obj_loading > models_loading
[examples] REVIEWED: models_materials_pbr, shader issues
[examples] REVIEWED: core_window_letterbox, detailed explanation, by @jotac0
[examples] REVIEWED: core_window_letterbox, virtual mouse, by @anatagawa
[games] ADDED: GGJ2020 game - RE-PAIR
[*] Misc fixes and tweaks, by @yaram, @oraoto, @zatherz, @piecedigital, @Shylie
[*] Update ALL supported projects (Notepad++, VS2017)
[*] Update ALL external libraries to latest versions (29.Jan.2020)
[*] Update ALL examples and games
[*] Update BINDINGS list
-----------------------------------------------
Release: raylib 2.5 (May 2019)
-----------------------------------------------
KEY CHANGES:
- [core] Redesigned Gamepad mechanism, now common to all platforms and gamepads
- [core] HighDPI monitors support with automatic content scaling
- [rlgl] Complete module redesign to use one single internal buffer
- [rlgl] VR system redesign to allow custom device parameters and distortion shader
- [shapes] New drawing shapes available: CircleSector, Ring and RectangleRounded
- [text] New text management API (multiple functions)
- [text] Full Unicode support (utf8 text)
- [textures] Cubemap textures support
- [textures] Quad and N-Patch drawing
- [models] Skeletal model animation support
- [models] Support multiple meshes per model
- [models] Support glTF model loading
Detailed changes:
[build] REVIEWED: Default raylib and examples Makefile
[build] REVIEWED: Notepad++ NppExec scripts
[build] REVIEWED: VS2015 and VS2017 projects
[build] REVIEWED: Android APK build pipeline
[core] Converted most #defined values as enum values
[core] Complete redesign of RPI input system to use evdev events
[core] ADDED: IsWindowResized() - Check if window has been resized
[core] ADDED: IsWindowHidden() - Check if window is currently hidden
[core] ADDED: UnhideWindow() - Show the window
[core] ADDED: HideWindow() - Hide the window
[core] ADDED: GetWindowHandle() - Get native window handle
[core] ADDED: GetMonitorCount() - Get number of connected monitors
[core] ADDED: GetMonitorWidth() - Get primary monitor width
[core] ADDED: GetMonitorHeight() - Get primary monitor height
[core] ADDED: GetMonitorPhysicalWidth() - Get primary monitor physical width in millimetres
[core] ADDED: GetMonitorPhysicalHeight() - Get primary monitor physical height in millimetres
[core] ADDED: GetMonitorName() - Get the human-readable, UTF-8 encoded name of the primary monitor
[core] ADDED: GetClipboardText() - Get clipboard text content
[core] ADDED: SetClipboardText() - Set clipboard text content
[core] ADDED: ColorFromHSV() - Returns a Color from HSV values
[core] ADDED: FileExists() - Check if file exists
[core] ADDED: GetFileNameWithoutExt() - Get filename string without extension (memory should be freed)
[core] ADDED: GetDirectoryFiles() - Get filenames in a directory path (memory should be freed)
[core] ADDED: ClearDirectoryFiles() - Clear directory files paths buffers (free memory)
[core] ADDED: OpenURL() - Open URL with default system browser (if available)
[core] ADDED: SetMouseOffset() - Set mouse offset
[core] ADDED: SetMouseScale() - Set mouse scaling
[core] REMOVED: ShowLogo() - Activate raylib logo at startup (can be done with flags)
[shapes] ADDED: DrawCircleSector() - Draw a piece of a circle
[shapes] ADDED: DrawCircleSectorLines() - Draw circle sector outline
[shapes] ADDED: DrawRing() - Draw ring
[shapes] ADDED: DrawRingLines() - Draw ring outline
[shapes] ADDED: DrawRectangleRounded() - Draw rectangle with rounded edges
[shapes] ADDED: DrawRectangleRoundedLines() - Draw rectangle with rounded edges outline
[shapes] ADDED: SetShapesTexture() - Define default texture used to draw shapes
[textures] REVIEWED: ExportImage() - Reorder function parameters
[textures] REVIEWED: ImageDrawRectangle() - Remove unneeded parameter
[textures] ADDED: ExportImageAsCode() - Export image as code file defining an array of bytes
[textures] ADDED: LoadTextureCubemap() - Load cubemap from image, multiple image cubemap layouts supported
[textures] ADDED: ImageExtractPalette() - Extract color palette from image to maximum size (memory should be freed)
[textures] ADDED: ImageDrawRectangleLines() - Draw rectangle lines within an image
[textures] ADDED: DrawTextureQuad() - Draw texture quad with tiling and offset parameters
[textures] ADDED: DrawTextureNPatch() - Draws a texture (or part of it) that stretches or shrinks nicely
[models] REVIEWED: LoadMesh() -> LoadMeshes() - Support multiple meshes loading
[models] REVIEWED: LoadMaterial() -> LoadMaterials() - Support multiple materials loading
[models] REVIEWED: ExportMesh() - Reorder parameters
[models] ADDED: DrawCubeWiresV() - Draw cube wires (Vector version)
[models] ADDED: GenMeshPoly() - Generate polygonal mesh
[models] ADDED: SetMaterialTexture() - Set texture for a material map type (MAP_DIFFUSE, MAP_SPECULAR...)
[models] ADDED: SetModelMeshMaterial() - Set material for a mesh
[models] ADDED: LoadModelAnimations() - Load model animations from file
[models] ADDED: UpdateModelAnimation() - Update model animation pose
[models] ADDED: UnloadModelAnimation() - Unload animation data
[models] ADDED: IsModelAnimationValid() - Check model animation skeleton match
[rlgl] Improved internal batching mechanism (multibuffering support, triangle texcoords...)
[rlgl] REVIEWED: rlPushMatrix()/rlPopMatrix() - Now works like OpenGL 1.1
[rlgl] REVIEWED: SetShaderValue() - More generic, now requires uniform type
[rlgl] REMOVED: SetShaderValuei() - Can be acoomplished with new SetShaderValue()
[rlgl] ADDED: SetShaderValueV() - Set shader uniform value vector
[rlgl] ADDED: SetShaderValueTexture() - Set shader uniform value for texture
[rlgl] ADDED: BeginScissorMode() - Begin scissor mode (define screen area for following drawing)
[rlgl] ADDED: EndScissorMode() - End scissor mode
[rlgl] ADDED: SetVrConfiguration() - Set stereo rendering configuration parameters
[rlgl] REVIEWED: InitVrSimulator() - No input parameter required, use SetVrConfiguration()
[text] REVIEWED: LoadFontEx() - Reorder function parameters
[text] REVIEWED: LoadFontData() - Reorder function parameters
[text] REVIEWED: GenImageFontAtlas() - Reorder function parameters
[text] RENAMED: FormatText() -> TextFormat()
[text] RENAMED: SubText() -> TextSubtext()
[text] ADDED: LoadFontFromImage() - Load font from Image (XNA style)
[text] ADDED: DrawTextRec() - Draw text using font inside rectangle limits
[text] ADDED: DrawTextRecEx() - Draw text using font inside rectangle limits with support for text selection
[text] ADDED: TextIsEqual() - Check if two text string are equal
[text] ADDED: TextLength() - Get text length, checks for '\0' ending
[text] ADDED: TextReplace() - Replace text string (memory should be freed!)
[text] ADDED: TextInsert() - Insert text in a position (memory should be freed!)
[text] ADDED: TextJoin() - Join text strings with delimiter
[text] ADDED: TextSplit() - Split text into multiple strings
[text] ADDED: TextAppend() - Append text at specific position and move cursor!
[text] ADDED: TextFindIndex() - Find first text occurrence within a string
[text] ADDED: TextToUpper() - Get upper case version of provided string
[text] ADDED: TextToLower() - Get lower case version of provided string
[text] ADDED: TextToPascal() - Get Pascal case notation version of provided string
[text] ADDED: TextToInteger() - Get integer value from text (negative values not supported)
[raudio] ADDED: ExportWave() - Export wave data to file
[raudio] ADDED: ExportWaveAsCode() - Export wave sample data to code (.h)
[raudio] ADDED: IsAudioStreamPlaying() - Check if audio stream is playing
[raudio] ADDED: SetAudioStreamVolume() - Set volume for audio stream (1.0 is max level)
[raudio] ADDED: SetAudioStreamPitch() - Set pitch for audio stream (1.0 is base level)
[examples] Complete review of full examples collection, many additions
[examples] ADDED: core_custom_logging - Custom trace log system
[examples] ADDED: core_input_multitouch - Multitouch input example
[examples] ADDED: core_window_letterbox - Window adapted to screen
[examples] ADDED: core_loading_thread - Data loading in second thread
[examples] REVIEWED: core_input_gamepad - Adapted to new gamepad system
[examples] REVIEWED: core_vr_simulator - HMD device parameters and distortion shader should be provided
[examples] ADDED: core_window_scale_letterbox - Windows resizing and letterbox content
[examples] ADDED: shapes_rectangle_scaling_mouse - Scale a rectangle with mouse
[examples] ADDED: shapes_draw_circle_sector - Circle sector drawing
[examples] ADDED: shapes_draw_ring - Ring drawing
[examples] ADDED: shapes_draw_rectangle_rounded - Rounded rectangle drawing
[examples] ADDED: shapes_bouncing_ball - Ball bouncing in the screen
[examples] ADDED: shapes_collision_area - Collision detection and drawing
[examples] ADDED: shapes_following_eyes - Some maths on eyes and mouse
[examples] ADDED: shapes_easings_ball_anim - Ball animation
[examples] ADDED: shapes_easings_box_anim - Box animation
[examples] ADDED: shapes_easings_rectangle_array - Rectangles animation
[examples] REVIEWED: shapes_colors_palette - Reviewed color selection and text displaying
[examples] ADDED: textures_background_scrolling - Scrolling and parallaz background effect
[examples] ADDED: textures_image_npatch - Drawing N-Patch based boxes
[examples] ADDED: textures_sprite_button - Sprite button with sound
[examples] ADDED: textures_sprite_explosion - Sprite explosion with sound
[examples] ADDED: textures_bunnymark - Benchmarking test
[examples] ADDED: text_draw_inside_rectangle - Drawing text inside a delimited rectangle box
[examples] ADDED: text_unicode - Multiple languages text drawing
[examples] ADDED: text_rectangle_bound - Fit text inside a rectangle
[examples] REVIEWED: text_bmfont_ttf - Simplified example
[examples] ADDED: models_animation - Animated models loading and animation playing
[examples] ADDED: models_obj_viewer - Draw and drop models viewer
[examples] ADDED: models_rlgl_solar_system - Solar system simulation using rlgl functionality
[examples] ADDED: models_first_person_maze - 3D maze fps
[examples] ADDED: shaders_palette_switch - Switching color palette on shader
[examples] ADDED: shaders_raymarching - Raymarching shader
[examples] ADDED: shaders_texture_drawing - Texture drawing on GPU
[examples] ADDED: shaders_texture_waves - Texture waves on shader
[examples] ADDED: shaders_julia_set - Julia set fractals
[examples] ADDED: shaders_eratosthenes - Prime number visualization shader
[examples] REVIEWED: audio_raw_stream - Mostly rewritten
[games] ADDED: GGJ19 game - Cat vs Roomba
[*] Updated external libraries to latest version
[*] Multiple bugs corrected (check github issues)
-----------------------------------------------
Release: raylib 2.0 (July 2018)
-----------------------------------------------
KEY CHANGES:
- Removed external dependencies (GLFW3 and OpenAL)
- Complete redesign of audio module to use miniaudio library
- Support AppVeyor and Travis CI (continuous integration) building
- Reviewed raymath.h for better consistency and performance (inlining)
- Refactor all #define SUPPORT_* into a single config.h
- Support TCC compiler (32bit and 64bit)
Detailed changes:
[build] REMOVED: GitHub develop branch
[build] REMOVED: External dependencies GLFW and OpenAL
[build] ADDED: Android 64bit ARM support
[build] ADDED: FreeBSD, OpenBSD, NetBSD, Dragon Fly OS support
[build] ADDED: Universal Windows Platform (UWP) support
[build] ADDED: Wayland Linux desktop support
[build] ADDED: AppVeyor CI for automatic Windows builds
[build] ADDED: Travis CI for automatic Linux/macOS builds
[build] ADDED: rglfw (GLFW3 module) to avoid external dependency
[build] ADDED: VS2017 UWP project
[build] ADDED: Builder project template
[build] ADDED: Compiler memory sanitizer for better debug
[build] ADDED: CMake package target and CI auto-deploy tags
[build] ADDED: DEBUG library building support
[build] ADDED: Notepad++ NppExec scripts
[build] REVIEWED: VS2015 and VS2017 projects
[build] REVIEWED: Android APK build pipeline
[core] REVIEWED: Window creation hints to support transparent windows
[core] Unified InitWindow() between platforms
[core] Export Android main entry point
[core] RENAMED: Begin3dMode() to BeginMode3D()
[core] RENAMED: End3dMode() to EndMode3D()
[core] RENAMED: Begin2dMode() to BeginMode2D()
[core] RENAMED: End2dMode() to EndMode2D()
[core] RENAMED: struct Camera to Camera3D
[core] RENAMED: struct SpriteFont to Font -> plus all required functions!
[core] RENAMED: enum TextureFormat to PixelFormat
[core] REVIEWED: Rectangle params int to float
[core] REVIEWED: timing system for macOS
[core] REMOVED: ColorToFloat()
[core] ADDED: GetCurrentTime() on macOS
[core] ADDED: GetTime()
[core] ADDED: struct Vector4
[core] ADDED: SetTraceLog() to define trace log messages type
[core] ADDED: GetFileName() to get filename from path string
[core] ADDED: ColorToHSV()
[core] ADDED: ColorNormalize()
[core] ADDED: SetWindowSize() to scale Windows in runtime
[core] ADDED: SetMouseScale() to scale mouse input
[core] ADDED: key definitions - KEY_GRAVE, KEY_SLASH, KEY_BACKSLASH
[core] RENAMED: GetHexValue() to ColorToInt()
[core] REVIEWED: Fade()
[core] REVIEWED: InitWindow() to avoid void pointer (safety)
[core] Support camera 3d orthographic projection mode
[shapes] ADDED: DrawRectangleLinesEx()
[textures] Improved pixel formats support (32bit channels)
[textures] Improved textures support for OpenGL 2.1
[textures] REMOVED: DrawRectangleT() --> Added support to DrawRectangle()
[textures] ADDED: GetPixelDataSize(); pixel data size in bytes (image or texture)
[textures] ADDED: ImageAlphaClear() --> Clear alpha channel to desired color
[textures] ADDED: ImageAlphaCrop() --> Crop image depending on alpha value
[textures] ADDED: ImageAlphaPremultiply() --> Premultiply alpha channel
[textures] ADDED: ImageDrawRectangle()
[textures] ADDED: ImageMipmaps()
[textures] ADDED: GenImageColor()
[textures] ADDED: GetPixelDataSize()
[textures] ADDED: ImageRotateCW()
[textures] ADDED: ImageRotateCCW()
[textures] ADDED: ImageResizeCanvas()
[textures] ADDED: GetImageDataNormalized()
[textures] REVIEWED: ImageFormat() to use normalized data
[textures] REVIEWED: Manual mipmap generation
[textures] REVIEWED: LoadASTC()
[textures] REVIEWED: GenImagePerlinNoise()
[textures] REVIEWED: ImageTextEx() to support UTF8 basic characters
[textures] REVIEWED: GetTextureData() for RPI - requires some work
[textures] Added new example: text drawing on image
[text] Corrected issue with ttf font y-offset
[text] Support SDF font data generation
[text] ADDED: GenImageFontAtlas()
[text] ADDED: LoadFontData() to load data from TTF file
[text] REMOVED: LoadTTF() internal function
[text] REVIEWED: DrawTextEx() - avoid rendering SPACE character!
[text] RENAMED: GetDefaultFont() to GetFontDefault()
[rlgl] ADDED: rlCheckBufferLimit()
[rlgl] ADDED: LoadShaderCode()
[rlgl] ADDED: GetMatrixModelview()
[rlgl] ADDED: SetVrDistortionShader(Shader shader)
[rlgl] REVIEWED: rlLoadTexture() - added mipmaps support, improved compressed textures loading
[rlgl] REVIEWED: rlReadTexturePixels()
[models] Support 4 components mesh.tangent data
[models] Removed tangents generation from LoadOBJ()
[models] ADDED: MeshTangents()
[models] ADDED: MeshBinormals()
[models] ADDED: ExportMesh()
[models] ADDED: GetCollisionRayModel()
[models] RENAMED: CalculateBoundingBox() to MeshBoundingBox()
[models] REMOVED: GetCollisionRayMesh() - does not consider model transform
[models] REVIEWED: LoadMesh() - fallback to default cube mesh if loading fails
[audio] ADDED: Support for MP3 fileformat
[audio] ADDED: IsAudioStreamPlaying()
[audio] ADDED: SetAudioStreamVolume()
[audio] ADDED: SetAudioStreamPitch()
[utils] Corrected issue with SaveImageAs()
[utils] RENAMED: SaveImageAs() to ExportImage()
[utils] REMOVED: rres support - moved to external library (rres.h)
[shaders] REVIEWED: GLSL 120 shaders
[raymath] ADDED: Vector3RotateByQuaternion()
[raymath] REVIEWED: math usage to reduce temp variables
[raymath] REVIEWED: Avoid pointer-based parameters for API consistency
[physac] REVIEWED: physac.h timing system
[examples] Replaced dwarf model by brand new 3d assets: 3d medieval buildings
[examples] Assets cleaning and some replacements
[games] ADDED: GGJ18 game - transmission mission
[games] REVIEWED: Light my Ritual game - improved gameplay drawing
[*] Updated external libraries to latest version
[*] Multiple bugs corrected (check github issues)
-----------------------------------------------
Release: raylib 1.8.0 (Oct 2017)
-----------------------------------------------
NOTE:
In this release, multiple parts of the library have been reviewed (again) for consistency and simplification.
It exposes more than 30 new functions in comparison with previous version and it improves overall programming experience.
BIG CHANGES:
- New Image generation functions: Gradient, Checked, Noise, Cellular...
- New Mesh generation functions: Cube, Sphere, Cylinder, Torus, Knot...
- New Shaders and Materials systems to support PBR materials
- Custom Android APK build pipeline with simple Makefile
- Complete review of rlgl layer functionality
- Complete review of raymath functionality
detailed changes:
[rlgl] RENAMED: rlglLoadTexture() to rlLoadTexture()
[rlgl] RENAMED: rlglLoadRenderTexture() to rlLoadRenderTexture()
[rlgl] RENAMED: rlglUpdateTexture() to rlUpdateTexture()
[rlgl] RENAMED: rlglGenerateMipmaps() to rlGenerateMipmaps()
[rlgl] RENAMED: rlglReadScreenPixels() to rlReadScreenPixels()
[rlgl] RENAMED: rlglReadTexturePixels() to rlReadTexturePixels()
[rlgl] RENAMED: rlglLoadMesh() to rlLoadMesh()
[rlgl] RENAMED: rlglUpdateMesh() to rlUpdateMesh()
[rlgl] RENAMED: rlglDrawMesh() to rlDrawMesh()
[rlgl] RENAMED: rlglUnloadMesh() to rlUnloadMesh()
[rlgl] RENAMED: rlglUnproject() to rlUnproject()
[rlgl] RENAMED: LoadCompressedTexture() to LoadTextureCompressed()
[rlgl] RENAMED: GetDefaultTexture() to GetTextureDefault()
[rlgl] RENAMED: LoadDefaultShader() to LoadShaderDefault()
[rlgl] RENAMED: LoadDefaultShaderLocations() to SetShaderDefaultLocations()
[rlgl] RENAMED: UnloadDefaultShader() to UnLoadShaderDefault()
[rlgl] ADDED: rlGenMapCubemap(), Generate cubemap texture map from HDR texture
[rlgl] ADDED: rlGenMapIrradiance(), Generate irradiance texture map
[rlgl] ADDED: rlGenMapPrefilter(), Generate prefilter texture map
[rlgl] ADDED: rlGenMapBRDF(), Generate BRDF texture map
[rlgl] ADDED: GetVrDeviceInfo(), Get VR device information for some standard devices
[rlgl] REVIEWED: InitVrSimulator(), to accept device parameters as input
[core] ADDED: SetWindowTitle(), Set title for window (only PLATFORM_DESKTOP)
[core] ADDED: GetExtension(), Get file extension
[shapes] REMOVED: DrawRectangleGradient(), replaced by DrawRectangleGradientV() and DrawRectangleGradientH()
[shapes] ADDED: DrawRectangleGradientV(), Draw a vertical-gradient-filled rectangle
[shapes] ADDED: DrawRectangleGradientH(), Draw a horizontal-gradient-filled rectangle
[shapes] ADDED: DrawRectangleGradientEx(), Draw a gradient-filled rectangle with custom vertex colors
[shapes] ADDED: DrawRectangleT(), Draw rectangle using text character
[textures] ADDED: SaveImageAs(), Save image as PNG file
[textures] ADDED: GenImageGradientV(), Generate image: vertical gradient
[textures] ADDED: GenImageGradientH(), Generate image: horizontal gradient
[textures] ADDED: GenImageGradientRadial(), Generate image: radial gradient
[textures] ADDED: GenImageChecked(), Generate image: checked
[textures] ADDED: GenImageWhiteNoise(), Generate image: white noise
[textures] ADDED: GenImagePerlinNoise(), Generate image: perlin noise
[textures] ADDED: GenImageCellular(), Generate image: cellular algorithm. Bigger tileSize means bigger cells
[textures] ADDED: GenTextureCubemap(), Generate cubemap texture from HDR texture
[textures] ADDED: GenTextureIrradiance(), Generate irradiance texture using cubemap data
[textures] ADDED: GenTexturePrefilter(), Generate prefilter texture using cubemap data
[textures] ADDED: GenTextureBRDF(), Generate BRDF texture using cubemap data
[models] REMOVED: LoadMeshEx(), Mesh struct variables can be directly accessed
[models] REMOVED: UpdateMesh(), very ineficient
[models] REMOVED: LoadHeightmap(), use GenMeshHeightmap() and LoadModelFromMesh()
[models] REMOVED: LoadCubicmap(), use GenMeshCubicmap() and LoadModelFromMesh()
[models] RENAMED: LoadDefaultMaterial() to LoadMaterialDefault()
[models] ADDED: GenMeshPlane(), Generate plane mesh (with subdivisions)
[models] ADDED: GenMeshCube(), Generate cuboid mesh
[models] ADDED: GenMeshSphere(), Generate sphere mesh (standard sphere)
[models] ADDED: GenMeshHemiSphere(), Generate half-sphere mesh (no bottom cap)
[models] ADDED: GenMeshCylinder(), Generate cylinder mesh
[models] ADDED: GenMeshTorus(), Generate torus mesh
[models] ADDED: GenMeshKnot(), Generate trefoil knot mesh
[models] ADDED: GenMeshHeightmap(), Generate heightmap mesh from image data
[models] ADDED: GenMeshCubicmap(), Generate cubes-based map mesh from image data
[raymath] REVIEWED: full Matrix functionality to align with GLM in usage
[raymath] RENAMED: Vector3 functions for consistency: Vector*() renamed to Vector3*()
[build] Integrate Android APK building into examples Makefile
[build] Integrate Android APK building into templates Makefiles
[build] Improved Visual Studio 2015 project, folders, references...
[templates] Reviewed the full pack to support Android building
[examples] Reviewed full collection to adapt to raylib changes
[examples] [textures] ADDED: textures_image_generation
[examples] [models] ADDED: models_mesh_generation
[examples] [models] ADDED: models_material_pbr
[examples] [models] ADDED: models_skybox
[examples] [models] ADDED: models_yaw_pitch_roll
[examples] [others] REVIEWED: rlgl_standalone
[examples] [others] REVIEWED: audio_standalone
[github] Moved raylib webpage to own repo: github.com/raysan5/raylib.com
[games] Reviewed game: Koala Seasons
[*] Updated STB libraries to latest version
[*] Multiple bugs corrected (check github issues)
-----------------------------------------------
Release: raylib 1.7.0 (20 May 2017)
-----------------------------------------------
NOTE:
In this new raylib release, multiple parts of the library have been reviewed for consistency and simplification.
It exposes almost 300 functions, around 30 new functions in comparison with previous version and, again,
it sets a stepping stone towards raylib future.
BIG changes:
- More than 30 new functions added to the library, check list below.
- Support of configuration flags on every raylib module, to customize library build.
- Improved build system for all supported platforms with a unique Makefile to compile sources.
- Complete review of examples and sample games, added new sample material.
- Support automatic GIF recording of current window, just pressing Ctrl+F12
- Improved library consistency and organization in general.
other changes:
[core] Added function: SetWindowIcon(), to setup icon by code
[core] Added function: SetWindowMonitor(), to set current display monitor
[core] Added function: SetWindowMinSize(), to set minimum resize size
[core] Added function: TakeScreenshot(), made public to API (also launched internally with F12)
[core] Added function: GetDirectoryPath(), get directory for a given fileName (with path)
[core] Added function: GetWorkingDirectory(), get current working directory
[core] Added function: ChangeDirectory(), change working directory
[core] Added function: TraceLog(), made public to API
[core] Improved timing system to avoid busy wait loop on frame sync: Wait()
[core] Added support for gamepad on HTML5 platform
[core] Support mouse lock, useful for camera system
[core] Review functions description comments
[rlgl] Removed function: GetStandardShader(), removed internal standard shader
[rlgl] Removed function: CreateLight(), removed internal lighting system
[rlgl] Removed function: DestroyLight(), removed internal lighting system
[rlgl] Removed function: InitVrDevice(), removed VR device render, using simulator
[rlgl] Removed function: CloseVrDevice(), removed VR device render, using simulator
[rlgl] Removed function: IsVrDeviceReady(), removed VR device render, using simulator
[rlgl] Removed function: IsVrSimulator(), removed VR device render, using simulator
[rlgl] Added function: InitVrSimulator(), init VR simulator for selected device
[rlgl] Added function: CloseVrSimulator(), close VR simulator for current device
[rlgl] Added function: IsVrSimulatorReady(), detect if VR device is ready
[rlgl] Added function: BeginVrDrawing(), begin VR simulator stereo rendering
[rlgl] Added function: EndVrDrawing(), end VR simulator stereo rendering
[rlgl] Renamed function: ReadTextFile() to LoadText() and exposed to API
[rlgl] Removed internal lighting system and standard shader, moved to example
[rlgl] Removed Oculus Rift support, moved to oculus_rift example
[rlgl] Removed VR device support and replaced by VR simulator
[shapes] Added function: DrawLineEx(), draw line with QUADS, supports custom line thick
[shapes] Added function: DrawLineBezier(), draw a line using cubic-bezier curves in-out
[shapes] Added function: DrawRectanglePro(), draw a color-filled rectangle with pro parameters
[textures] Removed function: LoadImageFromRES(), redesigning custom RRES fileformat
[textures] Removed function: LoadTextureFromRES(), redesigning custom RRES fileformat