Merge pull request #458 from raysan5/develop
Integrate develop branch into master
This commit is contained in:
commit
d50e291e86
314 changed files with 66728 additions and 21549 deletions
25
.gitignore
vendored
25
.gitignore
vendored
|
|
@ -83,20 +83,20 @@ xcschememanagement.plist
|
||||||
xcuserdata/
|
xcuserdata/
|
||||||
DerivedData/
|
DerivedData/
|
||||||
|
|
||||||
# external libraries DLLs
|
|
||||||
!src/external/glfw3/lib/win32/glfw3.dll
|
|
||||||
!src/external/openal_soft/lib/win32/OpenAL32.dll
|
|
||||||
|
|
||||||
# Visual Studio project
|
# Visual Studio project
|
||||||
project/vs2015/*.db
|
project/vs2015/*.db
|
||||||
project/vs2015/*.opendb
|
project/vs2015/*.opendb
|
||||||
|
project/vs2015.UWP/packages
|
||||||
|
project/vs2015.UWP/*.db
|
||||||
!project/vs2015/raylib.sln
|
!project/vs2015/raylib.sln
|
||||||
!project/vs2015/raylib/*.vcxproj
|
!project/vs2015/raylib/*.vcxproj
|
||||||
!project/vs2015/examples/*.vcxproj
|
!project/vs2015/examples/*.vcxproj
|
||||||
!project/vs2015/external/glfw3/lib/win32/glfw3.dll
|
!project/vs2017/raylib.sln
|
||||||
!project/vs2015/external/openal_soft/lib/win32/OpenAL32.dll
|
!project/vs2017/raylib/*.vcxproj
|
||||||
!project/vs2015/external/openal_soft/lib/win64/OpenAL32.dll
|
!project/vs2017/examples/*.vcxproj
|
||||||
!project/vs2015/external/lua/lib/win32/lua53.dll
|
!project/vs2015.UWP/raylib/*.vcxproj
|
||||||
|
!project/vs2015.UWP/*.sln
|
||||||
|
!project/vs2015.UWP/raylib.App.UWP/*.vcxproj
|
||||||
|
|
||||||
# Web examples
|
# Web examples
|
||||||
docs/examples/web/*.html
|
docs/examples/web/*.html
|
||||||
|
|
@ -111,15 +111,11 @@ docs/examples/web/*/*.html
|
||||||
!docs/examples/web/shaders/loader.html
|
!docs/examples/web/shaders/loader.html
|
||||||
!docs/examples/web/models/loader.html
|
!docs/examples/web/models/loader.html
|
||||||
|
|
||||||
# Meson build system
|
|
||||||
builddir/
|
|
||||||
|
|
||||||
# CMake stuff
|
# CMake stuff
|
||||||
CMakeCache.txt
|
CMakeCache.txt
|
||||||
CMakeFiles
|
CMakeFiles
|
||||||
CMakeScripts
|
CMakeScripts
|
||||||
Testing
|
Testing
|
||||||
Makefile
|
|
||||||
cmake_install.cmake
|
cmake_install.cmake
|
||||||
install_manifest.txt
|
install_manifest.txt
|
||||||
compile_commands.json
|
compile_commands.json
|
||||||
|
|
@ -133,3 +129,8 @@ build
|
||||||
|
|
||||||
# Ignore Android generated files and folders
|
# Ignore Android generated files and folders
|
||||||
templates/android_project/output
|
templates/android_project/output
|
||||||
|
|
||||||
|
# Ignore GNU global tags
|
||||||
|
GPATH
|
||||||
|
GRTAGS
|
||||||
|
GTAGS
|
||||||
|
|
|
||||||
74
.travis.yml
74
.travis.yml
|
|
@ -1,50 +1,62 @@
|
||||||
language: c
|
language: c
|
||||||
sudo: required
|
|
||||||
dist: trusty
|
dist: trusty
|
||||||
|
|
||||||
git:
|
git:
|
||||||
depth: 3
|
depth: 3
|
||||||
|
|
||||||
os:
|
# TODO we could use a 32 bit Docker container for running true 32-bit tests
|
||||||
- osx
|
# services: - docker
|
||||||
- linux
|
|
||||||
|
|
||||||
env:
|
matrix:
|
||||||
global:
|
include:
|
||||||
- VERBOSE=1
|
- os: linux
|
||||||
matrix:
|
env: ARCH=i386
|
||||||
- CFLAGS=-m64
|
sudo: required
|
||||||
- CFLAGS=-m32
|
- os: linux
|
||||||
|
env: ARCH=amd64 GLFW=SYSTEM
|
||||||
|
sudo: required
|
||||||
|
- os: osx
|
||||||
|
env: ARCH=universal
|
||||||
|
|
||||||
before_script:
|
before_script:
|
||||||
- export CFLAGS="-std=gnu99 $CFLAGS"
|
|
||||||
|
|
||||||
before_install:
|
before_install:
|
||||||
- if [ "$TRAVIS_OS_NAME" == "linux" ]; then
|
- if [ "$TRAVIS_OS_NAME" == "linux" ]; then
|
||||||
sudo apt-get install -y gcc-multilib
|
sudo apt-get install -y gcc-multilib
|
||||||
libopenal-dev
|
libasound2-dev:$ARCH
|
||||||
libxcursor-dev libxinerama-dev
|
libxcursor-dev:$ARCH libxinerama-dev:$ARCH mesa-common-dev:$ARCH
|
||||||
mesa-common-dev libx11-dev libxrandr-dev libxi-dev xorg-dev libgl1-mesa-dev libglu1-mesa-dev libglew-dev;
|
libx11-dev:$ARCH libxrandr-dev:$ARCH libxi-dev:$ARCH
|
||||||
wget 'https://github.com/a3f/GLFW-3.2.1-Debian-binary-package/releases/download/v3.2.1/GLFW-3.2.1-Linux.deb' && sudo dpkg -i GLFW-3.2.1-Linux.deb;
|
libgl1-mesa-dev:$ARCH libglu1-mesa-dev:$ARCH;
|
||||||
|
export RAYLIB_PACKAGE_SUFFIX="-Linux-$ARCH";
|
||||||
|
if [ "$ARCH" == "i386" ]; then export CFLAGS="-m32"; fi;
|
||||||
|
if [ "$ARCH" == "amd64" ]; then export CFLAGS="-m64"; fi;
|
||||||
|
if [ "$GLFW" == "SYSTEM" ]; then
|
||||||
|
wget 'http://ftp.de.debian.org/debian/pool/main/g/glfw3/libglfw3_3.2.1-1_amd64.deb';
|
||||||
|
wget 'http://ftp.de.debian.org/debian/pool/main/g/glfw3/libglfw3-dev_3.2.1-1_amd64.deb';
|
||||||
|
sudo dpkg -i libglfw3_3.2.1-1_amd64.deb libglfw3-dev_3.2.1-1_amd64.deb;
|
||||||
|
fi;
|
||||||
|
fi
|
||||||
|
- if [ "$TRAVIS_OS_NAME" == "osx" ]; then
|
||||||
|
export RAYLIB_PACKAGE_SUFFIX="-macOS";
|
||||||
|
if [ "$GLFW" == "SYSTEM" ]; then brew update; brew install glfw; fi;
|
||||||
fi
|
fi
|
||||||
- if [ "$TRAVIS_OS_NAME" == "osx" ]; then brew update; brew install glfw; fi
|
|
||||||
- "$CC --version"
|
- "$CC --version"
|
||||||
|
|
||||||
script:
|
script:
|
||||||
- mkdir build
|
- mkdir build
|
||||||
- cd build
|
- cd build
|
||||||
- cmake -DBUILD_EXAMPLES=OFF -DBUILD_GAMES=OFF ..
|
- cmake -DMACOS_FATLIB=ON -DSTATIC_RAYLIB=ON -DSHARED_RAYLIB=ON -DBUILD_EXAMPLES=ON -DBUILD_GAMES=ON -DUSE_EXTERNAL_GLFW=IF_POSSIBLE ..
|
||||||
- make
|
- make VERBOSE=1
|
||||||
# - make package
|
- make package
|
||||||
# - sudo make install
|
|
||||||
#
|
deploy:
|
||||||
#deploy:
|
provider: releases
|
||||||
# provider: releases
|
api_key:
|
||||||
# api_key:
|
secure: LvqUIAN/3dJul+Ra2iK3tSaNG5IwsNMmGIwVMy0DK5IBCxiQPBc9pWGiE30RTBPt6Z+N4BhMEE8DtUl+vnISlMoHWNIIhF2zwC66hs/F7zY7qEITMRSmfiLcqxQysknFOnJB06CATgXcFqlEo9j+t4abrG/f3qcb92J4O2uNz336Au2myTx93Q5MxbyA7KiUuEutFnb2dWiPCY4d+sGeXEfsiD2R7aj/8MaWOkoGdZVrTkI9juMgvpImkjQBArvqdjUMeT3MsRrwgOIq5v2GFV9dOl8k1WzPeT8B2JHh00ed/o1/wuFq/cLLOxtYo2+Pv3+xatOrlexoX0WkDm7C9/L1W5U4rLexU3CQ9mMBmHPnp6k/WXZ5QXEE4uUF0+LpN3XlIXzFpdZmZiVV8VLxg2WvyncMmivYiu7/MTkyfZxyKkzwl7sZZslzHA9kOGedGaN7b7/2B77OFHoQK8lKfdFml7jJnarh+89nenNZYMab0E8qkOJOyb2bYlDTa0/2nyxGiyymYgq6YHLNrDbhqB/1LzdgzjMliQ8ri5q9Ux2vjfcqOzhfAmcwFwnY/D6yXJWYi0DWpHZdpKl3du6dYDrypW91/yDWbwiJ/YhrE7ZunzrcB6GH/QkbuzWxdCth39rQAHih8DG01co/K3Gvi4yGjvIH5tFUpyEolMnpMiA=
|
||||||
# secure: XXX
|
file_glob: true
|
||||||
# file_glob: true
|
file: raylib-*.tar.gz
|
||||||
# file: raylib-*.tar.gz
|
skip_cleanup: true
|
||||||
# skip_cleanup: true
|
on:
|
||||||
# on:
|
repo: raysan5/raylib
|
||||||
# branch: master
|
branch: develop
|
||||||
# tags: true
|
tags: true
|
||||||
|
|
|
||||||
19
CMakeLists.txt
Normal file → Executable file
19
CMakeLists.txt
Normal file → Executable file
|
|
@ -4,6 +4,25 @@ cmake_minimum_required(VERSION 3.0)
|
||||||
set(BUILD_EXAMPLES ON CACHE BOOL "Build the examples.")
|
set(BUILD_EXAMPLES ON CACHE BOOL "Build the examples.")
|
||||||
set(BUILD_GAMES ON CACHE BOOL "Build the example games.")
|
set(BUILD_GAMES ON CACHE BOOL "Build the example games.")
|
||||||
|
|
||||||
|
if(CMAKE_VERSION VERSION_LESS "3.1")
|
||||||
|
if(CMAKE_C_COMPILER_ID STREQUAL "GNU")
|
||||||
|
set(CMAKE_C_FLAGS "-std=gnu99 ${CMAKE_C_FLAGS}")
|
||||||
|
endif()
|
||||||
|
else()
|
||||||
|
set (CMAKE_C_STANDARD 99)
|
||||||
|
endif()
|
||||||
|
include(CheckCCompilerFlag)
|
||||||
|
foreach(option -Werror=pointer-arith;-Werror=implicit-function-declaration)
|
||||||
|
CHECK_C_COMPILER_FLAG("${option}" COMPILER_HAS_THOSE_TOGGLES)
|
||||||
|
set(outcome "Failed")
|
||||||
|
if(COMPILER_HAS_THOSE_TOGGLES)
|
||||||
|
set(CMAKE_C_FLAGS "${option} ${CMAKE_C_FLAGS}")
|
||||||
|
set(outcome "works")
|
||||||
|
endif()
|
||||||
|
message(STATUS "Testing if ${option} can be used -- ${outcome}")
|
||||||
|
endforeach()
|
||||||
|
|
||||||
|
|
||||||
add_subdirectory(src release)
|
add_subdirectory(src release)
|
||||||
|
|
||||||
if (${BUILD_EXAMPLES})
|
if (${BUILD_EXAMPLES})
|
||||||
|
|
|
||||||
142
CONTRIBUTING.md
Normal file
142
CONTRIBUTING.md
Normal file
|
|
@ -0,0 +1,142 @@
|
||||||
|
## Contributing to raylib
|
||||||
|
|
||||||
|
Hello contributors! Welcome to raylib!
|
||||||
|
|
||||||
|
This document contains a set of guidelines to contribute to the project. These are mostly guidelines, not rules.
|
||||||
|
Use your best judgement, and feel free to propose changes to this document in a pull-request.
|
||||||
|
|
||||||
|
### raylib philosophy
|
||||||
|
|
||||||
|
- raylib is a tool to LEARN videogames programming, every single function in raylib should be a tutorial on itself.
|
||||||
|
- raylib is SIMPLE and EASY-TO-USE, I tried to keep it compact with a small set of functions, if a function is too complex or is not clearly useful, better not to include it.
|
||||||
|
- raylib is open source and free; educators and institutions can use this tool to TEACH videogames programming completely by free.
|
||||||
|
- raylib is collaborative; contribution of tutorials / code-examples / bugs-solving / code-comments are highly appreciated.
|
||||||
|
- raylib's license (and its external libs respective licenses) allow using it for commercial products.
|
||||||
|
|
||||||
|
### Some interesting reads to start with
|
||||||
|
|
||||||
|
- [raylib history](HISTORY.md)
|
||||||
|
- [raylib architecture](https://github.com/raysan5/raylib/wiki/raylib-architecture)
|
||||||
|
- [raylib license](LICENSE.md)
|
||||||
|
- [raylib roadmap](ROADMAP.md)
|
||||||
|
|
||||||
|
[raylib Wiki](https://github.com/raysan5/raylib/wiki) contains some information about the library and is open to anyone for edit.
|
||||||
|
Feel free to review it if required, just take care not to break anything.
|
||||||
|
|
||||||
|
### raylib C coding conventions
|
||||||
|
|
||||||
|
Despite being written in C, raylib does not follow the standard Hungarian notation for C,
|
||||||
|
it [follows Pascal-case/camel-case notation](https://github.com/raysan5/raylib/wiki/raylib-coding-conventions),
|
||||||
|
more common on C# language. All code formatting decisions have been carefully taken
|
||||||
|
to make it easier for students to read, write and understand code.
|
||||||
|
|
||||||
|
Source code is extensively commented for that purpose, raylib primary learning method is:
|
||||||
|
|
||||||
|
> learn by reading code and examples
|
||||||
|
|
||||||
|
|
||||||
|
### Using raylib develop branch
|
||||||
|
|
||||||
|
raylib [master branch](https://github.com/raysan5/raylib) contains the latest raylib release but all
|
||||||
|
the future work is always done on [develop branch](https://github.com/raysan5/raylib/tree/develop),
|
||||||
|
it's far ahead of master and I try to keep it always stable with latest library changes.
|
||||||
|
|
||||||
|
Please, if issuing a bug or sending a pull-request, verify that you're using develop branch.
|
||||||
|
|
||||||
|
Note that while using develop branch predefined Notepad++ building scripts could not work, in that case,
|
||||||
|
use provided [Makefile](https://github.com/raysan5/raylib/blob/develop/src/Makefile) or [CMake](https://github.com/raysan5/raylib/blob/develop/src/CMakeLists.txt) building systems.
|
||||||
|
|
||||||
|
For detailed information on building raylib and examples, please check [raylib Wiki](https://github.com/raysan5/raylib/wiki).
|
||||||
|
|
||||||
|
### Opening new Issues
|
||||||
|
|
||||||
|
To open new issue for raylib (bug, enhancement, discussion...), just try to follow these rules:
|
||||||
|
|
||||||
|
- Make sure the issue has not already been reported before by searching on GitHub under Issues.
|
||||||
|
- If you're unable to find an open issue addressing the problem, open a new one. Be sure to include a
|
||||||
|
title and clear description, as much relevant information as possible, and a code sample demonstrating the unexpected behavior.
|
||||||
|
- If applies, attach some screenshot of the issue and a .zip file with the code sample and required resources.
|
||||||
|
- On issue description, add a brackets tag about the raylib module that relates to this issue.
|
||||||
|
If don't know the module, just report the issue, I will review it.
|
||||||
|
- You can check other issues to see how is being done!
|
||||||
|
|
||||||
|
### Sending a Pull-Request
|
||||||
|
|
||||||
|
To send a pull-request, first of all, make sure you're sending it to [develop branch](https://github.com/raysan5/raylib/tree/develop). Here are some other rules:
|
||||||
|
|
||||||
|
- Make sure the PR description clearly describes the problem and solution. Include the relevant issue number if applicable.
|
||||||
|
- Don't send big pull-requests (lots of changelists), they are difficult to review. It's better to send small pull-request, one at a time.
|
||||||
|
- Verify that changes don't break the build (at least on Windows platform). As many platforms where you can test it, the better, but don't worry
|
||||||
|
if you cannot test all the platforms.
|
||||||
|
|
||||||
|
### raylib bindings
|
||||||
|
|
||||||
|
Some people ported raylib to other languages in form of bindings or wrappers to the library, here is a list with the ones I'm aware of:
|
||||||
|
|
||||||
|
- [raylib C/C++ version (default)](https://github.com/raysan5/raylib)
|
||||||
|
- [raylib Lua binding](https://github.com/raysan5/raylib-lua)
|
||||||
|
- [raylib Go binding](https://github.com/gen2brain/raylib-go)
|
||||||
|
- [raylib Nim binding](https://gitlab.com/define-private-public/raylib-Nim)
|
||||||
|
- [raylib Crystal binding](https://gitlab.com/Zatherz/cray)
|
||||||
|
- [raylib Perl wrapper](https://metacpan.org/pod/Graphics::Raylib)
|
||||||
|
- raylib Pascal binding with custom IDE (closed-source)
|
||||||
|
|
||||||
|
Usually, raylib bindings follow the convention: `raylib-{language}`
|
||||||
|
|
||||||
|
Let me know if you're writing a new binding for raylib, I will list it here and I usually
|
||||||
|
provide the icon/logo for that new language binding.
|
||||||
|
|
||||||
|
### Contact information
|
||||||
|
|
||||||
|
If you have any doubt, don't hesitate to [contact me](mailto:ray@raylib.com)!.
|
||||||
|
You can write me a direct mail but you can also contact me on the following networks:
|
||||||
|
|
||||||
|
- [raylib forum](http://forum.raylib.com/) - A good place for discussions or to ask for help.
|
||||||
|
- [raylib gitter](https://gitter.im/raylib) - A direct communication channel for project discussions.
|
||||||
|
- [raylib twitter](https://twitter.com/raysan5) - My personal twitter account, I usually post about raylib, you can send me PMs.
|
||||||
|
- [raylib web](http://www.raylib.com/) - On top-right corner there is a bunch of networks where you can find me.
|
||||||
|
|
||||||
|
Thank you very much for your time! :)
|
||||||
|
|
||||||
|
----
|
||||||
|
|
||||||
|
Here is a list of raylib contributors, these people have invested part of their time
|
||||||
|
contributing (in some way or another) to make the raylib project better. Huge thanks to all of them!
|
||||||
|
|
||||||
|
- [Zopokx](https://github.com/Zopokx) for testing the web.
|
||||||
|
- [Elendow](http://www.elendow.com) for testing and helping on web development.
|
||||||
|
- Victor Dual for implementing and testing 3D shapes functions.
|
||||||
|
- Marc Palau for implementing and testing 3D shapes functions and contribute on camera and gestures modules.
|
||||||
|
- Kevin Gato for improving texture internal formats support and helping on raygui development.
|
||||||
|
- Daniel Nicolas for improving texture internal formats support and helping on raygui development.
|
||||||
|
- Marc Agüera for testing and using raylib on a real product ([Koala Seasons](http://www.koalaseasons.com))
|
||||||
|
- Daniel Moreno for testing and using raylib on a real product ([Koala Seasons](http://www.koalaseasons.com))
|
||||||
|
- Daniel Gomez for testing and using raylib on a real product ([Koala Seasons](http://www.koalaseasons.com))
|
||||||
|
- [Sergio Martinez](https://github.com/anidealgift) for helping on raygui development and tools development (raygui_styler).
|
||||||
|
- [Victor Fisac](https://github.com/victorfisac) for developing physics raylib module (physac) and implementing PBR materials and lighting systems... among multiple other improvements and multiple tools and games.
|
||||||
|
- Albert Martos for helping on raygui and porting examples and game-templates to Android and HTML5.
|
||||||
|
- Ian Eito for helping on raygui and porting examples and game-templates to Android and HTML5.
|
||||||
|
- [procedural](https://github.com/procedural) for testing raylib on Linux, correcting some bugs and adding several mouse functions.
|
||||||
|
- [Chris Hemingway](https://github.com/cHemingway) for improving raylib on OSX build system.
|
||||||
|
- [Emanuele Petriglia](https://github.com/LelixSuper) for working on multiple GNU/Linux improvements and developing [TicTacToe](https://github.com/LelixSuper/TicTacToe) raylib game.
|
||||||
|
- [Joshua Reisenauer](https://github.com/kd7tck) for adding audio modules support (XM, MOD) and reviewing audio system.
|
||||||
|
- [Marcelo Paez](https://github.com/paezao) for his help on OSX to solve High DPI display issue. Thanks Marcelo!
|
||||||
|
- [Ghassan Al-Mashareqa](https://github.com/ghassanpl) for his amazing contribution with raylib Lua module, I just work over his code to implement [rlua](https://github.com/raysan5/raylib/blob/master/src/rlua.h)
|
||||||
|
- [Teodor Stoenescu](https://github.com/teodor-stoenescu) for his improvements on OBJ object loading.
|
||||||
|
- [RDR8](https://github.com/RDR8) for helping with Linux build improvements
|
||||||
|
- [Saggi Mizrahi](https://github.com/ficoos) for multiple fixes on Linux and audio system
|
||||||
|
- [Daniel Lemos](https://github.com/xspager) for fixing issues on Linux games building
|
||||||
|
- [Joel Davis](https://github.com/joeld42) for adding raycast picking utilities and a [great example](https://github.com/raysan5/raylib/blob/master/examples/models/models_mesh_picking.c)
|
||||||
|
- [Richard Goodwin](https://github.com/AudioMorphology) for adding RPI touchscreen support
|
||||||
|
- [Milan Nikolic](https://github.com/gen2brain) for adding Android build support with custom standalone toolchain
|
||||||
|
- [Michael Vetter](https://github.com/jubalh) for improvements on build system and adding meson support for Linux
|
||||||
|
- [Wilhem Barbier](https://github.com/nounoursheureux) for adding Image generation functions and some fixes
|
||||||
|
- [Benjamin Summerton](https://github.com/define-private-public) for improving OSX building and his amazing work on CMake build sytem
|
||||||
|
- [MartinFX](https://github.com/Martinfx) for adding compilation support for FreeBSD OS
|
||||||
|
- [Wilhem Barbier](https://github.com/nounoursheureux) for supporting default shaders on shader loading, if shader not provided
|
||||||
|
- [Ahmad Fatoum](https://github.com/a3f) for implementing continuus integration support for raylib (Travis and AppVeyor) and greatly improving build system.
|
||||||
|
- [SamNChiet](https://github.com/SamNChiet) for his work on UWP inputs implementation.
|
||||||
|
- [David Reid](https://github.com/mackron) for a complete review of audio module to support his amazing mini_al audio library.
|
||||||
|
- [Kai](https://github.com/questor) for multiple code reviews and improvements.
|
||||||
|
|
||||||
|
Please, if I forget someone in this list, excuse me and write me an email to remind me to add you!
|
||||||
|
|
@ -1,35 +0,0 @@
|
||||||
|
|
||||||
I believe that time is the most valuable resource and the following people have invested part of their time
|
|
||||||
contributing (in some way or another) to make raylib project better. Huge thanks!
|
|
||||||
|
|
||||||
- [Zopokx](https://github.com/Zopokx) for testing the web.
|
|
||||||
- [Elendow](http://www.elendow.com) for testing and helping on web development.
|
|
||||||
- Victor Dual for implementing and testing 3D shapes functions.
|
|
||||||
- Marc Palau for implementing and testing 3D shapes functions and contribute on camera and gestures modules.
|
|
||||||
- Kevin Gato for improving texture internal formats support and helping on raygui development.
|
|
||||||
- Daniel Nicolas for improving texture internal formats support and helping on raygui development.
|
|
||||||
- Marc Agüera for testing and using raylib on a real product ([Koala Seasons](http://www.koalaseasons.com))
|
|
||||||
- Daniel Moreno for testing and using raylib on a real product ([Koala Seasons](http://www.koalaseasons.com))
|
|
||||||
- Daniel Gomez for testing and using raylib on a real product ([Koala Seasons](http://www.koalaseasons.com))
|
|
||||||
- [Sergio Martinez](https://github.com/anidealgift) for helping on raygui development and tools development (raygui_styler).
|
|
||||||
- [Victor Fisac](https://github.com/victorfisac) for developing physics raylib module (physac) and implementing PBR materials and lighting systems... among multiple other improvements and multiple tools and games.
|
|
||||||
- Albert Martos for helping on raygui and porting examples and game-templates to Android and HTML5.
|
|
||||||
- Ian Eito for helping on raygui and porting examples and game-templates to Android and HTML5.
|
|
||||||
- [procedural](https://github.com/procedural) for testing raylib on Linux, correcting some bugs and adding several mouse functions.
|
|
||||||
- [Chris Hemingway](https://github.com/cHemingway) for improving raylib on OSX build system.
|
|
||||||
- [Emanuele Petriglia](https://github.com/LelixSuper) for working on multiple GNU/Linux improvements and developing [TicTacToe](https://github.com/LelixSuper/TicTacToe) raylib game.
|
|
||||||
- [Joshua Reisenauer](https://github.com/kd7tck) for adding audio modules support (XM, MOD) and reviewing audio system.
|
|
||||||
- [Marcelo Paez](https://github.com/paezao) for his help on OSX to solve High DPI display issue. Thanks Marcelo!
|
|
||||||
- [Ghassan Al-Mashareqa](https://github.com/ghassanpl) for his amazing contribution with raylib Lua module, I just work over his code to implement [rlua](https://github.com/raysan5/raylib/blob/master/src/rlua.h)
|
|
||||||
- [Teodor Stoenescu](https://github.com/teodor-stoenescu) for his improvements on OBJ object loading.
|
|
||||||
- [RDR8](https://github.com/RDR8) for helping with Linux build improvements
|
|
||||||
- [Saggi Mizrahi](https://github.com/ficoos) for multiple fixes on Linux and audio system
|
|
||||||
- [Daniel Lemos](https://github.com/xspager) for fixing issues on Linux games building
|
|
||||||
- [Joel Davis](https://github.com/joeld42) for adding raycast picking utilities and a [great example](https://github.com/raysan5/raylib/blob/master/examples/models/models_mesh_picking.c)
|
|
||||||
- [Richard Goodwin](https://github.com/AudioMorphology) for adding RPI touchscreen support
|
|
||||||
- [Milan Nikolic](https://github.com/gen2brain) for adding Android build support with custom standalone toolchain
|
|
||||||
- [Michael Vetter](https://github.com/jubalh) for improvements on build system and adding meson support for Linux
|
|
||||||
- [Wilhem Barbier](https://github.com/nounoursheureux) for adding Image generation functions and some fixes
|
|
||||||
- [Benjamin Summerton](https://github.com/define-private-public) for improving OSX building and his amazing work on CMake build sytem
|
|
||||||
|
|
||||||
Please, if I forget someone in this list, excuse me and write me an email to remind me to add you!
|
|
||||||
29
README.md
29
README.md
|
|
@ -11,23 +11,27 @@ no fancy interface, no visual helpers, no auto-debugging... just coding in the m
|
||||||
pure spartan-programmers way. Are you ready to learn? Jump to [code examples!](http://www.raylib.com/examples.html)
|
pure spartan-programmers way. Are you ready to learn? Jump to [code examples!](http://www.raylib.com/examples.html)
|
||||||
|
|
||||||
[](https://travis-ci.org/raysan5/raylib)
|
[](https://travis-ci.org/raysan5/raylib)
|
||||||
|
[](https://ci.appveyor.com/project/raysan5/raylib)
|
||||||
|
[](https://gitter.im/raylib/Lobby?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge)
|
||||||
|
[](LICENSE.md)
|
||||||
|
[](https://twitter.com/raysan5)
|
||||||
|
|
||||||
features
|
features
|
||||||
--------
|
--------
|
||||||
|
|
||||||
* Written in plain C code (C99) in PascalCase/camelCase notation
|
* Written in plain C code (C99) in PascalCase/camelCase notation
|
||||||
* Hardware accelerated with OpenGL (1.1, 2.1, 3.3 or ES2)
|
* Hardware accelerated with OpenGL (1.1, 2.1, 3.3 or ES2 - choose at compile)
|
||||||
* Unique OpenGL abstraction layer (usable as standalone module): [rlgl](https://github.com/raysan5/raylib/blob/master/src/rlgl.c)
|
* Unique OpenGL abstraction layer (usable as standalone module): [rlgl](https://github.com/raysan5/raylib/blob/master/src/rlgl.c)
|
||||||
* Powerful fonts module with SpriteFonts support (XNA bitmap fonts, AngelCode fonts, TTF)
|
* Powerful fonts module with SpriteFonts support (XNA fonts, AngelCode fonts, TTF)
|
||||||
* Outstanding texture formats support, including compressed formats (DXT, ETC, PVRT, ASTC)
|
* Outstanding texture formats support, including compressed formats (DXT, ETC, ASTC)
|
||||||
* Basic 3d support for Geometrics, Models, Billboards, Heightmaps and Cubicmaps
|
* Full 3d support for 3d Shapes, Models, Billboards, Heightmaps and more!
|
||||||
* Flexible Materials system, supporting classic maps and PBR maps
|
* Flexible Materials system, supporting classic maps and PBR maps
|
||||||
* Shaders support, including Model shaders and Postprocessing shaders
|
* Shaders support, including Model shaders and Postprocessing shaders
|
||||||
* Powerful math module for Vector, Matrix and Quaternion operations: [raymath](https://github.com/raysan5/raylib/blob/master/src/raymath.h)
|
* Powerful math module for Vector, Matrix and Quaternion operations: [raymath](https://github.com/raysan5/raylib/blob/master/src/raymath.h)
|
||||||
* Audio loading and playing with streaming support (WAV, OGG, FLAC, XM, MOD)
|
* Audio loading and playing with streaming support (WAV, OGG, FLAC, XM, MOD)
|
||||||
* Multiple platforms support: Windows, Linux, Mac, **Android**, **Raspberry Pi** and **HTML5**
|
* Multiple platforms support: Windows, Linux, FreeBSD, MacOS, UWP, Android, Raspberry Pi, HTML5.
|
||||||
* VR stereo rendering support with configurable HMD device parameters
|
* VR stereo rendering with configurable HMD device parameters
|
||||||
* Minimal external dependencies (GLFW3, OpenGL, OpenAL)
|
* NO external dependencies, all required libraries included with raylib
|
||||||
* Complete bindings to LUA ([raylib-lua](https://github.com/raysan5/raylib-lua)) and Go ([raylib-go](https://github.com/gen2brain/raylib-go))
|
* Complete bindings to LUA ([raylib-lua](https://github.com/raysan5/raylib-lua)) and Go ([raylib-go](https://github.com/gen2brain/raylib-go))
|
||||||
|
|
||||||
raylib uses on its core module the outstanding [GLFW3](http://www.glfw.org/) library. The best option I found for
|
raylib uses on its core module the outstanding [GLFW3](http://www.glfw.org/) library. The best option I found for
|
||||||
|
|
@ -40,10 +44,14 @@ to accomodate to Android, Raspberry Pi and HTML5.
|
||||||
|
|
||||||
*On Raspberry Pi, Videocore API and EGL libraries are used for window/context management and raw inputs reading.*
|
*On Raspberry Pi, Videocore API and EGL libraries are used for window/context management and raw inputs reading.*
|
||||||
|
|
||||||
building
|
build and installation
|
||||||
--------
|
----------------------
|
||||||
|
|
||||||
For detailed building instructions, check [raylib Wiki](https://github.com/raysan5/raylib/wiki).
|
Binary releases for Windows, Linux and macOS are available at the [Github Releases](https://github.com/raysan5/raylib/releases) page. Raylib is also available via following package managers:
|
||||||
|
|
||||||
|
* Homebrew: `brew install raylib`
|
||||||
|
|
||||||
|
To build raylib yourself, check out the [raylib Wiki](https://github.com/raysan5/raylib/wiki) for detailed instructions.
|
||||||
|
|
||||||
raylib has been developed using exclusively two tools:
|
raylib has been developed using exclusively two tools:
|
||||||
|
|
||||||
|
|
@ -61,6 +69,7 @@ contact
|
||||||
* Reddit: [https://www.reddit.com/r/raylib](https://www.reddit.com/r/raylib)
|
* Reddit: [https://www.reddit.com/r/raylib](https://www.reddit.com/r/raylib)
|
||||||
* Twitch: [http://www.twitch.tv/raysan5](http://www.twitch.tv/raysan5)
|
* Twitch: [http://www.twitch.tv/raysan5](http://www.twitch.tv/raysan5)
|
||||||
* Patreon: [https://www.patreon.com/raysan5](https://www.patreon.com/raysan5)
|
* Patreon: [https://www.patreon.com/raysan5](https://www.patreon.com/raysan5)
|
||||||
|
* YouTube: [https://www.youtube.com/channel/raylib](https://www.youtube.com/channel/UC8WIBkhYb5sBNqXO1mZ7WSQ)
|
||||||
|
|
||||||
If you are using raylib and you enjoy it, please, [let me know][raysan5].
|
If you are using raylib and you enjoy it, please, [let me know][raysan5].
|
||||||
|
|
||||||
|
|
|
||||||
65
appveyor.yml
Normal file
65
appveyor.yml
Normal file
|
|
@ -0,0 +1,65 @@
|
||||||
|
#os: Visual Studio 2015
|
||||||
|
|
||||||
|
clone_depth: 5
|
||||||
|
|
||||||
|
cache:
|
||||||
|
- C:\ProgramData\chocolatey\bin -> appveyor.yml
|
||||||
|
- C:\ProgramData\chocolatey\lib -> appveyor.yml
|
||||||
|
|
||||||
|
init:
|
||||||
|
- cmake -E remove c:\programdata\chocolatey\bin\cpack.exe
|
||||||
|
- set PATH=%PATH:C:\Program Files (x86)\Git\usr\bin;=%
|
||||||
|
- set PATH=%PATH:C:\Program Files\Git\usr\bin;=%
|
||||||
|
- if [%BITS%]==[32] set MINGW=C:\mingw-w64\i686-6.3.0-posix-dwarf-rt_v5-rev1\mingw32
|
||||||
|
- if [%BITS%]==[64] set MINGW=C:\mingw-w64\x86_64-6.3.0-posix-seh-rt_v5-rev1\mingw64
|
||||||
|
- if [%COMPILER%]==[mingw] set PATH=%MINGW%\bin;%PATH%
|
||||||
|
- set RAYLIB_PACKAGE_SUFFIX=-Win%BITS%-%COMPILER%
|
||||||
|
- set VERBOSE=1
|
||||||
|
|
||||||
|
environment:
|
||||||
|
matrix:
|
||||||
|
- compiler: mingw
|
||||||
|
bits: 32
|
||||||
|
examples: ON
|
||||||
|
- compiler: mingw
|
||||||
|
bits: 64
|
||||||
|
examples: ON
|
||||||
|
- compiler: msvc15
|
||||||
|
bits: 32
|
||||||
|
examples: OFF
|
||||||
|
- compiler: msvc15
|
||||||
|
bits: 64
|
||||||
|
examples: OFF
|
||||||
|
|
||||||
|
before_build:
|
||||||
|
- if [%compiler%]==[mingw] set CFLAGS=-m%BITS% & set LDFLAGS=-m%BITS% & set GENERATOR="MinGW Makefiles"
|
||||||
|
- if [%COMPILER%]==[msvc15] if [%BITS%]==[32] set GENERATOR="Visual Studio 14 2015"
|
||||||
|
- if [%COMPILER%]==[msvc15] if [%BITS%]==[64] set GENERATOR="Visual Studio 14 2015 Win64"
|
||||||
|
- mkdir build
|
||||||
|
- cd build
|
||||||
|
|
||||||
|
build_script:
|
||||||
|
- cmake -G %GENERATOR% -DSTATIC_RAYLIB=ON -DSHARED_RAYLIB=ON -DBUILD_EXAMPLES=%examples% -DBUILD_GAMES=%examples% ..
|
||||||
|
- cmake --build . --target install
|
||||||
|
|
||||||
|
after_build:
|
||||||
|
- cmake --build . --target package
|
||||||
|
|
||||||
|
before_test:
|
||||||
|
|
||||||
|
test_script:
|
||||||
|
|
||||||
|
artifacts:
|
||||||
|
- path: 'build\*.zip'
|
||||||
|
|
||||||
|
deploy:
|
||||||
|
- provider: GitHub
|
||||||
|
auth_token:
|
||||||
|
secure: OxKnnT3tlkPl9365cOO84rDWU4UkHIYJc0D3r3Tv7rB3HaR2BBhlhCnl7g3nuOJy
|
||||||
|
artifact: /.*\.zip/
|
||||||
|
draft: false
|
||||||
|
prerelease: false
|
||||||
|
force_update: true
|
||||||
|
on:
|
||||||
|
branch: develop
|
||||||
|
appveyor_repo_tag: true # deploy on tag push only
|
||||||
|
|
@ -7,9 +7,20 @@ include("../utils.cmake")
|
||||||
# TODO `build` directory should maybe be something else...
|
# TODO `build` directory should maybe be something else...
|
||||||
# TODO place somewhere else?
|
# TODO place somewhere else?
|
||||||
include_directories("../build/release")
|
include_directories("../build/release")
|
||||||
|
include_directories("../src/external")
|
||||||
|
include_directories("../src/external/glfw/include")
|
||||||
|
|
||||||
# Get the sources together
|
# Get the sources together
|
||||||
set(example_dirs audio core models others physac shaders text texutures)
|
set(example_dirs audio core models others shaders shapes text textures)
|
||||||
|
set(CMAKE_REQUIRED_DEFINITIONS -D_POSIX_C_SOURCE=199309L)
|
||||||
|
include(CheckSymbolExists)
|
||||||
|
check_symbol_exists(CLOCK_MONOTONIC time.h HAVE_CLOCK_MONOTONIC)
|
||||||
|
check_symbol_exists(QueryPerformanceCounter windows.h HAVE_QPC)
|
||||||
|
set(CMAKE_REQUIRED_DEFINITIONS)
|
||||||
|
if(HAVE_QPC OR HAVE_CLOCK_MONOTONIC)
|
||||||
|
set(example_dirs ${example_dirs} physac)
|
||||||
|
endif()
|
||||||
|
|
||||||
set(example_sources)
|
set(example_sources)
|
||||||
set(example_resources)
|
set(example_resources)
|
||||||
foreach(example_dir ${example_dirs})
|
foreach(example_dir ${example_dirs})
|
||||||
|
|
@ -22,6 +33,14 @@ foreach(example_dir ${example_dirs})
|
||||||
list(APPEND example_resources ${resources})
|
list(APPEND example_resources ${resources})
|
||||||
endforeach()
|
endforeach()
|
||||||
|
|
||||||
|
include(CheckIncludeFiles)
|
||||||
|
check_include_files(OVR_CAPI_GL.h HAVE_OCULUS_CAPI)
|
||||||
|
if(NOT HAVE_OCULUS_CAPI)
|
||||||
|
list(REMOVE_ITEM example_sources ${CMAKE_CURRENT_SOURCE_DIR}/others/oculus_rift.c)
|
||||||
|
endif()
|
||||||
|
list(REMOVE_ITEM example_sources ${CMAKE_CURRENT_SOURCE_DIR}/others/standard_lighting.c)
|
||||||
|
|
||||||
|
|
||||||
# Do each example
|
# Do each example
|
||||||
foreach(example_source ${example_sources})
|
foreach(example_source ${example_sources})
|
||||||
# Create the basename for the example
|
# Create the basename for the example
|
||||||
|
|
|
||||||
|
|
@ -2,7 +2,7 @@
|
||||||
#
|
#
|
||||||
# raylib makefile for Desktop platforms, Raspberry Pi, Android and HTML5
|
# raylib makefile for Desktop platforms, Raspberry Pi, Android and HTML5
|
||||||
#
|
#
|
||||||
# Copyright (c) 2013-2017 Ramon Santamaria (@raysan5)
|
# Copyright (c) 2013-2018 Ramon Santamaria (@raysan5)
|
||||||
#
|
#
|
||||||
# This software is provided "as-is", without any express or implied warranty. In no event
|
# This software is provided "as-is", without any express or implied warranty. In no event
|
||||||
# will the authors be held liable for any damages arising from the use of this software.
|
# will the authors be held liable for any damages arising from the use of this software.
|
||||||
|
|
@ -29,76 +29,87 @@ PLATFORM ?= PLATFORM_DESKTOP
|
||||||
RAYLIB_PATH ?= ..
|
RAYLIB_PATH ?= ..
|
||||||
PROJECT_NAME ?= raylib_example
|
PROJECT_NAME ?= raylib_example
|
||||||
|
|
||||||
|
# Default path for raylib on Raspberry Pi, if installed in different path, update it!
|
||||||
ifeq ($(PLATFORM),PLATFORM_RPI)
|
ifeq ($(PLATFORM),PLATFORM_RPI)
|
||||||
RAYLIB_PATH ?= /home/pi/raylib
|
RAYLIB_PATH ?= /home/pi/raylib
|
||||||
endif
|
endif
|
||||||
|
|
||||||
# Library type used for raylib and OpenAL Soft: STATIC (.a) or SHARED (.so/.dll)
|
# Library type used for raylib: STATIC (.a) or SHARED (.so/.dll)
|
||||||
# NOTE: Libraries should be provided in the selected form
|
|
||||||
RAYLIB_LIBTYPE ?= STATIC
|
RAYLIB_LIBTYPE ?= STATIC
|
||||||
OPENAL_LIBTYPE ?= STATIC
|
|
||||||
|
|
||||||
# On PLATFORM_WEB force OpenAL Soft shared library
|
# Use external GLFW library instead of rglfw module
|
||||||
ifeq ($(PLATFORM),PLATFORM_WEB)
|
USE_EXTERNAL_GLFW ?= FALSE
|
||||||
OPENAL_LIBTYPE = SHARED
|
|
||||||
endif
|
# Use Wayland display server protocol on Linux desktop
|
||||||
|
# by default it uses X11 windowing system
|
||||||
|
USE_WAYLAND_DISPLAY ?= FALSE
|
||||||
|
|
||||||
|
# NOTE: On PLATFORM_WEB OpenAL Soft backend is used by default (check raylib/src/Makefile)
|
||||||
|
|
||||||
|
|
||||||
# Determine PLATFORM_OS in case PLATFORM_DESKTOP selected
|
# Determine PLATFORM_OS in case PLATFORM_DESKTOP selected
|
||||||
ifeq ($(PLATFORM),PLATFORM_DESKTOP)
|
ifeq ($(PLATFORM),PLATFORM_DESKTOP)
|
||||||
# No uname.exe on MinGW!, but OS=Windows_NT on Windows! ifeq ($(UNAME),Msys) -> Windows
|
# No uname.exe on MinGW!, but OS=Windows_NT on Windows!
|
||||||
|
# ifeq ($(UNAME),Msys) -> Windows
|
||||||
ifeq ($(OS),Windows_NT)
|
ifeq ($(OS),Windows_NT)
|
||||||
PLATFORM_OS=WINDOWS
|
PLATFORM_OS=WINDOWS
|
||||||
LIBPATH=win32
|
|
||||||
else
|
else
|
||||||
UNAMEOS=$(shell uname)
|
UNAMEOS=$(shell uname)
|
||||||
ifeq ($(UNAMEOS),Linux)
|
ifeq ($(UNAMEOS),Linux)
|
||||||
PLATFORM_OS=LINUX
|
PLATFORM_OS=LINUX
|
||||||
LIBPATH=linux
|
endif
|
||||||
else
|
ifeq ($(UNAMEOS),FreeBSD)
|
||||||
|
PLATFORM_OS=FREEBSD
|
||||||
|
endif
|
||||||
ifeq ($(UNAMEOS),Darwin)
|
ifeq ($(UNAMEOS),Darwin)
|
||||||
PLATFORM_OS=OSX
|
PLATFORM_OS=OSX
|
||||||
LIBPATH=osx
|
|
||||||
endif
|
|
||||||
endif
|
endif
|
||||||
endif
|
endif
|
||||||
endif
|
endif
|
||||||
|
|
||||||
ifeq ($(PLATFORM),PLATFORM_RPI)
|
ifeq ($(PLATFORM),PLATFORM_RPI)
|
||||||
# RPI cross-compiler
|
UNAMEOS=$(shell uname)
|
||||||
RPI_CROSS_COMPILE ?= NO
|
ifeq ($(UNAMEOS),Linux)
|
||||||
|
PLATFORM_OS=LINUX
|
||||||
|
endif
|
||||||
endif
|
endif
|
||||||
|
|
||||||
ifeq ($(PLATFORM),PLATFORM_WEB)
|
ifeq ($(PLATFORM),PLATFORM_WEB)
|
||||||
# Emscripten required variables
|
# Emscripten required variables
|
||||||
EMSDK_PATH = C:/emsdk
|
EMSDK_PATH = C:/emsdk
|
||||||
EMSCRIPTEN_VERSION = 1.37.21
|
EMSCRIPTEN_VERSION = 1.37.28
|
||||||
CLANG_VERSION=e1.37.21_64bit
|
CLANG_VERSION=e1.37.28_64bit
|
||||||
PYTHON_VERSION=2.7.5.3_64bit
|
PYTHON_VERSION=2.7.5.3_64bit
|
||||||
NODE_VERSION=4.1.1_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)
|
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)
|
EMSCRIPTEN=$(EMSDK_PATH)\emscripten\$(EMSCRIPTEN_VERSION)
|
||||||
endif
|
endif
|
||||||
|
|
||||||
|
RAYLIB_RELEASE_PATH ?= $(RAYLIB_PATH)/release/libs
|
||||||
|
|
||||||
# Define raylib release directory for compiled library
|
# Define raylib release directory for compiled library
|
||||||
ifeq ($(PLATFORM),PLATFORM_DESKTOP)
|
ifeq ($(PLATFORM),PLATFORM_DESKTOP)
|
||||||
ifeq ($(PLATFORM_OS),WINDOWS)
|
ifeq ($(PLATFORM_OS),WINDOWS)
|
||||||
RAYLIB_RELEASE = $(RAYLIB_PATH)/release/libs/win32/mingw32
|
RAYLIB_RELEASE_PATH = $(RAYLIB_PATH)/release/libs/win32/mingw32
|
||||||
endif
|
endif
|
||||||
ifeq ($(PLATFORM_OS),LINUX)
|
ifeq ($(PLATFORM_OS),LINUX)
|
||||||
RAYLIB_RELEASE = $(RAYLIB_PATH)/release/libs/linux
|
RAYLIB_RELEASE_PATH = $(RAYLIB_PATH)/release/libs/linux
|
||||||
endif
|
endif
|
||||||
ifeq ($(PLATFORM_OS),OSX)
|
ifeq ($(PLATFORM_OS),OSX)
|
||||||
RAYLIB_RELEASE = $(RAYLIB_PATH)/release/libs/osx
|
RAYLIB_RELEASE_PATH = $(RAYLIB_PATH)/release/libs/osx
|
||||||
|
endif
|
||||||
|
ifeq ($(PLATFORM_OS),FREEBSD)
|
||||||
|
RAYLIB_RELEASE_PATH = $(RAYLIB_PATH)/release/libs/freebsd
|
||||||
endif
|
endif
|
||||||
endif
|
endif
|
||||||
ifeq ($(PLATFORM),PLATFORM_WEB)
|
|
||||||
RAYLIB_RELEASE = $(RAYLIB_PATH)/release/libs/html5
|
|
||||||
endif
|
|
||||||
ifeq ($(PLATFORM),PLATFORM_RPI)
|
ifeq ($(PLATFORM),PLATFORM_RPI)
|
||||||
RAYLIB_RELEASE = $(RAYLIB_PATH)/release/libs/rpi
|
RAYLIB_RELEASE_PATH = $(RAYLIB_PATH)/release/libs/rpi
|
||||||
|
endif
|
||||||
|
ifeq ($(PLATFORM),PLATFORM_WEB)
|
||||||
|
RAYLIB_RELEASE_PATH = $(RAYLIB_PATH)/release/libs/html5
|
||||||
endif
|
endif
|
||||||
|
|
||||||
# Define default C compiler: gcc
|
# Define default C compiler: gcc
|
||||||
|
# NOTE: define g++ compiler if using C++
|
||||||
CC = gcc
|
CC = gcc
|
||||||
|
|
||||||
ifeq ($(PLATFORM),PLATFORM_DESKTOP)
|
ifeq ($(PLATFORM),PLATFORM_DESKTOP)
|
||||||
|
|
@ -106,11 +117,16 @@ ifeq ($(PLATFORM),PLATFORM_DESKTOP)
|
||||||
# OSX default compiler
|
# OSX default compiler
|
||||||
CC = clang
|
CC = clang
|
||||||
endif
|
endif
|
||||||
|
ifeq ($(PLATFORM_OS),FREEBSD)
|
||||||
|
# FreeBSD default compiler
|
||||||
|
CC = clang
|
||||||
|
endif
|
||||||
endif
|
endif
|
||||||
ifeq ($(PLATFORM),PLATFORM_RPI)
|
ifeq ($(PLATFORM),PLATFORM_RPI)
|
||||||
ifeq ($(RPI_CROSS_COMPILE),YES)
|
ifeq ($(USE_RPI_CROSS_COMPILER),TRUE)
|
||||||
# RPI cross-compiler
|
# Define RPI cross-compiler
|
||||||
CC = armv6j-hardfloat-linux-gnueabi-gcc
|
#CC = armv6j-hardfloat-linux-gnueabi-gcc
|
||||||
|
CC = $(RPI_TOOLCHAIN)/bin/arm-linux-gnueabihf-gcc
|
||||||
endif
|
endif
|
||||||
endif
|
endif
|
||||||
ifeq ($(PLATFORM),PLATFORM_WEB)
|
ifeq ($(PLATFORM),PLATFORM_WEB)
|
||||||
|
|
@ -129,7 +145,7 @@ endif
|
||||||
|
|
||||||
# Define compiler flags:
|
# Define compiler flags:
|
||||||
# -O1 defines optimization level
|
# -O1 defines optimization level
|
||||||
# -Og enable debugging
|
# -g enable debugging
|
||||||
# -s strip unnecessary data from build
|
# -s strip unnecessary data from build
|
||||||
# -Wall turns on most, but not all, compiler warnings
|
# -Wall turns on most, but not all, compiler warnings
|
||||||
# -std=c99 defines C language mode (standard C from 1999 revision)
|
# -std=c99 defines C language mode (standard C from 1999 revision)
|
||||||
|
|
@ -160,7 +176,13 @@ ifeq ($(PLATFORM),PLATFORM_WEB)
|
||||||
# -s ALLOW_MEMORY_GROWTH=1 # to allow memory resizing
|
# -s ALLOW_MEMORY_GROWTH=1 # to allow memory resizing
|
||||||
# -s TOTAL_MEMORY=16777216 # to specify heap memory size (default = 16MB)
|
# -s TOTAL_MEMORY=16777216 # to specify heap memory size (default = 16MB)
|
||||||
# -s USE_PTHREADS=1 # multithreading support
|
# -s USE_PTHREADS=1 # multithreading support
|
||||||
CFLAGS += -s USE_GLFW=3 -s ASSERTIONS=1 --profiling -s TOTAL_MEMORY=16777216 --preload-file resources
|
# -s WASM=1 # support Web Assembly (https://github.com/kripken/emscripten/wiki/WebAssembly)
|
||||||
|
# --preload-file resources # specify a resources folder for data compilation
|
||||||
|
CFLAGS += -s USE_GLFW=3 -s ASSERTIONS=1 -s WASM=1 --profiling --preload-file resources
|
||||||
|
|
||||||
|
# Define a custom shell .html and output extension
|
||||||
|
CFLAGS += --shell-file $(RAYLIB_PATH)\templates\web_shell\shell.html
|
||||||
|
EXT = .html
|
||||||
endif
|
endif
|
||||||
|
|
||||||
# Define include paths for required headers
|
# Define include paths for required headers
|
||||||
|
|
@ -176,7 +198,14 @@ ifeq ($(PLATFORM),PLATFORM_RPI)
|
||||||
endif
|
endif
|
||||||
|
|
||||||
# Define library paths containing required libs
|
# Define library paths containing required libs
|
||||||
LDFLAGS = -L. -L$(RAYLIB_RELEASE) -L$(RAYLIB_PATH)/src
|
LDFLAGS = -L. -L$(RAYLIB_RELEASE_PATH) -L$(RAYLIB_PATH)/src
|
||||||
|
|
||||||
|
ifeq ($(PLATFORM),PLATFORM_DESKTOP)
|
||||||
|
ifeq ($(PLATFORM_OS),FREEBSD)
|
||||||
|
INCLUDE_PATHS += -I/usr/local/include
|
||||||
|
LDFLAGS += -L. -Lsrc -L/usr/local/lib
|
||||||
|
endif
|
||||||
|
endif
|
||||||
|
|
||||||
ifeq ($(PLATFORM),PLATFORM_RPI)
|
ifeq ($(PLATFORM),PLATFORM_RPI)
|
||||||
LDFLAGS += -L/opt/vc/lib
|
LDFLAGS += -L/opt/vc/lib
|
||||||
|
|
@ -186,50 +215,53 @@ endif
|
||||||
# if you want to link libraries (libname.so or libname.a), use the -lname
|
# if you want to link libraries (libname.so or libname.a), use the -lname
|
||||||
ifeq ($(PLATFORM),PLATFORM_DESKTOP)
|
ifeq ($(PLATFORM),PLATFORM_DESKTOP)
|
||||||
ifeq ($(PLATFORM_OS),WINDOWS)
|
ifeq ($(PLATFORM_OS),WINDOWS)
|
||||||
# Libraries for Windows desktop compiling
|
# Libraries for Windows desktop compilation
|
||||||
# NOTE: GLFW3 and OpenAL Soft libraries should be installed
|
LDLIBS = -lraylib -lopengl32 -lgdi32
|
||||||
LDLIBS = -lraylib -lglfw3 -lopengl32 -lgdi32
|
|
||||||
|
|
||||||
# Define required flags and libs for OpenAL Soft STATIC/SHARED usage
|
|
||||||
# NOTE: ALLIBS flag only required for raylib Win32 SHARED library building
|
|
||||||
ifeq ($(OPENAL_LIBTYPE),STATIC)
|
|
||||||
LDLIBS += -lopenal32 -lwinmm
|
|
||||||
CFLAGS += -DAL_LIBTYPE_STATIC -Wl,-allow-multiple-definition
|
|
||||||
else
|
|
||||||
LDLIBS += -lopenal32dll
|
|
||||||
endif
|
|
||||||
|
|
||||||
# Required for physac examples
|
# Required for physac examples
|
||||||
LDLIBS += -static -lpthread
|
LDLIBS += -static -lpthread
|
||||||
endif
|
endif
|
||||||
ifeq ($(PLATFORM_OS),LINUX)
|
ifeq ($(PLATFORM_OS),LINUX)
|
||||||
# Libraries for Debian GNU/Linux desktop compiling
|
# Libraries for Debian GNU/Linux desktop compiling
|
||||||
# NOTE: Required packages: libglfw3-dev libopenal-dev libegl1-mesa-dev
|
# NOTE: Required packages: libegl1-mesa-dev
|
||||||
LDLIBS = -lraylib -lglfw3 -lGL -lopenal -lm -lpthread -ldl
|
LDLIBS = -lraylib -lGL -lm -lpthread -ldl -lrt
|
||||||
|
|
||||||
|
# On X11 requires also below libraries
|
||||||
|
LDLIBS += -lX11
|
||||||
|
# NOTE: It seems additional libraries are not required any more, latest GLFW just dlopen them
|
||||||
|
#LDLIBS += -lXrandr -lXinerama -lXi -lXxf86vm -lXcursor
|
||||||
|
|
||||||
|
# On Wayland windowing system, additional libraries requires
|
||||||
|
ifeq ($(USE_WAYLAND_DISPLAY),TRUE)
|
||||||
|
LDLIBS += -lwayland-client -lwayland-cursor -lwayland-egl -lxkbcommon
|
||||||
|
endif
|
||||||
|
endif
|
||||||
|
ifeq ($(PLATFORM_OS),OSX)
|
||||||
|
# Libraries for OSX 10.9 desktop compiling
|
||||||
|
# NOTE: Required packages: libopenal-dev libegl1-mesa-dev
|
||||||
|
LDLIBS = -lraylib -framework OpenGL -framework OpenAL -framework Cocoa
|
||||||
|
endif
|
||||||
|
ifeq ($(PLATFORM_OS),FREEBSD)
|
||||||
|
# Libraries for FreeBSD desktop compiling
|
||||||
|
# NOTE: Required packages: mesa-libs
|
||||||
|
LDLIBS = -lraylib -lGL -lpthread -lm
|
||||||
|
|
||||||
# On XWindow requires also below libraries
|
# On XWindow requires also below libraries
|
||||||
LDLIBS += -lX11 -lXrandr -lXinerama -lXi -lXxf86vm -lXcursor
|
LDLIBS += -lX11 -lXrandr -lXinerama -lXi -lXxf86vm -lXcursor
|
||||||
endif
|
endif
|
||||||
ifeq ($(PLATFORM_OS),OSX)
|
ifeq ($(USE_EXTERNAL_GLFW),TRUE)
|
||||||
# Libraries for OSX 10.9 desktop compiling
|
# NOTE: It could require additional packages installed: libglfw3-dev
|
||||||
# NOTE: Required packages: libglfw3-dev libopenal-dev libegl1-mesa-dev
|
LDLIBS += -lglfw
|
||||||
LDLIBS = -lraylib -lglfw -framework OpenGL -framework OpenAL -framework Cocoa
|
|
||||||
endif
|
endif
|
||||||
endif
|
endif
|
||||||
ifeq ($(PLATFORM),PLATFORM_RPI)
|
ifeq ($(PLATFORM),PLATFORM_RPI)
|
||||||
# Libraries for Raspberry Pi compiling
|
# Libraries for Raspberry Pi compiling
|
||||||
# NOTE: Required packages: libopenal1
|
# NOTE: Required packages: libasound2-dev (ALSA)
|
||||||
LDLIBS = -lraylib -lGLESv2 -lEGL -lpthread -lrt -lm -lbcm_host -lopenal
|
LDLIBS = -lraylib -lbrcmGLESv2 -lbrcmEGL -lpthread -lrt -lm -lbcm_host -ldl
|
||||||
endif
|
endif
|
||||||
ifeq ($(PLATFORM),PLATFORM_WEB)
|
ifeq ($(PLATFORM),PLATFORM_WEB)
|
||||||
# Libraries for web (HTML5) compiling
|
# Libraries for web (HTML5) compiling
|
||||||
LDLIBS = $(RAYLIB_RELEASE)/libraylib.bc
|
LDLIBS = $(RAYLIB_RELEASE_PATH)/libraylib.bc
|
||||||
endif
|
|
||||||
|
|
||||||
# Define output extension to generate a .html file using provided shell
|
|
||||||
ifeq ($(PLATFORM),PLATFORM_WEB)
|
|
||||||
EXT = .html
|
|
||||||
WEB_SHELL = --shell-file $(RAYLIB_PATH)\templates\web_shell\shell.html
|
|
||||||
endif
|
endif
|
||||||
|
|
||||||
# Define all object files required
|
# Define all object files required
|
||||||
|
|
@ -266,6 +298,7 @@ EXAMPLES = \
|
||||||
textures/textures_image_processing \
|
textures/textures_image_processing \
|
||||||
textures/textures_image_drawing \
|
textures/textures_image_drawing \
|
||||||
textures/textures_image_generation \
|
textures/textures_image_generation \
|
||||||
|
textures/textures_image_text \
|
||||||
text/text_sprite_fonts \
|
text/text_sprite_fonts \
|
||||||
text/text_bmfont_ttf \
|
text/text_bmfont_ttf \
|
||||||
text/text_raylib_fonts \
|
text/text_raylib_fonts \
|
||||||
|
|
@ -282,9 +315,9 @@ EXAMPLES = \
|
||||||
models/models_cubicmap \
|
models/models_cubicmap \
|
||||||
models/models_mesh_picking \
|
models/models_mesh_picking \
|
||||||
models/models_mesh_generation \
|
models/models_mesh_generation \
|
||||||
models/models_yaw_pitch_roll \
|
|
||||||
models/models_material_pbr \
|
models/models_material_pbr \
|
||||||
models/models_skybox \
|
models/models_skybox \
|
||||||
|
models/models_yaw_pitch_roll \
|
||||||
shaders/shaders_model_shader \
|
shaders/shaders_model_shader \
|
||||||
shaders/shaders_shapes_textures \
|
shaders/shaders_shapes_textures \
|
||||||
shaders/shaders_custom_uniform \
|
shaders/shaders_custom_uniform \
|
||||||
|
|
@ -298,7 +331,7 @@ EXAMPLES = \
|
||||||
physac/physics_movement \
|
physac/physics_movement \
|
||||||
physac/physics_restitution \
|
physac/physics_restitution \
|
||||||
physac/physics_shatter \
|
physac/physics_shatter \
|
||||||
fix_dylib \
|
|
||||||
|
|
||||||
CURRENT_MAKEFILE = $(lastword $(MAKEFILE_LIST))
|
CURRENT_MAKEFILE = $(lastword $(MAKEFILE_LIST))
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -119,17 +119,17 @@ int main()
|
||||||
|
|
||||||
BeginBlendMode(BLEND_ALPHA);
|
BeginBlendMode(BLEND_ALPHA);
|
||||||
|
|
||||||
DrawTexturePro(texBackground, (Rectangle){0,0,texBackground.width, texBackground.height},
|
DrawTexturePro(texBackground, (Rectangle){ 0, 0, texBackground.width, texBackground.height },
|
||||||
(Rectangle){ centerX, centerY, texBackground.width*scaleFactor, texBackground.height*scaleFactor},
|
(Rectangle){ centerX, centerY, texBackground.width*scaleFactor, texBackground.height*scaleFactor},
|
||||||
(Vector2){texBackground.width/2*scaleFactor, texBackground.height/2*scaleFactor + pitchOffset*scaleFactor}, roll, WHITE);
|
(Vector2){ texBackground.width/2*scaleFactor, texBackground.height/2*scaleFactor + pitchOffset*scaleFactor }, roll, WHITE);
|
||||||
|
|
||||||
DrawTexturePro(texPitch, (Rectangle){ 0, 0, texPitch.width, texPitch.height },
|
DrawTexturePro(texPitch, (Rectangle){ 0, 0, texPitch.width, texPitch.height },
|
||||||
(Rectangle){ centerX, centerY, texPitch.width*scaleFactor, texPitch.height*scaleFactor },
|
(Rectangle){ centerX, centerY, texPitch.width*scaleFactor, texPitch.height*scaleFactor },
|
||||||
(Vector2){ texPitch.width/2*scaleFactor, texPitch.height/2*scaleFactor + pitchOffset*scaleFactor }, roll, WHITE);
|
(Vector2){ texPitch.width/2*scaleFactor, texPitch.height/2*scaleFactor + pitchOffset*scaleFactor }, roll, WHITE);
|
||||||
|
|
||||||
DrawTexturePro(texPlane, (Rectangle){0,0,texPlane.width, texPlane.height },
|
DrawTexturePro(texPlane, (Rectangle){ 0, 0, texPlane.width, texPlane.height },
|
||||||
(Rectangle){ centerX, centerY, texPlane.width*scaleFactor, texPlane.height*scaleFactor },
|
(Rectangle){ centerX, centerY, texPlane.width*scaleFactor, texPlane.height*scaleFactor },
|
||||||
(Vector2){texPlane.width/2*scaleFactor, texPlane.height/2*scaleFactor }, 0, WHITE);
|
(Vector2){ texPlane.width/2*scaleFactor, texPlane.height/2*scaleFactor }, 0, WHITE);
|
||||||
|
|
||||||
EndBlendMode();
|
EndBlendMode();
|
||||||
|
|
||||||
|
|
@ -144,9 +144,9 @@ int main()
|
||||||
End3dMode();
|
End3dMode();
|
||||||
|
|
||||||
// Draw 2D GUI stuff
|
// Draw 2D GUI stuff
|
||||||
DrawAngleGauge(texAngleGauge, 80, 80, roll, "roll", RED);
|
DrawAngleGauge(texAngleGauge, 80, 70, roll, "roll", RED);
|
||||||
DrawAngleGauge(texAngleGauge, 190, 80, pitch, "pitch", GREEN);
|
DrawAngleGauge(texAngleGauge, 190, 70, pitch, "pitch", GREEN);
|
||||||
DrawAngleGauge(texAngleGauge, 300, 80, yaw, "yaw", SKYBLUE);
|
DrawAngleGauge(texAngleGauge, 300, 70, yaw, "yaw", SKYBLUE);
|
||||||
|
|
||||||
DrawRectangle(30, 360, 260, 70, Fade(SKYBLUE, 0.5f));
|
DrawRectangle(30, 360, 260, 70, Fade(SKYBLUE, 0.5f));
|
||||||
DrawRectangleLines(30, 360, 260, 70, Fade(DARKBLUE, 0.5f));
|
DrawRectangleLines(30, 360, 260, 70, Fade(DARKBLUE, 0.5f));
|
||||||
|
|
|
||||||
Binary file not shown.
|
Before Width: | Height: | Size: 11 KiB After Width: | Height: | Size: 13 KiB |
Binary file not shown.
|
Before Width: | Height: | Size: 4.8 KiB After Width: | Height: | Size: 4.7 KiB |
|
|
@ -26,14 +26,11 @@
|
||||||
********************************************************************************************/
|
********************************************************************************************/
|
||||||
|
|
||||||
#include <stdio.h>
|
#include <stdio.h>
|
||||||
|
#include "audio.h"
|
||||||
#if defined(_WIN32)
|
#if defined(_WIN32)
|
||||||
#include <conio.h> // Windows only, no stardard library
|
#include <conio.h> // Windows only, no stardard library
|
||||||
#endif
|
|
||||||
|
|
||||||
#include "audio.h"
|
|
||||||
|
|
||||||
#if defined(__linux__)
|
|
||||||
|
|
||||||
|
#else
|
||||||
#include <stdio.h>
|
#include <stdio.h>
|
||||||
#include <termios.h>
|
#include <termios.h>
|
||||||
#include <unistd.h>
|
#include <unistd.h>
|
||||||
|
|
|
||||||
|
|
@ -10,7 +10,7 @@ varying vec2 fragTexCoord;
|
||||||
varying vec4 fragColor;
|
varying vec4 fragColor;
|
||||||
varying vec3 fragNormal;
|
varying vec3 fragNormal;
|
||||||
|
|
||||||
uniform mat4 mvpMatrix;
|
uniform mat4 mvp;
|
||||||
|
|
||||||
void main()
|
void main()
|
||||||
{
|
{
|
||||||
|
|
@ -19,5 +19,5 @@ void main()
|
||||||
fragColor = vertexColor;
|
fragColor = vertexColor;
|
||||||
fragNormal = vertexNormal;
|
fragNormal = vertexNormal;
|
||||||
|
|
||||||
gl_Position = mvpMatrix*vec4(vertexPosition, 1.0);
|
gl_Position = mvp*vec4(vertexPosition, 1.0);
|
||||||
}
|
}
|
||||||
|
|
@ -10,7 +10,7 @@ out vec2 fragTexCoord;
|
||||||
out vec4 fragColor;
|
out vec4 fragColor;
|
||||||
out vec3 fragNormal;
|
out vec3 fragNormal;
|
||||||
|
|
||||||
uniform mat4 mvpMatrix;
|
uniform mat4 mvp;
|
||||||
|
|
||||||
void main()
|
void main()
|
||||||
{
|
{
|
||||||
|
|
@ -19,5 +19,5 @@ void main()
|
||||||
fragColor = vertexColor;
|
fragColor = vertexColor;
|
||||||
fragNormal = vertexNormal;
|
fragNormal = vertexNormal;
|
||||||
|
|
||||||
gl_Position = mvpMatrix*vec4(vertexPosition, 1.0);
|
gl_Position = mvp*vec4(vertexPosition, 1.0);
|
||||||
}
|
}
|
||||||
22
examples/shaders/resources/shaders/glsl120/base.fs
Normal file
22
examples/shaders/resources/shaders/glsl120/base.fs
Normal file
|
|
@ -0,0 +1,22 @@
|
||||||
|
#version 120
|
||||||
|
|
||||||
|
// Input vertex attributes (from vertex shader)
|
||||||
|
varying vec2 fragTexCoord;
|
||||||
|
varying vec4 fragColor;
|
||||||
|
|
||||||
|
// Input uniform values
|
||||||
|
uniform sampler2D texture0;
|
||||||
|
uniform vec4 colDiffuse;
|
||||||
|
|
||||||
|
// NOTE: Add here your custom variables
|
||||||
|
uniform vec2 resolution = vec2(800, 450);
|
||||||
|
|
||||||
|
void main()
|
||||||
|
{
|
||||||
|
// Texel color fetching from texture sampler
|
||||||
|
vec4 texelColor = texture2D(texture0, fragTexCoord);
|
||||||
|
|
||||||
|
// NOTE: Implement here your fragment shader code
|
||||||
|
|
||||||
|
gl_FragColor = texelColor*colDiffuse;
|
||||||
|
}
|
||||||
26
examples/shaders/resources/shaders/glsl120/base.vs
Normal file
26
examples/shaders/resources/shaders/glsl120/base.vs
Normal file
|
|
@ -0,0 +1,26 @@
|
||||||
|
#version 120
|
||||||
|
|
||||||
|
// Input vertex attributes
|
||||||
|
attribute vec3 vertexPosition;
|
||||||
|
attribute vec2 vertexTexCoord;
|
||||||
|
attribute vec3 vertexNormal;
|
||||||
|
attribute vec4 vertexColor;
|
||||||
|
|
||||||
|
// Input uniform values
|
||||||
|
uniform mat4 mvp;
|
||||||
|
|
||||||
|
// Output vertex attributes (to fragment shader)
|
||||||
|
varying vec2 fragTexCoord;
|
||||||
|
varying vec4 fragColor;
|
||||||
|
|
||||||
|
// NOTE: Add here your custom variables
|
||||||
|
|
||||||
|
void main()
|
||||||
|
{
|
||||||
|
// Send vertex attributes to fragment shader
|
||||||
|
fragTexCoord = vertexTexCoord;
|
||||||
|
fragColor = vertexColor;
|
||||||
|
|
||||||
|
// Calculate final vertex position
|
||||||
|
gl_Position = mvp*vec4(vertexPosition, 1.0);
|
||||||
|
}
|
||||||
37
examples/shaders/resources/shaders/glsl120/bloom.fs
Normal file
37
examples/shaders/resources/shaders/glsl120/bloom.fs
Normal file
|
|
@ -0,0 +1,37 @@
|
||||||
|
#version 120
|
||||||
|
|
||||||
|
// Input vertex attributes (from vertex shader)
|
||||||
|
varying vec2 fragTexCoord;
|
||||||
|
varying vec4 fragColor;
|
||||||
|
|
||||||
|
// Input uniform values
|
||||||
|
uniform sampler2D texture0;
|
||||||
|
uniform vec4 colDiffuse;
|
||||||
|
|
||||||
|
// NOTE: Add here your custom variables
|
||||||
|
|
||||||
|
const vec2 size = vec2(800, 450); // render size
|
||||||
|
const float samples = 5.0; // pixels per axis; higher = bigger glow, worse performance
|
||||||
|
const float quality = 2.5; // lower = smaller glow, better quality
|
||||||
|
|
||||||
|
void main()
|
||||||
|
{
|
||||||
|
vec4 sum = vec4(0);
|
||||||
|
vec2 sizeFactor = vec2(1)/size*quality;
|
||||||
|
|
||||||
|
// Texel color fetching from texture sampler
|
||||||
|
vec4 source = texture2D(texture0, fragTexCoord);
|
||||||
|
|
||||||
|
const int range = 2; // should be = (samples - 1)/2;
|
||||||
|
|
||||||
|
for (int x = -range; x <= range; x++)
|
||||||
|
{
|
||||||
|
for (int y = -range; y <= range; y++)
|
||||||
|
{
|
||||||
|
sum += texture2D(texture0, fragTexCoord + vec2(x, y)*sizeFactor);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Calculate final fragment color
|
||||||
|
gl_FragColor = ((sum/(samples*samples)) + source)*colDiffuse;
|
||||||
|
}
|
||||||
32
examples/shaders/resources/shaders/glsl120/blur.fs
Normal file
32
examples/shaders/resources/shaders/glsl120/blur.fs
Normal file
|
|
@ -0,0 +1,32 @@
|
||||||
|
#version 120
|
||||||
|
|
||||||
|
// Input vertex attributes (from vertex shader)
|
||||||
|
varying vec2 fragTexCoord;
|
||||||
|
varying vec4 fragColor;
|
||||||
|
|
||||||
|
// Input uniform values
|
||||||
|
uniform sampler2D texture0;
|
||||||
|
uniform vec4 colDiffuse;
|
||||||
|
|
||||||
|
// NOTE: Add here your custom variables
|
||||||
|
|
||||||
|
// NOTE: Render size values must be passed from code
|
||||||
|
const float renderWidth = 800.0;
|
||||||
|
const float renderHeight = 450.0;
|
||||||
|
|
||||||
|
vec3 offset = vec3(0.0, 1.3846153846, 3.2307692308);
|
||||||
|
vec3 weight = vec3(0.2270270270, 0.3162162162, 0.0702702703);
|
||||||
|
|
||||||
|
void main()
|
||||||
|
{
|
||||||
|
// Texel color fetching from texture sampler
|
||||||
|
vec3 tc = texture2D(texture0, fragTexCoord).rgb*weight.x;
|
||||||
|
|
||||||
|
tc += texture2D(texture0, fragTexCoord + vec2(offset.y)/renderWidth, 0.0).rgb*weight.y;
|
||||||
|
tc += texture2D(texture0, fragTexCoord - vec2(offset.y)/renderWidth, 0.0).rgb*weight.y;
|
||||||
|
|
||||||
|
tc += texture2D(texture0, fragTexCoord + vec2(offset.z)/renderWidth, 0.0).rgb*weight.z;
|
||||||
|
tc += texture2D(texture0, fragTexCoord - vec2(offset.z)/renderWidth, 0.0).rgb*weight.z;
|
||||||
|
|
||||||
|
gl_FragColor = vec4(tc, 1.0);
|
||||||
|
}
|
||||||
45
examples/shaders/resources/shaders/glsl120/cross_hatching.fs
Normal file
45
examples/shaders/resources/shaders/glsl120/cross_hatching.fs
Normal file
|
|
@ -0,0 +1,45 @@
|
||||||
|
# version 120
|
||||||
|
|
||||||
|
// Input vertex attributes (from vertex shader)
|
||||||
|
varying vec2 fragTexCoord;
|
||||||
|
varying vec4 fragColor;
|
||||||
|
|
||||||
|
// Input uniform values
|
||||||
|
uniform sampler2D texture0;
|
||||||
|
uniform vec4 colDiffuse;
|
||||||
|
|
||||||
|
// NOTE: Add here your custom variables
|
||||||
|
|
||||||
|
float hatchOffsetY = 5.0;
|
||||||
|
float lumThreshold01 = 0.9;
|
||||||
|
float lumThreshold02 = 0.7;
|
||||||
|
float lumThreshold03 = 0.5;
|
||||||
|
float lumThreshold04 = 0.3;
|
||||||
|
|
||||||
|
void main()
|
||||||
|
{
|
||||||
|
vec3 tc = vec3(1.0, 1.0, 1.0);
|
||||||
|
float lum = length(texture2D(texture0, fragTexCoord).rgb);
|
||||||
|
|
||||||
|
if (lum < lumThreshold01)
|
||||||
|
{
|
||||||
|
if (mod(gl_FragCoord.x + gl_FragCoord.y, 10.0) == 0.0) tc = vec3(0.0, 0.0, 0.0);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (lum < lumThreshold02)
|
||||||
|
{
|
||||||
|
if (mod(gl_FragCoord .x - gl_FragCoord .y, 10.0) == 0.0) tc = vec3(0.0, 0.0, 0.0);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (lum < lumThreshold03)
|
||||||
|
{
|
||||||
|
if (mod(gl_FragCoord .x + gl_FragCoord .y - hatchOffsetY, 10.0) == 0.0) tc = vec3(0.0, 0.0, 0.0);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (lum < lumThreshold04)
|
||||||
|
{
|
||||||
|
if (mod(gl_FragCoord .x - gl_FragCoord .y - hatchOffsetY, 10.0) == 0.0) tc = vec3(0.0, 0.0, 0.0);
|
||||||
|
}
|
||||||
|
|
||||||
|
gl_FragColor = vec4(tc, 1.0);
|
||||||
|
}
|
||||||
Some files were not shown because too many files have changed in this diff Show more
Loading…
Reference in a new issue