raylib 1.8 released!

Another raylib release is here: raylib 1.8.

Again, several modules of the library have been reviewed and some new functionality added. Main changes of this new release are:

  • Procedural image generation functions, a set of new functions have been added to generate gradients, checked, noise and cellular images from scratch. Image generation could be useful for certain textures or learning pourpouses.

  • Parametric mesh generation functions, create 3d meshes from scratch just defining a set of parameters, meshes like cube, sphere, cylinder, torus, knot and more can be very useful for prototyping or for lighting and texture testing.

  • PBR Materials support, a completely redesigned shaders and material system allows advance materials definition and usage, with fully customizable shaders. Some new functions have been added to generate the environment textures required for PBR shading and a new complete PBR material example is also provided for reference.

  • Custom Android APK build pipeline with simple Makefile. Actually, full code building mechanism based on plain Makefile has been completely reviewed and Android building has been added for sources and also for templates building into final APK package. This way, raylib Android building has been greatly simplified and integrated seamlessly into standard build scripts.

  • rlgl module has been completely reviewed and most of the functions renamed for consistency. This way, standalone usage of rlgl is promoted, with a complete example provided. rlgl offers a pseudo-OpenGL 1.1 immediate-mode programming-style layer, with backends to multiple OpenGL versions.

  • raymath library has been also reviewed to align with other advance math libraries like GLM. Matrix math has been improved and simplified, some new Quaternion functions have been added and Vector3 functions have been renamed all around the library for consistency with new Vector2 functionality.

  • As always, examples and templates have been reviewed and improved to work with new features; some new examples have been added and templates have been prepared for real multiplatform support including Android and HTML5.

For a detailed list of changes, check CHANGELOG.

Just enjoy learning with raylib 1.8!

