diff --git a/release/include/raylib.h b/release/include/raylib.h index 7d656ec86..392e0a24c 100644 --- a/release/include/raylib.h +++ b/release/include/raylib.h @@ -5,21 +5,22 @@ * A simple and easy-to-use library to learn videogames programming (www.raylib.com) * * FEATURES: -* - Library written in plain C code (C99) -* - Multiple platforms supported: Windows, Linux, Mac, Android, Raspberry Pi, HTML5. +* - Written in plain C code (C99) in PascalCase/camelCase notation +* - Multiple platforms support: Windows, Linux, Mac, Android, Raspberry Pi and HTML5 * - Hardware accelerated with OpenGL (1.1, 2.1, 3.3 or ES 2.0) * - Unique OpenGL abstraction layer (usable as standalone module): [rlgl] * - Powerful fonts module with SpriteFonts support (XNA bitmap fonts, AngelCode fonts, TTF) -* - Multiple textures support, including compressed formats and mipmaps generation -* - Basic 3d support for Shapes, Models, Billboards, Heightmaps and Cubicmaps +* - Outstanding texture formats support, including compressed formats (DXT, ETC, PVRT, ASTC) +* - Basic 3d support for Geometrics, Models, Billboards, Heightmaps and Cubicmaps +* - Flexible Materials system, supporting classic maps and PBR maps +* - Shaders support, including Model shaders and Postprocessing shaders * - Powerful math module for Vector2, Vector3, Matrix and Quaternion operations: [raymath] * - Audio loading and playing with streaming support and mixing channels: [audio] * - VR stereo rendering support with configurable HMD device parameters * - Minimal external dependencies (GLFW3, OpenGL, OpenAL) -* - Complete bindings for Lua, Go and Pascal +* - Complete bindings to LUA (raylib-lua) and Go (raylib-go) * * NOTES: -* 32bit Colors - Any defined Color is always RGBA (4 byte) * One custom font is loaded by default when InitWindow() [core] * If using OpenGL 3.3 or ES2, one default shader is loaded automatically (internally defined) [rlgl] * If using OpenGL 3.3 or ES2, several vertex buffers (VAO/VBO) are created to manage lines-triangles-quads @@ -31,12 +32,16 @@ * * OPTIONAL DEPENDENCIES: * stb_image (Sean Barret) for images loading (JPEG, PNG, BMP, TGA) [textures] +* stb_image_resize (Sean Barret) for image resizing algorythms [textures] * stb_image_write (Sean Barret) for image writting (PNG) [utils] * stb_truetype (Sean Barret) for ttf fonts loading [text] * stb_vorbis (Sean Barret) for ogg audio loading [audio] +* stb_perlin (Sean Barret) for Perlin noise image generation [textures] +* par_shapes (Philip Rideout) for parametric 3d shapes generation [models] * jar_xm (Joshua Reisenauer) for XM audio module loading [audio] * jar_mod (Joshua Reisenauer) for MOD audio module loading [audio] * dr_flac (David Reid) for FLAC audio file loading [audio] +* rgif (Charlie Tangora, Ramon Santamaria) for GIF recording [core] * tinfl for data decompression (DEFLATE algorithm) [rres] * * @@ -303,7 +308,7 @@ //---------------------------------------------------------------------------------- #ifndef __cplusplus // Boolean type - #if !defined(_STDBOOL_H) || !defined(__STDBOOL_H) // CLang uses second form + #ifndef bool typedef enum { false, true } bool; #endif #endif @@ -518,6 +523,20 @@ typedef struct RRESData { // RRES type (pointer to RRESData array) typedef struct RRESData *RRES; +// Head-Mounted-Display device parameters +typedef struct VrDeviceInfo { + int hResolution; // HMD horizontal resolution in pixels + int vResolution; // HMD vertical resolution in pixels + float hScreenSize; // HMD horizontal size in meters + float vScreenSize; // HMD vertical size in meters + float vScreenCenter; // HMD screen center in meters + float eyeToScreenDistance; // HMD distance between eye and display in meters + float lensSeparationDistance; // HMD lens separation distance in meters + float interpupillaryDistance; // HMD IPD (distance between pupils) in meters + float lensDistortionValues[4]; // HMD lens distortion constant parameters + float chromaAbCorrection[4]; // HMD chromatic aberration correction parameters +} VrDeviceInfo; + //---------------------------------------------------------------------------------- // Enumerators Definition //---------------------------------------------------------------------------------- @@ -660,13 +679,10 @@ typedef enum { HMD_DEFAULT_DEVICE = 0, HMD_OCULUS_RIFT_DK2, HMD_OCULUS_RIFT_CV1, + HMD_OCULUS_GO, HMD_VALVE_HTC_VIVE, - HMD_SAMSUNG_GEAR_VR, - HMD_GOOGLE_CARDBOARD, - HMD_SONY_PLAYSTATION_VR, - HMD_RAZER_OSVR, - HMD_FOVE_VR, -} VrDevice; + HMD_SONY_PSVR +} VrDeviceType; // RRESData type typedef enum { @@ -1078,7 +1094,8 @@ RLAPI void BeginBlendMode(int mode); // Beg RLAPI void EndBlendMode(void); // End blending mode (reset to default: alpha blending) // VR control functions -RLAPI void InitVrSimulator(int vrDevice); // Init VR simulator for selected device +VrDeviceInfo GetVrDeviceInfo(int vrDeviceType); // Get VR device information for some standard devices +void InitVrSimulator(VrDeviceInfo info); // Init VR simulator for selected device parameters RLAPI void CloseVrSimulator(void); // Close VR simulator for current device RLAPI bool IsVrSimulatorReady(void); // Detect if VR simulator is ready RLAPI void UpdateVrTracking(Camera *camera); // Update VR tracking (position and orientation) and camera diff --git a/release/libs/android/armeabi-v7a/libraylib.a b/release/libs/android/armeabi-v7a/libraylib.a index 3406efc6c..4802cda0b 100644 Binary files a/release/libs/android/armeabi-v7a/libraylib.a and b/release/libs/android/armeabi-v7a/libraylib.a differ diff --git a/release/libs/android/armeabi-v7a/libraylib.so b/release/libs/android/armeabi-v7a/libraylib.so index a9cbca411..d90a30c53 100644 Binary files a/release/libs/android/armeabi-v7a/libraylib.so and b/release/libs/android/armeabi-v7a/libraylib.so differ diff --git a/release/libs/html5/libraylib.bc b/release/libs/html5/libraylib.bc index 2021d0deb..a92e7d17c 100644 Binary files a/release/libs/html5/libraylib.bc and b/release/libs/html5/libraylib.bc differ diff --git a/release/libs/win32/mingw32/libraylib.a b/release/libs/win32/mingw32/libraylib.a index a89aa94dd..da618b7b3 100644 Binary files a/release/libs/win32/mingw32/libraylib.a and b/release/libs/win32/mingw32/libraylib.a differ diff --git a/release/libs/win32/mingw32/libraylibdll.a b/release/libs/win32/mingw32/libraylibdll.a index 09b7f008d..7d910eeb0 100644 Binary files a/release/libs/win32/mingw32/libraylibdll.a and b/release/libs/win32/mingw32/libraylibdll.a differ diff --git a/release/libs/win32/mingw32/raylib.dll b/release/libs/win32/mingw32/raylib.dll index d7a6ebbbf..c53876547 100644 Binary files a/release/libs/win32/mingw32/raylib.dll and b/release/libs/win32/mingw32/raylib.dll differ diff --git a/src/Makefile b/src/Makefile index 3a903cb67..1da4557d3 100644 --- a/src/Makefile +++ b/src/Makefile @@ -46,7 +46,7 @@ RAYLIB_PATH ?= .. # Library type used for raylib and OpenAL Soft: STATIC (.a) or SHARED (.so/.dll) # NOTE: OpenAL Soft library should be provided in the selected form -RAYLIB_LIBTYPE ?= STATIC +RAYLIB_LIBTYPE ?= SHARED OPENAL_LIBTYPE ?= STATIC # On PLATFORM_WEB force OpenAL Soft shared library @@ -85,14 +85,25 @@ endif ifeq ($(PLATFORM),PLATFORM_WEB) # Emscripten required variables EMSDK_PATH = C:/emsdk - EMSCRIPTEN_VERSION = 1.37.9 - CLANG_VERSION=e1.37.9_64bit + EMSCRIPTEN_VERSION = 1.37.21 + CLANG_VERSION=e1.37.21_64bit PYTHON_VERSION=2.7.5.3_64bit NODE_VERSION=4.1.1_64bit export PATH=$(EMSDK_PATH);$(EMSDK_PATH)\clang\$(CLANG_VERSION);$(EMSDK_PATH)\node\$(NODE_VERSION)\bin;$(EMSDK_PATH)\python\$(PYTHON_VERSION);$(EMSDK_PATH)\emscripten\$(EMSCRIPTEN_VERSION);C:\raylib\MinGW\bin:$$(PATH) EMSCRIPTEN=$(EMSDK_PATH)\emscripten\$(EMSCRIPTEN_VERSION) endif +ifeq ($(PLATFORM),PLATFORM_ANDROID) + # Android required path variables + ANDROID_NDK = C:/android-ndk + ANDROID_TOOLCHAIN = C:/android_toolchain_arm_api16 + + # Android architecture: ARM or ARM64 + ANDROID_ARCH ?= ARM +endif + +RAYLIB_RELEASE_PATH ?= $(RAYLIB_PATH)/release/libs + # Define output directory for compiled library ifeq ($(PLATFORM),PLATFORM_DESKTOP) ifeq ($(PLATFORM_OS),WINDOWS) @@ -120,15 +131,6 @@ ifeq ($(PLATFORM),PLATFORM_ANDROID) endif endif -ifeq ($(PLATFORM),PLATFORM_ANDROID) - # Android required path variables - ANDROID_NDK = C:/android-ndk - ANDROID_TOOLCHAIN = C:/android_toolchain_arm_api16 - - # Android architecture: ARM or ARM64 - ANDROID_ARCH ?= ARM -endif - # Define raylib graphics api depending on selected platform ifeq ($(PLATFORM),PLATFORM_DESKTOP) # By default use OpenGL 3.3 on desktop platforms @@ -304,8 +306,9 @@ else ifeq ($(RAYLIB_LIBTYPE),SHARED) # NOTE: If using OpenAL Soft as static library, all its dependencies must be also linked in the shared library ifeq ($(PLATFORM_OS),WINDOWS) - $(CC) -shared -o $(RAYLIB_RELEASE_PATH)/raylib.dll $(OBJS) $(ALLIBS) -Lexternal/glfw3/lib/win32 -Lexternal/openal_soft/lib/win32 -lglfw3 -lgdi32 -Wl,--out-implib,$(RAYLIB_RELEASE_PATH)/libraylibdll.a + $(CC) -shared -o $(RAYLIB_RELEASE_PATH)/raylib.dll $(OBJS) -L$(RAYLIB_RELEASE_PATH) -lglfw3 -lgdi32 -lopenal32 -lwinmm -Wl,--out-implib,$(RAYLIB_RELEASE_PATH)/libraylibdll.a @echo "raylib dynamic library (raylib.dll) and import library (libraylibdll.a) generated!" + @echo "expected OpenAL Soft static library linking" endif ifeq ($(PLATFORM_OS),LINUX) # Compile raylib to shared library version for GNU/Linux. @@ -324,6 +327,7 @@ else endif else # Compile raylib static library. + @echo raylib library release path is $(RAYLIB_RELEASE_PATH) $(AR) rcs $(RAYLIB_RELEASE_PATH)/libraylib.a $(OBJS) @echo "raylib static library generated (libraylib.a)!" ifeq ($(OPENAL_LIBTYPE),STATIC)