Comments

  • Congratulations on the new release raysan5,
    with this changes this should be 2.0 release :smiley:

    btw
    gamefromscratch reported new release of raylib too,
    ( they did couple tutorials also , maybe dated now ... )

    http://www.gamefromscratch.com/post/2017/10/23/RayLib-18-Released.aspx

  • Hey dancho! Thank you very much! This was really a big update of the library! :smiley:

    Be sure that raylib 2.0 would be way bigger than that! :wink:

    Yeah, already saw GameFromScratch report and also a new video!!!

  • Hey Raysan5,
    small request if you dont mind...
    could you also build raylib.dll with visual studio and release it,
    I have some troubles building it with pellesC compiler.
    thank you in advance...
  • Hey dancho! I need to look into this, didn't tried building raylib.dll with Visual Studio...
  • edited November 3
    Ok Ray, no problem...
    The reason is following ,
    besides c I do also some of the assembler programming ,
    ( flat assembler to be precize ,
    http://flatassembler.net/ )
    and I am trying to remove dependency of the libgcc_s_dw2-1.dll ,
    so only raylib.dll and openal32.dll,

    for example this is how Core Window Example looks in the fasm:

    format PE console 5.0
    entry main
    include 'win32axp.inc'

    section '.code' code readable executable
    main:
    cinvoke InitWindow,[screenWidth],[screenHeight],title
    cinvoke SetTargetFPS,60

    goLoop:
    cinvoke WindowShouldClose
    cmp eax,1
    je goOut

    cinvoke BeginDrawing
    cinvoke ClearBackground,[rayWhite]
    cinvoke DrawText,text,190,200,20,[lightGray]
    cinvoke EndDrawing

    jmp goLoop
    goOut:
    cinvoke CloseWindow
    invoke ExitProcess,0


    section '.data' data readable writeable
    screenWidth dd 800
    screenHeight dd 450
    lightGray dd 255 shl 24 + 200 shl 16 + 200 shl 8 + 200
    rayWhite dd 255 shl 24 + 245 shl 16 + 245 shl 8 + 245
    title db 'Raylib - Core Window',0
    text db 'Congrats! You created your first window!',0


    section '.idata' import data readable
    library kernel32,'kernel32.dll',\
    raylib,'raylib.dll'

    include 'api\kernel32.inc'
    include 'api\raylib.inc'
    fun , isnt it ? :smiley:
  • edited November 3
    Just formatted your code snipped for better reading.

    Hey! It looks great! It's been long time not coding in assembler... since my electronic engineering days... :P

    Removing libgcc_s_dw2-1.dll dependency would be great, actually I thought with MinGW32 GCC 5.3.0 compiling it was not dependent any more...

    By the way, you probably also need glfw3.dll

    EDIT: flat assembler is very interesting! so, would it be possible to have raylib examples ported to it? would those examples support multiple platforms compilation? how is resources data (images, fonts, audio...) managed? should it be embedded as binary data?
  • Raysan5,
    if you open raylib.dll from release\libs\win32\mingw32 with some program for pe/coff files viewer( like popular but no more activily updated PEview ) you'll under SECTION.idata/import directory table see all dll's from which raylib imports some functions, and then under import name table there are 4 functions from libgcc_s_dw2-1.dll ( __divdi3, __moddi3, __udivdi3, __umoddi3 ),
    or more simple and faster way this example is crashing without libgcc_s_dw2-1.dll :smile:
    and openal32.dll from the same folder also have dependency with 3 functions...

    I'm always doing some small projects in c or asm simple to brush my skills :wink:
    and I am planning to do atleast examples from core folder, and then some (simple) game
    like flappy bird clone or breakout clone if rl dont mess me up...
    the biggest issue is to translate raylib.h to asm include file, all the structures etc...,
    there are tools for this but it is expected for user to control and rewrite if neccesary...

    there is a flat assembler for unix and linux systems and for for ARM architectures

    http://flatassembler.net/download.php

    but sadly I dont have any expirience with those versions...

    as for the resource and windows programming this will give you idea what to expect :
    http://flatassembler.net/docs.php?article=win32

    btw you embedded any data in fasm with the file directive simple like this

    file 'someTexture.png'

    and it is included as a array of bytes...
    but have no mistake this is core to the metal with few high level features ...
    there are others assembles that have more high level features like masm or his very powerfull clone uasm

    http://www.terraspace.co.uk/uasm.html
    http://masm32.com/board/index.php

  • edited November 3
    Hey dancho! Many thanks for the explanation! I didn't know about flatassembly and it's really very interesting! :)

    Just added raylib.dll built with MSVC (VS 2015), also added the project to VS2015 solution. https://github.com/raysan5/raylib/tree/develop/release/libs/win32/msvc

    Checking raylib.dll dependencies with dumpbin tool I get:

    C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\bin>dumpbin C:\GitHub\raylib\release\libs\win32\msvc\raylib.dll /DEPENDENTS
    Microsoft (R) COFF/PE Dumper Version 14.00.24215.1
    Copyright (C) Microsoft Corporation. All rights reserved.


    Dump of file C:\GitHub\raylib\project\vs2015\release\libs\win32\msvc\raylib.dll

    File Type: DLL

    Image has the following dependencies:

    KERNEL32.dll
    OpenAL32.dll
    VCRUNTIME140.dll
    api-ms-win-crt-runtime-l1-1-0.dll
    api-ms-win-crt-stdio-l1-1-0.dll
    api-ms-win-crt-heap-l1-1-0.dll
    api-ms-win-crt-string-l1-1-0.dll
    api-ms-win-crt-utility-l1-1-0.dll
    api-ms-win-crt-filesystem-l1-1-0.dll
    api-ms-win-crt-time-l1-1-0.dll
    api-ms-win-crt-math-l1-1-0.dll
    api-ms-win-crt-convert-l1-1-0.dll
    USER32.dll
    GDI32.dll
    SHELL32.dll

    Summary

    4000 .data
    1000 .gfids
    17000 .rdata
    5000 .reloc
    1000 .rsrc
    52000 .text
    1000 _RDATA
    It would be amazing to see some examples ported to flatassembly!!! :smiley:
  • raysan5,
    first thank you for your extra work on this matter,
    but this is another level of dependencies,
    that dll need vs14 runtime dll's to work,
    and what we need is dependency on msvcrt ( every winos since winxp have one of those installed )...

    could you please read this post on stackoverflow:

    https://stackoverflow.com/questions/35805113/visual-studio-2015-run-time-dependencies-or-how-to-get-rid-of-universal-crt

    thank you
  • ok, I see, I'll take a look on this soon, probably on Monday...
  • ok,
    I have managed to build raylib.dll vs kernel32.dll and glfw3.dll in pellesc ( it is multi-threaded C runtime library that doesnt require any extra dll's at the cost of the files size , really not an issue raylib.dll is 547.kb)
    but did not managed to build ( yet ) openal32.dll , things are messy in there :smile:
    so I can continue to work in fasm without dependency on libgcc_s_dw2-1.dll just without openal so no sound/music examples ( for now ) ...
  • Hey dancho! That's amazing! :smiley:

    It would be great to have a raylib guide to build it with PellesC! I'm a big fan of optimization and small file-sizes and packages, if raylib package could be reduced in some way, it would be great to study that possibility.

    About OpenAL Soft, it's a very big library and I've been looking for a replacement since the beggining of raylib... but not found one yet...

    Right now there is an open issue (https://github.com/raysan5/raylib/issues/377) with some build improvements proposed that you probably will find interesting.
  • edited November 4
    Just uploaded to develop branch new raylib.dll with minimal dependencies:
    C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\bin>dumpbin.exe C:\GitHub\raylib\release\libs\win32\msvc\raylib.dll /DEPENDENTS

    Microsoft (R) COFF/PE Dumper Version 14.00.24215.1
    Copyright (C) Microsoft Corporation. All rights reserved.

    Dump of file C:\GitHub\raylib\release\libs\win32\msvc\raylib.dll

    File Type: DLL

    Image has the following dependencies:

    KERNEL32.dll
    glfw3.dll
    OpenAL32.dll

    Summary

    4000 .data
    1000 .gfids
    23000 .rdata
    5000 .reloc
    1000 .rsrc
    68000 .text
    1000 _RDATA
  • just to be fair that raylib.dll is compiled without audio.c and stb_vorbis.c files :wink: ,
    still pellesc is great ide with full c99 and c11 suport ,poasm assembler , resource editor ,
    etc etc but not without some issues ( bugs ) , the most important is that Pelle Orinius ( the man behind this project ) is no longer actively developing it , last update was in 2015.
    but thx to the few users from pelles forum , pelles c compiler is still on the run...
    big thx goes to the Frankie and his port of the latest mssdk to pelles headers,
    and guys like TimoVJL who is really an expert in c programming ( pro level )...

    as a optimization topic , c compiler is ok , nothing special ( according to some experts ) but polink is a real hero :smile:
    it is also used by many assembler programmers as a main linker cos his ability to produce small exe...

    guid to build raylib.lib with pellesc is simple ,
    when you know what preprocessor symbols to define :smiley:
    and when you dont know , well dig thru all files and find what you need,
    it helps when there is a makefile , like one in the raylib's source folder,
    and when is main header nicely organised , like raylib.h,
    there I found that I have to define couple things,like
    PLATFORM_DESKTOP and GRAPHICS_API_OPENGL_33
    and thats it...

    but in my opinion such a small difference between file sizes today is not an issue,
    hard drives are so big it is not a problem for anyone,
    my problem is that I dont like Visual Studio , it is slow , big , it eats all my cpus resource , etc, I have to buy ssd to use it properly,
    last visual studio that I installed was 2008 version and it is great for my needs,
    the creator of stb headers still use visual studio 6 :smiley:
    pellesc is very very light on cpu and memory,it is fast, it has desent debugger ( well desent enough ) and it is free...

    yeah , openal is a big library , but I dont know any real replacement for it...
    we shall see...
  • raylib.dll from new develop branch doesnt have dependency but
    glfw3.dll and openal32.dll do have dependency on vc14 runtime dll's...
  • Hey dancho! Just working on that...

    Hopefully soon glfw3.dll and openal32.dll won't be required any more. Everything will be inside raylib.dll, no external dependencies.

    GLFW3 is being compiled together with raylib as an additional module and OpenAL Soft is being replaced by a simpler header-only audio library, included with raylib.

    That's the future for raylib, no external dependencies.
Sign In or Register to comment.