Merge remote-tracking branch 'origin/master' into rewind
This commit is contained in:
commit
a15c9529a5
24
.travis.yml
24
.travis.yml
@ -21,17 +21,21 @@ addons:
|
||||
apt:
|
||||
packages:
|
||||
- build-essential
|
||||
- libogg-dev
|
||||
- libvorbis-dev
|
||||
- libopenal-dev
|
||||
- libxxf86vm-dev
|
||||
- libcurl4-openssl-dev
|
||||
- libfribidi-dev
|
||||
- libbluetooth-dev
|
||||
- libgl1-mesa-dev
|
||||
- libglu1-mesa-dev
|
||||
- libglew-dev
|
||||
- cmake
|
||||
- libbluetooth-dev
|
||||
- libcurl4-gnutls-dev
|
||||
- libfreetype6-dev
|
||||
- libfribidi-dev
|
||||
- libgl1-mesa-dev
|
||||
- libjpeg-dev
|
||||
- libogg-dev
|
||||
- libopenal-dev
|
||||
- libpng-dev
|
||||
- libvorbis-dev
|
||||
- libxrandr-dev
|
||||
- mesa-common-dev
|
||||
- pkg-config
|
||||
- zlib1g-dev
|
||||
|
||||
before_script:
|
||||
- export THREADS=$((`nproc` + 1))
|
||||
|
17
CHANGELOG.md
17
CHANGELOG.md
@ -1,4 +1,19 @@
|
||||
## SupertTuxKart 0.9.1
|
||||
## SuperTuxKart 0.9.2
|
||||
* Ghost replay races by Benau
|
||||
* Battle mode AI by Benau
|
||||
* Soccer mode AI by Benau
|
||||
* New icy soccer field by samuncle and Benau
|
||||
* New subsea track by samuncle
|
||||
* New volcano track by Ponzino
|
||||
* TTF font rendering by Benau
|
||||
* Kart properties refactor by Flakebi
|
||||
* Scripting work under the hood
|
||||
* Work on the track editor by mhp
|
||||
* Tweak to challenges
|
||||
* New farm track song by 0zone0ne and Krobonil
|
||||
* Bugfixes
|
||||
|
||||
## SuperTuxKart 0.9.1
|
||||
* Many bug fixes
|
||||
* Started to use scripting in tracks
|
||||
* Significant audio performance improvements
|
||||
|
@ -20,6 +20,10 @@ option(CHECK_ASSETS "Check if assets are installed in ../stk-assets" ON)
|
||||
option(USE_SYSTEM_ANGELSCRIPT "Use system angelscript instead of built-in angelscript. If you enable this option, make sure to use a compatible version." OFF)
|
||||
option(ENABLE_NETWORK_MULTIPLAYER "Enable network multiplayer. This will replace the online profile GUI in the main menu with the network multiplayer GUI" OFF)
|
||||
|
||||
if (UNIX AND NOT APPLE)
|
||||
option(USE_GLES2 "Use OpenGL ES2 renderer" OFF)
|
||||
endif()
|
||||
|
||||
if(MSVC AND (MSVC_VERSION LESS 1900))
|
||||
# Normally hide the option to build wiiuse on VS, since it depends
|
||||
# on the installation of the Windows DDK (Driver Developer Kit),
|
||||
@ -39,6 +43,7 @@ endif()
|
||||
if(UNIX AND NOT APPLE)
|
||||
option(USE_XRANDR "Use xrandr instead of vidmode" ON)
|
||||
option(USE_ASAN "Build with Leak/Address sanitizer" OFF)
|
||||
option(USE_LIBBFD "Use libbfd for crash reporting and leak check" OFF)
|
||||
endif()
|
||||
|
||||
set(STK_SOURCE_DIR "src")
|
||||
@ -59,6 +64,10 @@ if(WIN32)
|
||||
add_definitions(-D_IRR_STATIC_LIB_)
|
||||
endif()
|
||||
|
||||
if(USE_GLES2)
|
||||
add_definitions(-DUSE_GLES2)
|
||||
endif()
|
||||
|
||||
# Build the Bullet physics library
|
||||
add_subdirectory("${PROJECT_SOURCE_DIR}/lib/bullet")
|
||||
include_directories("${PROJECT_SOURCE_DIR}/lib/bullet/src")
|
||||
@ -68,8 +77,11 @@ add_subdirectory("${PROJECT_SOURCE_DIR}/lib/enet")
|
||||
include_directories("${PROJECT_SOURCE_DIR}/lib/enet/include")
|
||||
|
||||
# Build glew library
|
||||
add_subdirectory("${PROJECT_SOURCE_DIR}/lib/glew")
|
||||
include_directories("${PROJECT_SOURCE_DIR}/lib/glew/include")
|
||||
if(NOT USE_GLES2)
|
||||
add_definitions(-DGLEW_NO_GLU)
|
||||
add_subdirectory("${PROJECT_SOURCE_DIR}/lib/glew")
|
||||
include_directories("${PROJECT_SOURCE_DIR}/lib/glew/include")
|
||||
endif()
|
||||
|
||||
if((WIN32 AND NOT MINGW) OR APPLE)
|
||||
if (NOT APPLE)
|
||||
@ -194,8 +206,10 @@ if (OPENMP_FOUND)
|
||||
endif()
|
||||
|
||||
# OpenGL
|
||||
find_package(OpenGL REQUIRED)
|
||||
include_directories(${OPENGL_INCLUDE_DIR})
|
||||
if(NOT USE_GLES2)
|
||||
find_package(OpenGL REQUIRED)
|
||||
include_directories(${OPENGL_INCLUDE_DIR})
|
||||
endif()
|
||||
|
||||
if(UNIX AND NOT APPLE)
|
||||
find_package(X11 REQUIRED)
|
||||
@ -210,6 +224,17 @@ if(UNIX AND NOT APPLE)
|
||||
find_library(IRRLICHT_XF86VM_LIBRARY Xxf86vm)
|
||||
mark_as_advanced(IRRLICHT_XF86VM_LIBRARY)
|
||||
endif()
|
||||
|
||||
if(USE_LIBBFD)
|
||||
find_package(Libbfd)
|
||||
if(LIBBFD_FOUND)
|
||||
add_definitions(-DENABLE_LIBBFD)
|
||||
include_directories(${LIBBFD_INCLUDE_DIRS})
|
||||
else()
|
||||
set(USE_LIBBFD OFF CACHE BOOL "Use libbfd for crash reporting and leak check" FORCE)
|
||||
message(WARNING "Libbfd not found, disable integrated stack trace.")
|
||||
endif()
|
||||
endif()
|
||||
endif()
|
||||
|
||||
# Set some compiler options
|
||||
@ -258,7 +283,7 @@ endif()
|
||||
add_definitions(-DHAVE_OGGVORBIS)
|
||||
|
||||
if(WIN32)
|
||||
configure_file("${STK_SOURCE_DIR}/windows_installer/icon_rc.template" "${PROJECT_BINARY_DIR}/tmp/icon.rc")
|
||||
configure_file("${STK_SOURCE_DIR}/../tools/windows_installer/icon_rc.template" "${PROJECT_BINARY_DIR}/tmp/icon.rc")
|
||||
endif()
|
||||
|
||||
# Provides list of source and header files (STK_SOURCES and STK_HEADERS)
|
||||
@ -342,16 +367,20 @@ target_link_libraries(supertuxkart
|
||||
bulletcollision
|
||||
bulletmath
|
||||
enet
|
||||
glew
|
||||
stkirrlicht
|
||||
${Angelscript_LIBRARIES}
|
||||
${CURL_LIBRARIES}
|
||||
${OGGVORBIS_LIBRARIES}
|
||||
${OPENAL_LIBRARY}
|
||||
${OPENGL_LIBRARIES}
|
||||
${FREETYPE_LIBRARIES}
|
||||
)
|
||||
|
||||
if(NOT USE_GLES2)
|
||||
target_link_libraries(supertuxkart ${OPENGL_LIBRARIES} glew)
|
||||
else()
|
||||
target_link_libraries(supertuxkart EGL GLESv2)
|
||||
endif()
|
||||
|
||||
if(UNIX AND NOT APPLE)
|
||||
target_link_libraries(supertuxkart ${X11_LIBRARIES})
|
||||
if(USE_XRANDR)
|
||||
@ -359,12 +388,20 @@ if(UNIX AND NOT APPLE)
|
||||
else()
|
||||
target_link_libraries(supertuxkart ${IRRLICHT_XF86VM_LIBRARY})
|
||||
endif()
|
||||
if(USE_LIBBFD)
|
||||
target_link_libraries(supertuxkart ${LIBBFD_LIBRARIES})
|
||||
endif()
|
||||
if(USE_ASAN)
|
||||
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fsanitize=address -fno-omit-frame-pointer")
|
||||
target_link_libraries(supertuxkart "-fsanitize=address")
|
||||
endif()
|
||||
endif()
|
||||
|
||||
# FreeBSD does not search in /usr/local/lib, but at least Freetype is installed there :(
|
||||
if(${CMAKE_SYSTEM_NAME} MATCHES "FreeBSD")
|
||||
SET(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -L/usr/local/lib")
|
||||
endif()
|
||||
|
||||
if(APPLE)
|
||||
# In theory it would be cleaner to let CMake detect the right dependencies. In practice, this means that if a OSX user has
|
||||
# unix-style installs of Vorbis/Ogg/OpenAL/etc. they will be picked up over our frameworks. This is blocking when I make releases :
|
||||
|
16
INSTALL.md
16
INSTALL.md
@ -1,11 +1,12 @@
|
||||
# SuperTuxKart Installation Instructions
|
||||
|
||||
Note: If you obtained this source code from Github, you also need to download the game assets from Sourceforge using SVN.
|
||||
Note: If you obtained this source code from Github, you also need to download
|
||||
the game assets from Sourceforge using SVN.
|
||||
|
||||
`svn checkout https://svn.code.sf.net/p/supertuxkart/code/stk-assets stk-assets`
|
||||
|
||||
Place the `stk-assets` folder next to the source root `stk-code` folder.
|
||||
See <http://supertuxkart.sourceforge.net/Source_control> for more information
|
||||
See <https://supertuxkart.net/Source_control> for more information
|
||||
|
||||
|
||||
## Building STK on Linux
|
||||
@ -16,6 +17,7 @@ First, make sure that you have the following packages installed:
|
||||
* OpenAL (recommended: openal-soft-devel)
|
||||
* Ogg (libogg-dev)
|
||||
* Vorbis (libvorbis-dev)
|
||||
* Freetype (libfreetype6-dev)
|
||||
* libcurl (libcurl-devel)
|
||||
* libbluetooth (bluez-devel)
|
||||
* libpng (libpng-devel)
|
||||
@ -25,8 +27,10 @@ First, make sure that you have the following packages installed:
|
||||
Ubuntu command:
|
||||
|
||||
```
|
||||
sudo apt-get install autoconf automake build-essential cmake libogg-dev libvorbis-dev libopenal-dev libxxf86vm-dev \
|
||||
libgl1-mesa-dev libglu1-mesa-dev libcurl4-openssl-dev libfribidi-dev libbluetooth-dev libxrandr-dev
|
||||
sudo apt-get install build-essential cmake libbluetooth-dev \
|
||||
libcurl4-gnutls-dev libfreetype6-dev libfribidi-dev libgl1-mesa-dev \
|
||||
libjpeg-dev libogg-dev libopenal-dev libpng-dev libvorbis-dev libxrandr-dev \
|
||||
mesa-common-dev pkg-config zlib1g-dev
|
||||
```
|
||||
|
||||
Unpack the files from the tarball like this:
|
||||
@ -71,8 +75,8 @@ location, specify `CMAKE_INSTALL_PREFIX` when running cmake, e.g.:
|
||||
|
||||
|
||||
## Building STK on OS X
|
||||
See <http://supertuxkart.sourceforge.net/Building_and_packaging_on_OSX>
|
||||
See <https://supertuxkart.net/Building_and_packaging_on_OSX>
|
||||
|
||||
|
||||
## Building STK on Windows
|
||||
See <http://supertuxkart.sourceforge.net/How_to_build_the_Windows_version>
|
||||
See <https://supertuxkart.net/How_to_build_the_Windows_version>
|
||||
|
42
README.md
42
README.md
@ -1,57 +1,47 @@
|
||||
# SuperTuxKart
|
||||
[![Build Status](https://travis-ci.org/supertuxkart/stk-code.png?branch=master)](https://travis-ci.org/supertuxkart/stk-code)
|
||||
|
||||
SuperTuxKart is a free kart racing game. It is focusing on fun and
|
||||
not on realistic kart physics. Instruction can be found on the
|
||||
in-game help page.
|
||||
SuperTuxKart is a free kart racing game. It focuses on fun and not on realistic kart physics. Instructions can be found on the in-game help page.
|
||||
|
||||
The SuperTuxKart homepage can be found at: <http://supertuxkart.sourceforge.net>
|
||||
The SuperTuxKart homepage can be found at: <https://supertuxkart.net/>
|
||||
|
||||
The official SuperTuxKart forum is at <http://supertuxkart.sourceforge.net/forum>. If you need support,
|
||||
this would be the best place to start.
|
||||
The official SuperTuxKart forum is at <http://forum.freegamedev.net/viewforum.php?f=16>. If you need support, this would be the best place to start.
|
||||
|
||||
Hope you enjoy the game.
|
||||
|
||||
-- The SuperTuxKart development team.
|
||||
|
||||
|
||||
## Hardware Requirements
|
||||
* You need a 3D graphics card. (NVIDIA GeForce 8xxx and higher, ATI Radeon HD 4xxx and higher or Intel HD 3000 and higher)
|
||||
* You need a 3D graphics card. (NVIDIA GeForce 8xxx and higher, ATI Radeon HD 4xxx and higher or Intel HD 3000 and higher.)
|
||||
* You should have a CPU that's running at 1GHz or better.
|
||||
* You'll need at least 512 MB of free VRAM (video memory).
|
||||
* Disk space: 400MB
|
||||
* Ideally, you want a joystick with at least 6 buttons.
|
||||
|
||||
|
||||
## Compiling SuperTuxKart
|
||||
|
||||
### Windows
|
||||
1. Install VS 2013 (or later). The free express versions work fine.
|
||||
2. Download and install a source package - either a released package or from our [git/svn repositories](http://supertuxkart.sourceforge.net/Source_control)
|
||||
3. Download the latest dependency package depdendencies_for_0.8.2.zip from [here](https://sourceforge.net/projects/supertuxkart/files/SuperTuxKart%20Dependencies/Windows/). Unzip it in the root directory, so that the dependencies directory is next to the src and data directory (if you are updating from a previous dependency package, you can delete the .dll files in the root directory, they are not needed anymore).
|
||||
4. Download cmake and install it. Then start cmake-gui and select the STK root directory as 'Where is the source code', and a new directory in the root directory (next to src, data etc) as build directory (for now I assume that this directory is called bld).
|
||||
5. Click on configure. You will be asked to create the directory (yes), then for your VS version. Make sure to select the right version (be aware of the easy to confuse version numbers: VS 2013 = version 12). Click on configure, then generate. This will create the directory 'bld', and a VS solution in that directory.
|
||||
6. In Visual Studio open the project file generated in the 'bld' folder
|
||||
2. Download and install a source package - either a released package or from our [git/svn repositories](https://supertuxkart.net/Source_control).
|
||||
3. Download the latest dependency package from [here](https://sourceforge.net/projects/supertuxkart/files/SuperTuxKart%20Dependencies/Windows/). Unzip it in the root directory, so that the dependencies directory is next to the src and data directories (if you are updating from a previous dependency package, you can delete the .dll files in the root directory, they are not needed anymore).
|
||||
4. Download cmake and install it. Then start cmake-gui and select the STK root directory as 'Where is the source code', and a new directory in the root directory (next to src, data etc) as the build directory (for now I assume that this directory is called bld).
|
||||
5. Click on configure. You will be asked to create the directory (yes), then for your VS version. Make sure you select the right version (be aware of the easy to confuse version numbers: VS 2013 = version 12). Click on configure, then generate. This will create the directory 'bld', and a VS solution in that directory.
|
||||
6. In Visual Studio open the project file generated in the 'bld' folder.
|
||||
7. Right click on the supertuxkart project in the solution explorer, and select "Set as StartUp Project".
|
||||
8. Select Build->Build Solution (or press F7) to compile.
|
||||
|
||||
Compilation with cygwin is not officially supported, but
|
||||
this has been done (check with the forum for details).
|
||||
See <https://supertuxkart.net/How_to_build_the_Windows_version> for more information.
|
||||
|
||||
Compilation with cygwin is not officially supported, but this has been done (check with the forum for details).
|
||||
|
||||
### Mac OS X
|
||||
The latest information about compilation on Mac are on our wiki:
|
||||
<http://supertuxkart.sourceforge.net/Building_and_packaging_on_OSX>
|
||||
The latest information about compilation on Mac are at our site: <https://supertuxkart.net/Building_and_packaging_on_OSX>
|
||||
|
||||
### UNIX
|
||||
See [`INSTALL.md`](INSTALL.md) for details.
|
||||
|
||||
|
||||
## License
|
||||
This software is released under the GNU General Public License (GPL) which
|
||||
can be found in the file [`COPYING`](/COPYING) in the same directory as this file.
|
||||
Information about the licenses for artwork are contained in
|
||||
`data/licenses`.
|
||||
|
||||
This software is released under the GNU General Public License (GPL) which can be found in the file [`COPYING`](/COPYING) in the same directory as this file. Information about the licenses for artwork are contained in `data/licenses`.
|
||||
|
||||
## 3D coordinates
|
||||
A reminder for those looking at the code and 3d models:
|
||||
@ -60,6 +50,4 @@ STK : X right, Y up, Z forwards
|
||||
|
||||
Blender: X right, Y forwards, Z up
|
||||
|
||||
The exporters perform the needed transform, so in Blender you just work
|
||||
with XY plane as ground, and things will appear fine in STK (using XZ
|
||||
as ground in the code, obviously).
|
||||
The exporters perform the needed transform, so in Blender you just work with XY plane as ground, and things will appear fine in STK (using XZ as ground in the code, obviously).
|
||||
|
31
TODO.md
31
TODO.md
@ -4,30 +4,27 @@ SuperTuxKart is looking for additional man power to make this
|
||||
one of the best free linux games out there :) We need (in
|
||||
no particular order):
|
||||
|
||||
1. Musicians/sound engineers
|
||||
- Create additional background soundtrack
|
||||
- Musicians/sound engineers
|
||||
- Create additional background soundtracks
|
||||
- Create sound effects
|
||||
2. Artists and track designer
|
||||
- Artists and track designer
|
||||
- Create additional tracks
|
||||
- Create additional art work for tracks,
|
||||
background images
|
||||
3. Developers
|
||||
- Create additional artwork for tracks and background images
|
||||
- Developers
|
||||
- Work on network play support
|
||||
- Check our bug and enhancement request tracker on
|
||||
https://github.com/supertuxkart/stk-code/issues
|
||||
- Extend the current web page, keep it up to date
|
||||
4. Tester
|
||||
- For just about everything
|
||||
- Esp. different platforms and graphics cards
|
||||
5. Writers
|
||||
- Write documentation, ranging from man page, to
|
||||
a description for the web, to a design document, ...
|
||||
- Extend the current web page and keep it up to date
|
||||
- Testers
|
||||
- For just about everything, especially different platforms and graphics cards
|
||||
- Writers
|
||||
- Write documentation, ranging from man page, to a description for the web, to a design document, etc...
|
||||
|
||||
If you want to help the SuperTuxKart - Project, please
|
||||
contact us on the email list: [supertuxkart-devel@lists.sourceforge.net](mailto:supertuxkart-devel@lists.sourceforge.net)
|
||||
If you want to help the SuperTuxKart Project, please contact us on the email list: [supertuxkart-devel@lists.sourceforge.net](mailto:supertuxkart-devel@lists.sourceforge.net)
|
||||
|
||||
Thanks in advance!
|
||||
|
||||
-- The SuperTuxKart-Team
|
||||
-- The SuperTuxKart Team
|
||||
|
||||
|
||||
For details, see <http://supertuxkart.sourceforge.net/Get_involved>
|
||||
For details, see <http://supertuxkart.net/Community>
|
||||
|
89
cmake/FindLibbfd.cmake
Normal file
89
cmake/FindLibbfd.cmake
Normal file
@ -0,0 +1,89 @@
|
||||
# - Try to find libbfd
|
||||
# Once done this will define
|
||||
#
|
||||
# LIBBFD_FOUND - system has libbfd
|
||||
# LIBBFD_INCLUDE_DIRS - the libbfd include directory
|
||||
# LIBBFD_LIBRARIES - Link these to use libbfd
|
||||
# LIBBFD_DEFINITIONS - Compiler switches required for using libbfd
|
||||
#
|
||||
# Based on:
|
||||
#
|
||||
# Copyright (c) 2008 Bernhard Walle <bernhard.walle@gmx.de>
|
||||
#
|
||||
# Redistribution and use is allowed according to the terms of the New
|
||||
# BSD license.
|
||||
# For details see the accompanying COPYING-CMAKE-SCRIPTS file.
|
||||
#
|
||||
|
||||
|
||||
if (LIBBFD_LIBRARIES AND LIBBFD_INCLUDE_DIRS)
|
||||
set (LIBBFD_FIND_QUIETLY TRUE)
|
||||
endif ()
|
||||
|
||||
find_path (LIBBFD_INCLUDE_DIRS
|
||||
NAMES
|
||||
bfd.h
|
||||
dis-asm.h
|
||||
PATHS
|
||||
/usr/include
|
||||
/usr/local/include
|
||||
/opt/local/include
|
||||
/opt/include
|
||||
ENV CPATH)
|
||||
|
||||
# Ugly, yes ugly...
|
||||
find_library (LIBBFD_BFD_LIBRARY
|
||||
NAMES
|
||||
bfd
|
||||
PATHS
|
||||
/usr/lib
|
||||
/usr/lib64
|
||||
/usr/local/lib
|
||||
/usr/local/lib64
|
||||
/usr/include
|
||||
/opt/local/lib
|
||||
/opt/usr/lib64
|
||||
ENV LIBRARY_PATH
|
||||
ENV LD_LIBRARY_PATH)
|
||||
|
||||
#find_library (LIBBFD_IBERTY_LIBRARY
|
||||
# NAMES
|
||||
# iberty
|
||||
# PATHS
|
||||
# /usr/lib
|
||||
# /usr/lib64
|
||||
# /usr/local/lib
|
||||
# /usr/local/lib64
|
||||
# /usr/include
|
||||
# /opt/local/lib
|
||||
# /opt/usr/lib64
|
||||
# ENV LIBRARY_PATH
|
||||
# ENV LD_LIBRARY_PATH)
|
||||
|
||||
#find_library (LIBBFD_OPCODES_LIBRARY
|
||||
# NAMES
|
||||
# opcodes
|
||||
# PATHS
|
||||
# /usr/lib
|
||||
# /usr/lib64
|
||||
# /usr/local/lib
|
||||
# /usr/local/lib64
|
||||
# /usr/include
|
||||
# /opt/local/lib
|
||||
# /opt/usr/lib64
|
||||
# ENV LIBRARY_PATH
|
||||
# ENV LD_LIBRARY_PATH)
|
||||
|
||||
|
||||
include (FindPackageHandleStandardArgs)
|
||||
|
||||
|
||||
# handle the QUIETLY and REQUIRED arguments and set LIBBFD_FOUND to TRUE if all listed variables are TRUE
|
||||
FIND_PACKAGE_HANDLE_STANDARD_ARGS(LIBBFD DEFAULT_MSG
|
||||
LIBBFD_BFD_LIBRARY
|
||||
# LIBBFD_IBERTY_LIBRARY
|
||||
# LIBBFD_OPCODES_LIBRARY
|
||||
LIBBFD_INCLUDE_DIRS)
|
||||
|
||||
set(LIBBFD_LIBRARIES "${LIBBFD_BFD_LIBRARY}")
|
||||
mark_as_advanced(LIBBFD_INCLUDE_DIRS LIBBFD_LIBRARIES LIBBFD_BFD_LIBRARY)
|
BIN
data/CREDITS
BIN
data/CREDITS
Binary file not shown.
@ -1,19 +1,19 @@
|
||||
<?xml version="1.0"?>
|
||||
<challenge version="2">
|
||||
<track id="subsea" laps="2"/>
|
||||
<track id="abyss" laps="3"/>
|
||||
<mode major="single" minor="quickrace"/>
|
||||
<requirements trophies="0"/>
|
||||
|
||||
<hard>
|
||||
<karts number="5"/>
|
||||
<requirements position="1" time="205"/>
|
||||
<requirements position="1" time="160"/>
|
||||
</hard>
|
||||
<medium>
|
||||
<karts number="4"/>
|
||||
<requirements time="258"/>
|
||||
<requirements time="185"/>
|
||||
</medium>
|
||||
<easy>
|
||||
<karts number="4"/>
|
||||
<requirements time="330"/>
|
||||
<requirements time="270"/>
|
||||
</easy>
|
||||
</challenge>
|
@ -2,7 +2,7 @@
|
||||
<challenge version="2">
|
||||
<track id="cocoa_temple" laps="3"/>
|
||||
<mode major="single" minor="quickrace"/>
|
||||
<requirements trophies="15"/>
|
||||
<requirements trophies="5"/>
|
||||
|
||||
<hard>
|
||||
<karts number="5"/>
|
||||
|
19
data/challenges/volcano_island.challenge
Normal file
19
data/challenges/volcano_island.challenge
Normal file
@ -0,0 +1,19 @@
|
||||
<?xml version="1.0"?>
|
||||
<challenge version="2">
|
||||
<track id="volcano_island" laps="2"/>
|
||||
<mode major="single" minor="quickrace"/>
|
||||
<requirements trophies="15"/>
|
||||
|
||||
<hard>
|
||||
<karts number="5"/>
|
||||
<requirements position="1"/>
|
||||
</hard>
|
||||
<medium>
|
||||
<karts number="4"/>
|
||||
<requirements position="1"/>
|
||||
</medium>
|
||||
<easy>
|
||||
<karts number="4"/>
|
||||
<requirements position="1"/>
|
||||
</easy>
|
||||
</challenge>
|
@ -4,7 +4,7 @@
|
||||
<track id="sandtrack" laps="3" reverse="false" />
|
||||
<track id="farm" laps="3" reverse="false" />
|
||||
<track id="olivermath" laps="4" reverse="false" />
|
||||
<track id="subsea" laps="2" reverse="false" />
|
||||
<track id="abyss" laps="3" reverse="false" />
|
||||
<track id="scotland" laps="3" reverse="false" />
|
||||
|
||||
</supertuxkart_grand_prix>
|
||||
|
@ -5,7 +5,7 @@
|
||||
<track id="greenvalley" laps="2" reverse="false" />
|
||||
<track id="mansion" laps="3" reverse="false" />
|
||||
<track id="stk_enterprise" laps="3" reverse="false" />
|
||||
<track id="city" laps="2" reverse="false" />
|
||||
<track id="volcano_island" laps="2" reverse="false" />
|
||||
|
||||
</supertuxkart_grand_prix>
|
||||
|
||||
|
@ -4,24 +4,28 @@
|
||||
<card is="Intel(R) HD Graphics 3000" os="windows" disable="AdvancedPipeline"/>
|
||||
<card is="Intel(R) HD Graphics 3000" os="windows" disable="FramebufferSRGBWorking"/>
|
||||
<card contains="Intel" os="osx" disable="GI"/>
|
||||
<card contains="Intel" os="linux" version="<12.0" disable="ComputeShader"/>
|
||||
<card contains="Intel" os="linux" version="<12.0" disable="FramebufferSRGBCapable"/>
|
||||
<card contains="Intel" disable="TextureCompressionS3TC"/>
|
||||
<card contains="Intel" os="linux" version="<11.2" disable="ComputeShader"/>
|
||||
<card contains="Intel" os="linux" version="<11.2" disable="GeometryShader"/>
|
||||
<card contains="Intel" os="linux" version="<16.0" disable="FramebufferSRGBCapable"/>
|
||||
<card contains="Intel" os="linux" version="<11.2" disable="TextureCompressionS3TC"/>
|
||||
<card contains="Intel" os="windows" disable="TextureCompressionS3TC"/>
|
||||
<card contains="Intel" os="osx" disable="TextureCompressionS3TC"/>
|
||||
<card contains="Intel" os="windows" disable="HighDefinitionTextures"/>
|
||||
<card contains="NVIDIA" os="windows" version="<344.65" disable="BufferStorage"/>
|
||||
<card contains="NVIDIA" os="linux" version="<343.22" disable="BufferStorage"/>
|
||||
<card contains="NVIDIA" disable="ShaderAtomicCounters"/>
|
||||
<card contains="Mesa" os="linux" version="<10.3" disable="BufferStorage"/>
|
||||
<card contains="Mesa" os="linux" version="<10.3" disable="DriverRecentEnough"/>
|
||||
<card contains="Mesa" os="linux" version="<10.6" disable="GeometryShader4"/>
|
||||
<card contains="Mesa" os="linux" disable="TextureCompressionS3TC"/>
|
||||
<card contains="Mesa" os="linux" version="<11.2" disable="GeometryShader"/>
|
||||
<card contains="Mesa" os="linux" version="<11.2" disable="TextureCompressionS3TC"/>
|
||||
<card contains="Gallium" os="linux" version="<10.3" disable="BufferStorage"/>
|
||||
<card contains="Gallium" os="linux" version="<10.3" disable="DriverRecentEnough"/>
|
||||
<card contains="Gallium" os="linux" version="<10.6" disable="GeometryShader4"/>
|
||||
<card contains="Gallium" os="linux" disable="TextureCompressionS3TC"/>
|
||||
<card contains="Gallium" os="linux" version="<11.2" disable="GeometryShader"/>
|
||||
<card contains="Gallium" os="linux" version="<11.2" disable="TextureCompressionS3TC"/>
|
||||
<!-- On osx radeon appears to have different version numbers, e.g.
|
||||
1.32.20 -->
|
||||
<card contains="Radeon" os="linux" version="<14.300" disable="DriverRecentEnough"/>
|
||||
<card contains="Radeon" os="windows" version="<14.300" disable="DriverRecentEnough"/>
|
||||
<card contains="ATI" os="windows" version="<14.300" disable="DriverRecentEnough"/>
|
||||
</graphical-restrictions>
|
||||
|
||||
|
@ -12,7 +12,15 @@
|
||||
<list id="replay_list" x="0" y="0" width="100%" height="100%"/>
|
||||
</box>
|
||||
|
||||
<spacer width="100%" height="2%" />
|
||||
<button x="1%" id="record-ghost" I18N="In the ghost replay selection screen" text="Record ghost replay" />
|
||||
<div width="99%" align="center" layout="vertical-row" height="fit">
|
||||
<div width="100%" height="fit" layout="horizontal-row" >
|
||||
<checkbox width="fit" id="replay_difficulty_toggle" text_align="left"/>
|
||||
<spacer width="10"/>
|
||||
<label proportion="1" height="100%" text_align="left" I18N="In the ghost replay selection screen" text="Only show replays matching the current difficulty"/>
|
||||
</div>
|
||||
</div>
|
||||
<spacer width="100%" height="1%" />
|
||||
<button x="1%" id="record-ghost" I18N="In the ghost replay selection screen" text="Record ghost replay"/>
|
||||
|
||||
</div>
|
||||
</stkgui>
|
||||
|
@ -1,8 +1,9 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<stkgui>
|
||||
<div x="2%" y="2%" width="96%" height="96%" layout="horizontal-row">
|
||||
<button id="continue" width="250" align="bottom" text="Continue"/>
|
||||
<spacer width="20"/>
|
||||
<button id="save" width="250" align="bottom" text="Save Grand Prix"/>
|
||||
<div x="2%" y="2%" width="96%" height="96%" layout="vertical-row">
|
||||
<spacer proportion="1"/>
|
||||
<button id="save" width="450" align="center" text="Save Grand Prix"/>
|
||||
<spacer height="20"/>
|
||||
<button id="continue" width="450" align="center" text="Continue"/>
|
||||
</div>
|
||||
</stkgui>
|
||||
|
@ -1,9 +1,10 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<stkgui>
|
||||
<div x="2%" y="2%" width="96%" height="96%" layout="horizontal-row">
|
||||
<button id="continue" width="250" align="bottom" text="Continue"/>
|
||||
<spacer width="20"/>
|
||||
<button id="save" width="250" align="bottom" text="Save Grand Prix"/>
|
||||
<div x="2%" y="2%" width="96%" height="96%" layout="vertical-row">
|
||||
<spacer proportion="1"/>
|
||||
<button id="save" width="450" align="center" text="Save Grand Prix"/>
|
||||
<spacer height="20"/>
|
||||
<button id="continue" width="450" align="center" text="Continue"/>
|
||||
</div>
|
||||
</stkgui>
|
||||
|
||||
|
Binary file not shown.
Before Width: | Height: | Size: 7.9 KiB After Width: | Height: | Size: 23 KiB |
@ -13,7 +13,7 @@
|
||||
square_items="true" child_width="128" child_height="128" />
|
||||
|
||||
<spacer height="15" width="10"/>
|
||||
<div width="90%" align="center" layout="vertical-row" height="fit">
|
||||
<div width="90%" align="center" layout="vertical-row" proportion="1">
|
||||
<div width="100%" height="fit" layout="horizontal-row" >
|
||||
<checkbox width="fit" id="online" I18N="In the user screen" text_align="left"/>
|
||||
<spacer width="10"/>
|
||||
@ -44,23 +44,29 @@
|
||||
I18N="In the user screen" text="Password"/>
|
||||
<textbox id="password" proportion="2" height="fit" I18N="In the user screen"/>
|
||||
</div>
|
||||
|
||||
<spacer height="20" width="20"/>
|
||||
|
||||
<label id="message" width="100%" text_align="center"/>
|
||||
</div>
|
||||
<div width="80%" align="center" layout="vertical-row" height="fit">
|
||||
<label id="message" width="80%" align="center" text_align="left"/>
|
||||
</div>
|
||||
<spacer width="20" height="25"/>
|
||||
<buttonbar id="options" width="90%" height="13%" align="bottom">
|
||||
<icon-button id="ok" width="64" height="64" icon="gui/green_check.png"
|
||||
I18N="In the user screen" text="OK" label_location="bottom"/>
|
||||
<icon-button id="new_user" width="64" height="64" icon="gui/blue_plus.png"
|
||||
I18N="In the user screen" text="Add user" label_location="bottom"/>
|
||||
<icon-button id="delete" width="64" height="64" icon="gui/remove.png"
|
||||
I18N="In the user screen" text="Delete" label_location="bottom"/>
|
||||
<icon-button id="rename" width="64" height="64" icon="gui/rename.png"
|
||||
I18N="In the user screen" text="Rename" label_location="bottom"/>
|
||||
<icon-button id="cancel" width="64" height="64" icon="gui/main_quit.png"
|
||||
I18N="In the user screen" text="Cancel" label_location="bottom"/>
|
||||
</buttonbar>
|
||||
|
||||
<spacer width="20" proportion="1"/>
|
||||
|
||||
<div width="90%" align="center" layout="vertical-row" height="fit">
|
||||
<buttonbar id="options" width="100%" height="80" align="center">
|
||||
<icon-button id="ok" width="64" height="64" icon="gui/green_check.png"
|
||||
I18N="In the user screen" text="OK" label_location="bottom"/>
|
||||
<icon-button id="new_user" width="64" height="64" icon="gui/blue_plus.png"
|
||||
I18N="In the user screen" text="Add user" label_location="bottom"/>
|
||||
<icon-button id="delete" width="64" height="64" icon="gui/remove.png"
|
||||
I18N="In the user screen" text="Delete" label_location="bottom"/>
|
||||
<icon-button id="rename" width="64" height="64" icon="gui/rename.png"
|
||||
I18N="In the user screen" text="Rename" label_location="bottom"/>
|
||||
<icon-button id="cancel" width="64" height="64" icon="gui/main_quit.png"
|
||||
I18N="In the user screen" text="Cancel" label_location="bottom"/>
|
||||
</buttonbar>
|
||||
</div>
|
||||
<spacer width="20" height="25"/>
|
||||
</box>
|
||||
<spacer width="20" height="15"/>
|
||||
</div>
|
||||
|
@ -187,7 +187,7 @@
|
||||
max: maximum leaning (i.e. when steering as much as possible at highest
|
||||
speed), in degrees.
|
||||
speed: Speed with which the leaning changes (in degree/second). -->
|
||||
<lean max="8.6" speed="5.0" />
|
||||
<lean max="6.6" speed="15.0" />
|
||||
|
||||
|
||||
<!-- ********** Items ********** -->
|
||||
|
File diff suppressed because it is too large
Load Diff
@ -1,5 +1,5 @@
|
||||
#!/usr/bin/env python
|
||||
|
||||
# -*- coding: utf-8 -*-
|
||||
# A simple script that adds all authors from transifex, which are
|
||||
# listed in comments at the beginning of the file, to the
|
||||
# 'translator-credits' translations - where launchpad added them
|
||||
@ -19,75 +19,79 @@ import re
|
||||
import sys
|
||||
|
||||
if __name__ == "__main__":
|
||||
if len(sys.argv)!=2:
|
||||
if len(sys.argv) < 2:
|
||||
print "Usage: getpo_authors.py PATH_TO_PO_FILE"
|
||||
sys.exit(-1)
|
||||
|
||||
f = open(sys.argv[1], "r")
|
||||
if not f:
|
||||
print "Can not find", sys.argv[1]
|
||||
exit
|
||||
lines = f.readlines()
|
||||
for filename in sys.argv[1:]:
|
||||
print("Processing file ", filename)
|
||||
f = open(filename, "r")
|
||||
if not f:
|
||||
print "Can not find", filename
|
||||
exit
|
||||
lines = f.readlines()
|
||||
|
||||
f.close()
|
||||
f.close()
|
||||
|
||||
new_authors = []
|
||||
found = 0
|
||||
new_authors = []
|
||||
found = 0
|
||||
|
||||
# Find all authors with a simple finite state machine:
|
||||
contributions = -1
|
||||
line_count = 0
|
||||
for i in lines:
|
||||
line = i[:-1] # remove \n
|
||||
if line=="# Translators:":
|
||||
found = 1
|
||||
elif found and line[:2]=="# " and line [:14]!="# FIRST AUTHOR":
|
||||
new_authors.append(line[2:])
|
||||
elif line[:5]=="msgid":
|
||||
found = 0
|
||||
elif line[:31]== "msgstr \"Launchpad Contributions":
|
||||
contributions = line_count
|
||||
line_count = line_count + 1
|
||||
# Find all authors with a simple finite state machine:
|
||||
contributions = -1
|
||||
line_count = 0
|
||||
for i in lines:
|
||||
line = i[:-1] # remove \n
|
||||
if line=="# Translators:":
|
||||
found = 1
|
||||
elif found and line[:2]=="# " and line [:14]!="# FIRST AUTHOR":
|
||||
new_authors.append(line[2:])
|
||||
elif line[:5]=="msgid":
|
||||
found = 0
|
||||
elif line[:31]== "msgstr \"Launchpad Contributions":
|
||||
contributions = line_count
|
||||
line_count = line_count + 1
|
||||
|
||||
|
||||
# Delete all email addresses - not sure if the authors
|
||||
# would want them to be published
|
||||
email=re.compile(" *<.*@.*\..*> *") # one @ and one dot at least
|
||||
for i in range(len(new_authors)):
|
||||
g = email.search(new_authors[i])
|
||||
if g:
|
||||
new_authors[i] = new_authors[i][:g.start()] \
|
||||
+ new_authors[i][g.end():]
|
||||
# Delete all email addresses - not sure if the authors
|
||||
# would want them to be published
|
||||
email=re.compile(" *<.*@.*\..*> *") # one @ and one dot at least
|
||||
for i in range(len(new_authors)):
|
||||
g = email.search(new_authors[i])
|
||||
if g:
|
||||
new_authors[i] = new_authors[i][:g.start()] \
|
||||
+ new_authors[i][g.end():]
|
||||
|
||||
# Get the old authors from the translator-credits string:
|
||||
if contributions>0:
|
||||
# Ignore the first entry, which is "msgstr ...", and the
|
||||
# last two characters, which are the '"\n'.
|
||||
old_authors = lines[contributions][:-2].split("\\n")[1:]
|
||||
for i in range(len(old_authors)):
|
||||
old_authors[i] = old_authors[i].strip()
|
||||
else:
|
||||
old_authors=[]
|
||||
|
||||
all_authors = old_authors + new_authors;
|
||||
all_authors = sorted(all_authors, key=lambda x: x.lower())
|
||||
all_authors_string = reduce(lambda x,y: x+"\\n"+y, all_authors, "")
|
||||
# Get the old authors from the translator-credits string:
|
||||
if contributions>0:
|
||||
# Ignore the first entry, which is "msgstr ...", and the
|
||||
# last two characters, which are the '"\n'.
|
||||
old_authors = lines[contributions][:-2].split("\\n")[1:]
|
||||
for i in range(len(old_authors)):
|
||||
old_authors[i] = old_authors[i].strip()
|
||||
else:
|
||||
old_authors=[]
|
||||
|
||||
all_authors = old_authors + new_authors;
|
||||
all_authors = sorted(all_authors, key=lambda x: x.lower())
|
||||
all_authors_string = reduce(lambda x,y: x+"\\n"+y, all_authors, "")
|
||||
|
||||
credits_line = "msgstr \"Launchpad Contributions:%s\"\n"%all_authors_string
|
||||
# If no old authors exists, write a new entry:
|
||||
if contributions==-1:
|
||||
lines.append("\n")
|
||||
lines.append("#: src/states_screens/credits.cpp:209\n")
|
||||
lines.append("msgid \"translator-credits\"\n")
|
||||
lines.append(credits_line)
|
||||
else:
|
||||
# Otherwise just replace the old contribution string
|
||||
lines[contributions] = credits_line
|
||||
credits_line = "msgstr \"Launchpad Contributions:%s\"\n"%all_authors_string
|
||||
# If no old authors exists, write a new entry:
|
||||
if contributions==-1:
|
||||
lines.append("\n")
|
||||
lines.append("#: src/states_screens/credits.cpp:209\n")
|
||||
lines.append("msgid \"translator-credits\"\n")
|
||||
lines.append(credits_line)
|
||||
else:
|
||||
# Otherwise just replace the old contribution string
|
||||
lines[contributions] = credits_line
|
||||
|
||||
|
||||
# Overwrite old file
|
||||
f = open(sys.argv[1], "w")
|
||||
for i in lines:
|
||||
f.write(i)
|
||||
f.close()
|
||||
# Overwrite old file
|
||||
f = open(filename, "w")
|
||||
for i in lines:
|
||||
f.write(i)
|
||||
f.close()
|
||||
|
||||
print("Done with ", filename)
|
||||
|
||||
|
2867
data/replay/standard_easy_farm.replay
Normal file
2867
data/replay/standard_easy_farm.replay
Normal file
File diff suppressed because it is too large
Load Diff
4435
data/replay/standard_easy_hacienda.replay
Normal file
4435
data/replay/standard_easy_hacienda.replay
Normal file
File diff suppressed because it is too large
Load Diff
3542
data/replay/standard_easy_island.replay
Normal file
3542
data/replay/standard_easy_island.replay
Normal file
File diff suppressed because it is too large
Load Diff
2594
data/replay/standard_expert_abyss.replay
Normal file
2594
data/replay/standard_expert_abyss.replay
Normal file
File diff suppressed because it is too large
Load Diff
2378
data/replay/standard_expert_mines.replay
Normal file
2378
data/replay/standard_expert_mines.replay
Normal file
File diff suppressed because it is too large
Load Diff
2239
data/replay/standard_expert_stkenterprise.replay
Normal file
2239
data/replay/standard_expert_stkenterprise.replay
Normal file
File diff suppressed because it is too large
Load Diff
2281
data/replay/standard_expert_xr591.replay
Normal file
2281
data/replay/standard_expert_xr591.replay
Normal file
File diff suppressed because it is too large
Load Diff
1924
data/replay/standard_intermediate_lighthouse.replay
Normal file
1924
data/replay/standard_intermediate_lighthouse.replay
Normal file
File diff suppressed because it is too large
Load Diff
2081
data/replay/standard_intermediate_snowmountain.replay
Normal file
2081
data/replay/standard_intermediate_snowmountain.replay
Normal file
File diff suppressed because it is too large
Load Diff
2515
data/replay/standard_intermediate_snowpeak.replay
Normal file
2515
data/replay/standard_intermediate_snowpeak.replay
Normal file
File diff suppressed because it is too large
Load Diff
@ -4,10 +4,10 @@ uniform sampler2D dtex;
|
||||
out vec4 Diff;
|
||||
out vec4 Spec;
|
||||
|
||||
vec3 DecodeNormal(vec2 n);
|
||||
vec4 getPosFromUVDepth(vec3 uvDepth, mat4 InverseProjectionMatrix);
|
||||
vec3 DiffuseIBL(vec3 normal);
|
||||
vec3 SpecularIBL(vec3 normal, vec3 V, float roughness);
|
||||
#stk_include "utils/decodeNormal.frag"
|
||||
#stk_include "utils/getPosFromUVDepth.frag"
|
||||
#stk_include "utils/DiffuseIBL.frag"
|
||||
#stk_include "utils/SpecularIBL.frag"
|
||||
|
||||
void main(void)
|
||||
{
|
||||
|
@ -22,7 +22,7 @@ layout (std430) buffer BoundingBoxes
|
||||
CascadeBoundingBox BB[4];
|
||||
};
|
||||
|
||||
vec4 getPosFromUVDepth(vec3 uvDepth, mat4 InverseProjectionMatrix);
|
||||
#stk_include "utils/getPosFromUVDepth.frag"
|
||||
|
||||
shared int xmin[4];
|
||||
shared int xmax[4];
|
||||
|
@ -3,7 +3,7 @@
|
||||
uniform sampler2D source;
|
||||
uniform sampler2D depth;
|
||||
uniform vec2 pixel;
|
||||
uniform layout(r16f) volatile restrict writeonly image2D dest;
|
||||
layout(r16f) volatile restrict writeonly uniform image2D dest;
|
||||
uniform float sigma = 5.;
|
||||
|
||||
layout (local_size_x = 8, local_size_y = 8) in;
|
||||
|
@ -3,12 +3,13 @@
|
||||
uniform sampler2D tex;
|
||||
uniform sampler2D depth;
|
||||
uniform vec2 pixel;
|
||||
uniform float sigma = 5.;
|
||||
|
||||
out vec4 FragColor;
|
||||
|
||||
void main()
|
||||
{
|
||||
float sigma = 5.;
|
||||
|
||||
vec2 uv = gl_FragCoord.xy * pixel;
|
||||
float X = uv.x;
|
||||
float Y = uv.y;
|
||||
@ -23,11 +24,11 @@ void main()
|
||||
g1 *= g2;
|
||||
float tmp_weight, total_weight = g0;
|
||||
for (int i = 1; i < 9; i++) {
|
||||
tmp_weight = max(0.0, 1.0 - .001 * abs(texture(depth, vec2(X - i * pixel.x, Y)).x - pixel_depth));
|
||||
sum += texture(tex, vec2(X - i * pixel.x, Y)) * g0 * tmp_weight;
|
||||
tmp_weight = max(0.0, 1.0 - .001 * abs(texture(depth, vec2(X - float(i) * pixel.x, Y)).x - pixel_depth));
|
||||
sum += texture(tex, vec2(X - float(i) * pixel.x, Y)) * g0 * tmp_weight;
|
||||
total_weight += g0 * tmp_weight;
|
||||
tmp_weight = max(0.0, 1.0 - .001 * abs(texture(depth, vec2(X + i * pixel.x, Y)).x - pixel_depth));
|
||||
sum += texture(tex, vec2(X + i * pixel.x, Y)) * g0 * tmp_weight;
|
||||
tmp_weight = max(0.0, 1.0 - .001 * abs(texture(depth, vec2(X + float(i) * pixel.x, Y)).x - pixel_depth));
|
||||
sum += texture(tex, vec2(X + float(i) * pixel.x, Y)) * g0 * tmp_weight;
|
||||
total_weight += g0 * tmp_weight;
|
||||
g0 *= g1;
|
||||
g1 *= g2;
|
||||
|
@ -3,7 +3,7 @@
|
||||
uniform sampler2D source;
|
||||
uniform sampler2D depth;
|
||||
uniform vec2 pixel;
|
||||
uniform layout(r16f) volatile restrict writeonly image2D dest;
|
||||
layout(r16f) volatile restrict writeonly uniform image2D dest;
|
||||
uniform float sigma = 5.;
|
||||
|
||||
layout (local_size_x = 8, local_size_y = 8) in;
|
||||
|
@ -3,12 +3,13 @@
|
||||
uniform sampler2D tex;
|
||||
uniform sampler2D depth;
|
||||
uniform vec2 pixel;
|
||||
uniform float sigma = 5.;
|
||||
|
||||
out vec4 FragColor;
|
||||
|
||||
void main()
|
||||
{
|
||||
float sigma = 5.;
|
||||
|
||||
vec2 uv = gl_FragCoord.xy * pixel;
|
||||
float X = uv.x;
|
||||
float Y = uv.y;
|
||||
@ -23,11 +24,11 @@ void main()
|
||||
g1 *= g2;
|
||||
float tmp_weight, total_weight = g0;
|
||||
for (int i = 1; i < 9; i++) {
|
||||
tmp_weight = max(0.0, 1.0 - .001 * abs(texture(depth, vec2(X, Y - i * pixel.y)).x - pixel_depth));
|
||||
sum += texture(tex, vec2(X, Y - i * pixel.y)) * g0 * tmp_weight;
|
||||
tmp_weight = max(0.0, 1.0 - .001 * abs(texture(depth, vec2(X, Y - float(i) * pixel.y)).x - pixel_depth));
|
||||
sum += texture(tex, vec2(X, Y - float(i) * pixel.y)) * g0 * tmp_weight;
|
||||
total_weight += g0 * tmp_weight;
|
||||
tmp_weight = max(0.0, 1.0 - .001 * abs(texture(depth, vec2(X, Y + i * pixel.y)).x - pixel_depth));
|
||||
sum += texture(tex, vec2(X, Y + i * pixel.y)) * g0 * tmp_weight;
|
||||
tmp_weight = max(0.0, 1.0 - .001 * abs(texture(depth, vec2(X, Y + float(i) * pixel.y)).x - pixel_depth));
|
||||
sum += texture(tex, vec2(X, Y + float(i) * pixel.y)) * g0 * tmp_weight;
|
||||
total_weight += g0 * tmp_weight;
|
||||
g0 *= g1;
|
||||
g1 *= g2;
|
||||
|
@ -2,17 +2,17 @@ uniform sampler2D tex;
|
||||
|
||||
out vec4 FragColor;
|
||||
|
||||
vec3 getCIEYxy(vec3 rgbColor);
|
||||
vec3 getRGBFromCIEXxy(vec3 YxyColor);
|
||||
#stk_include "utils/getCIEXYZ.frag"
|
||||
#stk_include "utils/getRGBfromCIEXxy.frag"
|
||||
|
||||
void main()
|
||||
{
|
||||
vec2 uv = gl_FragCoord.xy / 512;
|
||||
vec2 uv = gl_FragCoord.xy / 512.;
|
||||
vec3 col = texture(tex, uv).xyz;
|
||||
vec3 Yxy = getCIEYxy(col);
|
||||
vec3 WhiteYxy = getCIEYxy(vec3(1.));
|
||||
|
||||
Yxy.x = smoothstep(WhiteYxy.x, WhiteYxy.x * 4, Yxy.x);
|
||||
Yxy.x = smoothstep(WhiteYxy.x, WhiteYxy.x * 4., Yxy.x);
|
||||
|
||||
FragColor = vec4(max(vec3(0.), getRGBFromCIEXxy(Yxy)), 1.0);
|
||||
}
|
||||
|
@ -1,5 +1,5 @@
|
||||
uniform sampler2D source;
|
||||
uniform layout(r32f) restrict writeonly image2D dest;
|
||||
layout(r32f) restrict writeonly uniform image2D dest;
|
||||
uniform vec2 pixel;
|
||||
uniform float weights[7];
|
||||
|
||||
|
@ -1,5 +1,5 @@
|
||||
uniform sampler2D source;
|
||||
uniform layout(r32f) restrict writeonly image2D dest;
|
||||
layout(r32f) restrict writeonly uniform image2D dest;
|
||||
uniform vec2 pixel;
|
||||
uniform float weights[7];
|
||||
|
||||
|
@ -3,10 +3,10 @@ uniform sampler2D ntex;
|
||||
out vec4 Diff;
|
||||
out vec4 Spec;
|
||||
|
||||
vec3 DecodeNormal(vec2 n);
|
||||
vec4 getPosFromUVDepth(vec3 uvDepth, mat4 InverseProjectionMatrix);
|
||||
vec3 DiffuseIBL(vec3 normal);
|
||||
vec3 SpecularIBL(vec3 normal, vec3 V, float roughness);
|
||||
#stk_include "utils/decodeNormal.frag"
|
||||
#stk_include "utils/getPosFromUVDepth.frag"
|
||||
#stk_include "utils/DiffuseIBL.frag"
|
||||
#stk_include "utils/SpecularIBL.frag"
|
||||
|
||||
void main(void)
|
||||
{
|
||||
|
@ -12,7 +12,7 @@ in vec2 uv;
|
||||
in vec2 uv_bis;
|
||||
out vec4 FragColor;
|
||||
|
||||
vec3 getLightFactor(vec3 diffuseMatColor, vec3 specularMatColor, float specMapValue, float emitMapValue);
|
||||
#stk_include "utils/getLightFactor.frag"
|
||||
|
||||
void main(void)
|
||||
{
|
||||
|
@ -11,7 +11,7 @@ void main()
|
||||
{
|
||||
vec2 uv = gl_FragCoord.xy / screen;
|
||||
float curdepth = texture(dtex, uv).x;
|
||||
vec4 FragPos = InverseProjectionMatrix * (2.0f * vec4(uv, curdepth, 1.0f) - 1.0f);
|
||||
vec4 FragPos = InverseProjectionMatrix * (2.0 * vec4(uv, curdepth, 1.0) - 1.0);
|
||||
FragPos /= FragPos.w;
|
||||
|
||||
float depth = FragPos.z;
|
||||
@ -70,7 +70,7 @@ void main()
|
||||
col = vec4(col.rgb / 41.0, col.a);
|
||||
depth = clamp(max(1.1666 - (FragPos.z/240.0), FragPos.z - 2000.0), 0., 1.);
|
||||
|
||||
vec3 final = colOriginal.rgb * depth + col.rgb * (1 - depth);
|
||||
vec3 final = colOriginal.rgb * depth + col.rgb * (1. - depth);
|
||||
|
||||
FragColor = vec4(final, colOriginal.a);
|
||||
}
|
||||
|
@ -6,7 +6,7 @@ uniform vec3 col;
|
||||
out vec4 FragColor;
|
||||
|
||||
|
||||
vec4 getPosFromUVDepth(vec3 uvDepth, mat4 InverseProjectionMatrix);
|
||||
#stk_include "utils/getPosFromUVDepth.frag"
|
||||
|
||||
void main()
|
||||
{
|
||||
|
@ -1,5 +1,5 @@
|
||||
uniform sampler2D source;
|
||||
uniform layout(rgba16f) restrict writeonly image2D dest;
|
||||
layout(rgba16f) restrict writeonly uniform image2D dest;
|
||||
uniform vec2 pixel;
|
||||
uniform float weights[7];
|
||||
|
||||
|
@ -20,8 +20,8 @@ void main()
|
||||
g0 *= g1;
|
||||
g1 *= g2;
|
||||
for (int i = 1; i < 6; i++) {
|
||||
sum += texture(tex, vec2(X - i * pixel.x, Y)) * g0;
|
||||
sum += texture(tex, vec2(X + i * pixel.x, Y)) * g0;
|
||||
sum += texture(tex, vec2(X - float(i) * pixel.x, Y)) * g0;
|
||||
sum += texture(tex, vec2(X + float(i) * pixel.x, Y)) * g0;
|
||||
g0 *= g1;
|
||||
g1 *= g2;
|
||||
}
|
||||
|
@ -1,5 +1,5 @@
|
||||
uniform sampler2D source;
|
||||
uniform layout(rgba16f) restrict writeonly image2D dest;
|
||||
layout(rgba16f) restrict writeonly uniform image2D dest;
|
||||
uniform vec2 pixel;
|
||||
uniform float weights[7];
|
||||
|
||||
|
@ -20,8 +20,8 @@ void main()
|
||||
g0 *= g1;
|
||||
g1 *= g2;
|
||||
for (int i = 1; i < 6; i++) {
|
||||
sum += texture(tex, vec2(X, Y - i * pixel.y)) * g0;
|
||||
sum += texture(tex, vec2(X, Y + i * pixel.y)) * g0;
|
||||
sum += texture(tex, vec2(X, Y - float(i) * pixel.y)) * g0;
|
||||
sum += texture(tex, vec2(X, Y + float(i) * pixel.y)) * g0;
|
||||
g0 *= g1;
|
||||
g1 *= g2;
|
||||
}
|
||||
|
@ -14,7 +14,7 @@ uniform mat4 RHMatrix;
|
||||
uniform mat4 InvRHMatrix;
|
||||
|
||||
vec4 SHBasis (const in vec3 dir)
|
||||
{
|
||||
{
|
||||
float L00 = 0.282095;
|
||||
float L1_1 = 0.488603 * dir.y;
|
||||
float L10 = 0.488603 * dir.z;
|
||||
@ -30,8 +30,8 @@ vec3 SH2RGB (in vec4 sh_r, in vec4 sh_g, in vec4 sh_b, in vec3 dir)
|
||||
|
||||
out vec4 Diffuse;
|
||||
|
||||
vec3 DecodeNormal(vec2 n);
|
||||
vec4 getPosFromUVDepth(vec3 uvDepth, mat4 InverseProjectionMatrix);
|
||||
#stk_include "utils/decodeNormal.frag"
|
||||
#stk_include "utils/getPosFromUVDepth.frag"
|
||||
|
||||
vec3 resolution = vec3(32, 16, 32);
|
||||
|
||||
|
@ -12,8 +12,7 @@ layout(location = 12) in vec4 GlowColor;
|
||||
|
||||
flat out vec4 glowColor;
|
||||
|
||||
mat4 getWorldMatrix(vec3 translation, vec3 rotation, vec3 scale);
|
||||
mat4 getInverseWorldMatrix(vec3 translation, vec3 rotation, vec3 scale);
|
||||
#stk_include "utils/getworldmatrix.vert"
|
||||
|
||||
void main(void)
|
||||
{
|
||||
|
@ -12,7 +12,7 @@ in vec3 nor;
|
||||
in vec2 uv;
|
||||
out vec4 FragColor;
|
||||
|
||||
vec3 getLightFactor(vec3 diffuseMatColor, vec3 specularMatColor, float specMapValue, float emitMapValue);
|
||||
#stk_include "utils/getLightFactor.frag"
|
||||
|
||||
void main(void)
|
||||
{
|
||||
|
@ -13,7 +13,7 @@ in vec2 uv;
|
||||
in vec2 uv_bis;
|
||||
out vec4 FragColor;
|
||||
|
||||
vec3 getLightFactor(vec3 diffuseMatColor, vec3 specularMatColor, float specMapValue, float emitMapValue);
|
||||
#stk_include "utils/getLightFactor.frag"
|
||||
|
||||
void main(void)
|
||||
{
|
||||
|
@ -32,8 +32,7 @@ flat out sampler2D handle;
|
||||
flat out sampler2D secondhandle;
|
||||
#endif
|
||||
|
||||
mat4 getWorldMatrix(vec3 translation, vec3 rotation, vec3 scale);
|
||||
mat4 getInverseWorldMatrix(vec3 translation, vec3 rotation, vec3 scale);
|
||||
#stk_include "utils/getworldmatrix.vert"
|
||||
|
||||
void main()
|
||||
{
|
||||
|
@ -14,7 +14,7 @@ in vec3 nor;
|
||||
in vec2 uv;
|
||||
out vec4 FragColor;
|
||||
|
||||
vec3 getLightFactor(vec3 diffuseMatColor, vec3 specularMatColor, float specMapValue, float emitMapValue);
|
||||
#stk_include "utils/getLightFactor.frag"
|
||||
|
||||
void main(void)
|
||||
{
|
||||
|
@ -12,7 +12,7 @@ in vec3 bitangent;
|
||||
in vec2 uv;
|
||||
out vec3 EncodedNormal;
|
||||
|
||||
vec2 EncodeNormal(vec3 n);
|
||||
#stk_include "utils/encode_normal.frag"
|
||||
|
||||
void main()
|
||||
{
|
||||
|
@ -42,8 +42,7 @@ flat out sampler2D secondhandle;
|
||||
flat out sampler2D thirdhandle;
|
||||
#endif
|
||||
|
||||
mat4 getWorldMatrix(vec3 translation, vec3 rotation, vec3 scale);
|
||||
mat4 getInverseWorldMatrix(vec3 translation, vec3 rotation, vec3 scale);
|
||||
#stk_include "utils/getworldmatrix.vert"
|
||||
|
||||
void main(void)
|
||||
{
|
||||
|
@ -9,7 +9,7 @@ in vec3 nor;
|
||||
in vec2 uv;
|
||||
out vec3 EncodedNormal;
|
||||
|
||||
vec2 EncodeNormal(vec3 n);
|
||||
#stk_include "utils/encode_normal.frag"
|
||||
|
||||
void main(void)
|
||||
{
|
||||
|
@ -1,17 +1,22 @@
|
||||
#ifndef Use_Bindless_Texture
|
||||
uniform sampler2D Albedo;
|
||||
uniform sampler2D SpecMap;
|
||||
uniform sampler2D colorization_mask;
|
||||
#endif
|
||||
|
||||
#ifdef Use_Bindless_Texture
|
||||
flat in sampler2D handle;
|
||||
flat in sampler2D secondhandle;
|
||||
#endif
|
||||
|
||||
uniform vec2 color_change;
|
||||
|
||||
in vec2 uv;
|
||||
in vec4 color;
|
||||
out vec4 FragColor;
|
||||
|
||||
vec3 getLightFactor(vec3 diffuseMatColor, vec3 specularMatColor, float specMapValue, float emitMapValue);
|
||||
#stk_include "utils/getLightFactor.frag"
|
||||
#stk_include "utils/rgb_conversion.frag"
|
||||
|
||||
void main(void)
|
||||
{
|
||||
@ -26,8 +31,19 @@ void main(void)
|
||||
vec4 col = texture(Albedo, uv);
|
||||
float specmap = texture(SpecMap, uv).g;
|
||||
float emitmap = texture(SpecMap, uv).b;
|
||||
float mask = texture(colorization_mask, uv).a;
|
||||
#endif
|
||||
|
||||
if (color_change.x > 0.0)
|
||||
{
|
||||
vec3 old_hsv = rgbToHsv(col.rgb);
|
||||
float mask_step = step(mask, 0.5);
|
||||
vec2 new_xy = mix(vec2(old_hsv.x, old_hsv.y), vec2(color_change.x, max(old_hsv.y, color_change.y)), vec2(mask_step, mask_step));
|
||||
vec3 new_color = hsvToRgb(vec3(new_xy.x, new_xy.y, old_hsv.z));
|
||||
col = vec4(new_color.r, new_color.g, new_color.b, col.a);
|
||||
}
|
||||
|
||||
col.xyz *= pow(color.xyz, vec3(2.2));
|
||||
|
||||
|
||||
FragColor = vec4(getLightFactor(col.xyz, vec3(1.), specmap, emitmap) , 1.);
|
||||
}
|
||||
|
@ -10,9 +10,8 @@ flat in sampler2D handle;
|
||||
in vec3 nor;
|
||||
out vec4 FragColor;
|
||||
|
||||
|
||||
vec4 getPosFromUVDepth(vec3 uvDepth, mat4 InverseProjectionMatrix);
|
||||
vec3 getLightFactor(vec3 diffuseMatColor, vec3 specularMatColor, float specMapValue, float emitMapValue);
|
||||
#stk_include "utils/getPosFromUVDepth.frag"
|
||||
#stk_include "utils/getLightFactor.frag"
|
||||
|
||||
void main() {
|
||||
vec3 texc = gl_FragCoord.xyz / vec3(screen, 1.);
|
||||
|
@ -11,7 +11,7 @@ in vec3 nor;
|
||||
in vec2 uv;
|
||||
out vec3 EncodedNormal;
|
||||
|
||||
vec2 EncodeNormal(vec3 n);
|
||||
#stk_include "utils/encode_normal.frag"
|
||||
|
||||
void main() {
|
||||
#ifdef Use_Bindless_Texture
|
||||
|
@ -11,7 +11,7 @@ in vec2 uv;
|
||||
in vec4 color;
|
||||
out vec4 FragColor;
|
||||
|
||||
vec3 getLightFactor(vec3 diffuseMatColor, vec3 specularMatColor, float specMapValue, float emitMapValue);
|
||||
#stk_include "utils/getLightFactor.frag"
|
||||
|
||||
void main(void)
|
||||
{
|
||||
|
@ -21,8 +21,7 @@ flat out uvec2 handle;
|
||||
#endif
|
||||
|
||||
|
||||
mat4 getWorldMatrix(vec3 translation, vec3 rotation, vec3 scale);
|
||||
mat4 getInverseWorldMatrix(vec3 translation, vec3 rotation, vec3 scale);
|
||||
#stk_include "utils/getworldmatrix.vert"
|
||||
|
||||
void main(void)
|
||||
{
|
||||
|
@ -36,8 +36,7 @@ flat out uvec2 hdle;
|
||||
#endif
|
||||
#endif
|
||||
|
||||
mat4 getWorldMatrix(vec3 translation, vec3 rotation, vec3 scale);
|
||||
mat4 getInverseWorldMatrix(vec3 translation, vec3 rotation, vec3 scale);
|
||||
#stk_include "utils/getworldmatrix.vert"
|
||||
|
||||
void main(void)
|
||||
{
|
||||
@ -57,4 +56,4 @@ void main(void)
|
||||
hdle = Handle;
|
||||
#endif
|
||||
#endif
|
||||
}
|
||||
}
|
||||
|
@ -33,8 +33,7 @@ flat out uvec2 hdle;
|
||||
#endif
|
||||
#endif
|
||||
|
||||
mat4 getWorldMatrix(vec3 translation, vec3 rotation, vec3 scale);
|
||||
mat4 getInverseWorldMatrix(vec3 translation, vec3 rotation, vec3 scale);
|
||||
#stk_include "utils/getworldmatrix.vert"
|
||||
|
||||
void main(void)
|
||||
{
|
||||
@ -54,4 +53,4 @@ void main(void)
|
||||
hdle = Handle;
|
||||
#endif
|
||||
#endif
|
||||
}
|
||||
}
|
||||
|
142
data/shaders/irrlicht/COGLES2FixedPipeline.fsh
Normal file
142
data/shaders/irrlicht/COGLES2FixedPipeline.fsh
Normal file
@ -0,0 +1,142 @@
|
||||
precision mediump float;
|
||||
|
||||
/* Definitions */
|
||||
|
||||
#define Solid 0
|
||||
#define Solid2Layer 1
|
||||
#define LightMap 2
|
||||
#define DetailMap 3
|
||||
#define SphereMap 4
|
||||
#define Reflection2Layer 5
|
||||
#define TransparentAlphaChannel 6
|
||||
#define TransparentAlphaChannelRef 7
|
||||
#define TransparentVertexAlpha 8
|
||||
#define TransparentReflection2Layer 9
|
||||
|
||||
/* Uniforms */
|
||||
|
||||
uniform int uMaterialType;
|
||||
|
||||
uniform bool uTextureUsage0;
|
||||
uniform bool uTextureUsage1;
|
||||
|
||||
uniform sampler2D uTextureUnit0;
|
||||
uniform sampler2D uTextureUnit1;
|
||||
|
||||
/* Varyings */
|
||||
|
||||
varying vec2 varTexCoord0;
|
||||
varying vec2 varTexCoord1;
|
||||
varying vec4 varVertexColor;
|
||||
varying float varEyeDist;
|
||||
|
||||
vec4 renderSolid()
|
||||
{
|
||||
vec4 Color = varVertexColor;
|
||||
|
||||
if(uTextureUsage0)
|
||||
Color *= texture2D(uTextureUnit0, varTexCoord0);
|
||||
|
||||
Color.a = 1.0;
|
||||
|
||||
return Color;
|
||||
}
|
||||
|
||||
vec4 render2LayerSolid()
|
||||
{
|
||||
float BlendFactor = varVertexColor.a;
|
||||
|
||||
vec4 Texel0 = texture2D(uTextureUnit0, varTexCoord0);
|
||||
vec4 Texel1 = texture2D(uTextureUnit1, varTexCoord1);
|
||||
|
||||
vec4 Color = Texel0 * BlendFactor + Texel1 * (1.0 - BlendFactor);
|
||||
|
||||
return Color;
|
||||
}
|
||||
|
||||
vec4 renderLightMap()
|
||||
{
|
||||
vec4 Texel0 = texture2D(uTextureUnit0, varTexCoord0);
|
||||
vec4 Texel1 = texture2D(uTextureUnit1, varTexCoord1);
|
||||
|
||||
vec4 Color = Texel0 * Texel1 * 4.0;
|
||||
Color.a = Texel0.a * Texel0.a;
|
||||
|
||||
return Color;
|
||||
}
|
||||
|
||||
vec4 renderDetailMap()
|
||||
{
|
||||
vec4 Texel0 = texture2D(uTextureUnit0, varTexCoord0);
|
||||
vec4 Texel1 = texture2D(uTextureUnit1, varTexCoord1);
|
||||
|
||||
vec4 Color = Texel0;
|
||||
Color += Texel1 - 0.5;
|
||||
|
||||
return Color;
|
||||
}
|
||||
|
||||
vec4 renderReflection2Layer()
|
||||
{
|
||||
vec4 Color = varVertexColor;
|
||||
|
||||
vec4 Texel0 = texture2D(uTextureUnit0, varTexCoord0);
|
||||
vec4 Texel1 = texture2D(uTextureUnit1, varTexCoord1);
|
||||
|
||||
Color *= Texel0 * Texel1;
|
||||
|
||||
return Color;
|
||||
}
|
||||
|
||||
vec4 renderTransparent()
|
||||
{
|
||||
vec4 Color = vec4(1.0, 1.0, 1.0, 1.0);
|
||||
|
||||
if(uTextureUsage0)
|
||||
Color *= texture2D(uTextureUnit0, varTexCoord0);
|
||||
|
||||
return Color;
|
||||
}
|
||||
|
||||
void main ()
|
||||
{
|
||||
if (uMaterialType == Solid)
|
||||
gl_FragColor = renderSolid();
|
||||
else if(uMaterialType == Solid2Layer)
|
||||
gl_FragColor = render2LayerSolid();
|
||||
else if(uMaterialType == LightMap)
|
||||
gl_FragColor = renderLightMap();
|
||||
else if(uMaterialType == DetailMap)
|
||||
gl_FragColor = renderDetailMap();
|
||||
else if(uMaterialType == SphereMap)
|
||||
gl_FragColor = renderSolid();
|
||||
else if(uMaterialType == Reflection2Layer)
|
||||
gl_FragColor = renderReflection2Layer();
|
||||
else if(uMaterialType == TransparentAlphaChannel)
|
||||
gl_FragColor = renderTransparent();
|
||||
else if(uMaterialType == TransparentAlphaChannelRef)
|
||||
{
|
||||
vec4 Color = renderTransparent();
|
||||
|
||||
if (Color.a < 0.5)
|
||||
discard;
|
||||
|
||||
gl_FragColor = Color;
|
||||
}
|
||||
else if(uMaterialType == TransparentVertexAlpha)
|
||||
{
|
||||
vec4 Color = renderTransparent();
|
||||
Color.a = varVertexColor.a;
|
||||
|
||||
gl_FragColor = Color;
|
||||
}
|
||||
else if(uMaterialType == TransparentReflection2Layer)
|
||||
{
|
||||
vec4 Color = renderReflection2Layer();
|
||||
Color.a = varVertexColor.a;
|
||||
|
||||
gl_FragColor = Color;
|
||||
}
|
||||
else
|
||||
gl_FragColor = vec4(1.0, 1.0, 1.0, 1.0);
|
||||
}
|
36
data/shaders/irrlicht/COGLES2FixedPipeline.vsh
Normal file
36
data/shaders/irrlicht/COGLES2FixedPipeline.vsh
Normal file
@ -0,0 +1,36 @@
|
||||
/* Attributes */
|
||||
|
||||
attribute vec3 inVertexPosition;
|
||||
attribute vec3 inVertexNormal;
|
||||
attribute vec4 inVertexColor;
|
||||
attribute vec2 inTexCoord0;
|
||||
attribute vec2 inTexCoord1;
|
||||
|
||||
/* Uniforms */
|
||||
|
||||
uniform int uMaterialType;
|
||||
|
||||
uniform mat4 uMvpMatrix;
|
||||
|
||||
uniform mat4 uTextureMatrix0;
|
||||
uniform mat4 uTextureMatrix1;
|
||||
|
||||
/* Varyings */
|
||||
|
||||
varying vec2 varTexCoord0;
|
||||
varying vec2 varTexCoord1;
|
||||
varying vec4 varVertexColor;
|
||||
varying float varEyeDist;
|
||||
|
||||
void main(void)
|
||||
{
|
||||
gl_Position = uMvpMatrix * vec4(inVertexPosition,1.0);
|
||||
|
||||
vec4 TexCoord0 = vec4(inTexCoord0.x, inTexCoord0.y, 0.0, 0.0);
|
||||
varTexCoord0 = vec4(uTextureMatrix0 * TexCoord0).xy;
|
||||
|
||||
vec4 TexCoord1 = vec4(inTexCoord1.x, inTexCoord1.y, 0.0, 0.0);
|
||||
varTexCoord1 = vec4(uTextureMatrix1 * TexCoord1).xy;
|
||||
|
||||
varVertexColor = inVertexColor.zyxw;
|
||||
}
|
36
data/shaders/irrlicht/COGLES2NormalMap.fsh
Normal file
36
data/shaders/irrlicht/COGLES2NormalMap.fsh
Normal file
@ -0,0 +1,36 @@
|
||||
// Copyright (C) 2009-2010 Amundis
|
||||
// Heavily based on the OpenGL driver implemented by Nikolaus Gebhardt
|
||||
// and OpenGL ES driver implemented by Christian Stehno
|
||||
// This file is part of the "Irrlicht Engine".
|
||||
// For conditions of distribution and use, see copyright notice in Irrlicht.h
|
||||
#define MAX_LIGHTS 2
|
||||
|
||||
precision mediump float;
|
||||
|
||||
uniform sampler2D texture0;
|
||||
uniform sampler2D texture1;
|
||||
|
||||
varying vec4 varTexCoord;
|
||||
varying vec3 varLightVector[MAX_LIGHTS];
|
||||
varying vec4 varLightColor[MAX_LIGHTS];
|
||||
|
||||
varying vec4 debug;
|
||||
|
||||
void main(void)
|
||||
{
|
||||
// fetch color and normal map
|
||||
vec4 normalMap = texture2D(texture1, varTexCoord.xy) * 2.0 - 1.0;
|
||||
vec4 colorMap = texture2D(texture0, varTexCoord.xy);
|
||||
|
||||
// calculate color of light 0
|
||||
vec4 color = clamp(varLightColor[0], 0.0, 1.0) * dot(normalMap.xyz, normalize(varLightVector[0].xyz));
|
||||
|
||||
// calculate color of light 1
|
||||
color += clamp(varLightColor[1], 0.0, 1.0) * dot(normalMap.xyz, normalize(varLightVector[1].xyz));
|
||||
|
||||
//luminance * base color
|
||||
color *= colorMap;
|
||||
color.a = varLightColor[0].a;
|
||||
|
||||
gl_FragColor = color;
|
||||
}
|
69
data/shaders/irrlicht/COGLES2NormalMap.vsh
Normal file
69
data/shaders/irrlicht/COGLES2NormalMap.vsh
Normal file
@ -0,0 +1,69 @@
|
||||
// Copyright (C) 2009-2010 Amundis
|
||||
// Heavily based on the OpenGL driver implemented by Nikolaus Gebhardt
|
||||
// and OpenGL ES driver implemented by Christian Stehno
|
||||
// This file is part of the "Irrlicht Engine".
|
||||
// For conditions of distribution and use, see copyright notice in Irrlicht.h
|
||||
#define MAX_LIGHTS 2
|
||||
|
||||
attribute vec4 inVertexPosition;
|
||||
attribute vec4 inVertexColor;
|
||||
attribute vec4 inTexCoord0;
|
||||
attribute vec3 inVertexNormal;
|
||||
attribute vec3 inVertexTangent;
|
||||
attribute vec3 inVertexBinormal;
|
||||
|
||||
uniform mat4 uMvpMatrix;
|
||||
uniform vec4 uLightPos[MAX_LIGHTS];
|
||||
uniform vec4 uLightColor[MAX_LIGHTS];
|
||||
|
||||
varying vec4 varTexCoord;
|
||||
varying vec3 varLightVector[MAX_LIGHTS];
|
||||
varying vec4 varLightColor[MAX_LIGHTS];
|
||||
|
||||
varying vec4 debug;
|
||||
|
||||
void main(void)
|
||||
{
|
||||
debug = vec4(inVertexNormal, 1.0);
|
||||
// transform position to clip space
|
||||
gl_Position = uMvpMatrix * inVertexPosition;
|
||||
|
||||
// vertex - lightpositions
|
||||
vec4 tempLightVector0 = uLightPos[0] - inVertexPosition;
|
||||
vec4 tempLightVector1 = uLightPos[1] - inVertexPosition;
|
||||
|
||||
// transform the light vector 1 with U, V, W
|
||||
varLightVector[0].x = dot(inVertexTangent, tempLightVector0.xyz);
|
||||
varLightVector[0].y = dot(inVertexBinormal, tempLightVector0.xyz);
|
||||
varLightVector[0].z = dot(inVertexNormal, tempLightVector0.xyz);
|
||||
|
||||
|
||||
// transform the light vector 2 with U, V, W
|
||||
varLightVector[1].x = dot(inVertexTangent, tempLightVector1.xyz);
|
||||
varLightVector[1].y = dot(inVertexBinormal, tempLightVector1.xyz);
|
||||
varLightVector[1].z = dot(inVertexNormal, tempLightVector1.xyz);
|
||||
|
||||
// calculate attenuation of light 0
|
||||
varLightColor[0].w = 0.0;
|
||||
varLightColor[0].x = dot(tempLightVector0, tempLightVector0);
|
||||
varLightColor[0].x *= uLightColor[0].w;
|
||||
varLightColor[0] = vec4(inversesqrt(varLightColor[0].x));
|
||||
varLightColor[0] *= uLightColor[0];
|
||||
|
||||
// normalize light vector 0
|
||||
varLightVector[0] = normalize(varLightVector[0]);
|
||||
|
||||
// calculate attenuation of light 1
|
||||
varLightColor[1].w = 0.0;
|
||||
varLightColor[1].x = dot(tempLightVector1, tempLightVector1);
|
||||
varLightColor[1].x *= uLightColor[1].w;
|
||||
varLightColor[1] = vec4(inversesqrt(varLightColor[1].x));
|
||||
varLightColor[1] *= uLightColor[1];
|
||||
|
||||
// normalize light vector 1
|
||||
varLightVector[1] = normalize(varLightVector[1]);
|
||||
|
||||
// move out texture coordinates and original alpha value
|
||||
varTexCoord = inTexCoord0;
|
||||
varLightColor[0].a = inVertexColor.a;
|
||||
}
|
49
data/shaders/irrlicht/COGLES2ParallaxMap.fsh
Normal file
49
data/shaders/irrlicht/COGLES2ParallaxMap.fsh
Normal file
@ -0,0 +1,49 @@
|
||||
// Copyright (C) 2009-2010 Amundis
|
||||
// Heavily based on the OpenGL driver implemented by Nikolaus Gebhardt
|
||||
// and OpenGL ES driver implemented by Christian Stehno
|
||||
// This file is part of the "Irrlicht Engine".
|
||||
// For conditions of distribution and use, see copyright notice in Irrlicht.h
|
||||
#define MAX_LIGHTS 2
|
||||
|
||||
precision mediump float;
|
||||
|
||||
uniform sampler2D texture0;
|
||||
uniform sampler2D texture1;
|
||||
|
||||
//uniform vec4 uLightDiffuse[MAX_LIGHTS];
|
||||
uniform float uHeightScale;
|
||||
|
||||
varying vec4 varTexCoord;
|
||||
varying vec3 varLightVector[MAX_LIGHTS];
|
||||
varying vec4 varLightColor[MAX_LIGHTS];
|
||||
varying vec3 varEyeVector;
|
||||
|
||||
varying vec4 debug;
|
||||
|
||||
void main(void)
|
||||
{
|
||||
// fetch color and normal map
|
||||
vec4 normalMap = texture2D(texture1, varTexCoord.xy) * 2.0 - 1.0;
|
||||
|
||||
// height = height * scale
|
||||
normalMap *= uHeightScale;
|
||||
|
||||
// calculate new texture coord: height * eye + oldTexCoord
|
||||
vec2 offset = varEyeVector.xy * normalMap.w + varTexCoord.xy;
|
||||
|
||||
// fetch new textures
|
||||
vec4 colorMap = texture2D(texture0, offset);
|
||||
normalMap = normalize(texture2D(texture1, offset) * 2.0 - 1.0);
|
||||
|
||||
// calculate color of light 0
|
||||
vec4 color = clamp(varLightColor[0], 0.0, 1.0) * dot(normalMap.xyz, normalize(varLightVector[0].xyz));
|
||||
|
||||
// calculate color of light 1
|
||||
color += clamp(varLightColor[1], 0.0, 1.0) * dot(normalMap.xyz, normalize(varLightVector[1].xyz));
|
||||
|
||||
//luminance * base color
|
||||
color *= colorMap;
|
||||
color.a = varLightColor[0].a;
|
||||
|
||||
gl_FragColor = color;
|
||||
}
|
81
data/shaders/irrlicht/COGLES2ParallaxMap.vsh
Normal file
81
data/shaders/irrlicht/COGLES2ParallaxMap.vsh
Normal file
@ -0,0 +1,81 @@
|
||||
// Copyright (C) 2009-2010 Amundis
|
||||
// Heavily based on the OpenGL driver implemented by Nikolaus Gebhardt
|
||||
// and OpenGL ES driver implemented by Christian Stehno
|
||||
// This file is part of the "Irrlicht Engine".
|
||||
// For conditions of distribution and use, see copyright notice in Irrlicht.h
|
||||
#define MAX_LIGHTS 2
|
||||
|
||||
attribute vec4 inVertexPosition;
|
||||
attribute vec4 inVertexColor;
|
||||
attribute vec4 inTexCoord0;
|
||||
attribute vec3 inVertexNormal;
|
||||
attribute vec3 inVertexTangent;
|
||||
attribute vec3 inVertexBinormal;
|
||||
|
||||
uniform mat4 uMvpMatrix;
|
||||
uniform vec4 uLightPos[MAX_LIGHTS];
|
||||
uniform vec4 uLightColor[MAX_LIGHTS];
|
||||
uniform vec3 uEyePos;
|
||||
|
||||
varying vec4 varTexCoord;
|
||||
varying vec3 varLightVector[MAX_LIGHTS];
|
||||
varying vec4 varLightColor[MAX_LIGHTS];
|
||||
varying vec3 varEyeVector;
|
||||
|
||||
varying vec4 debug;
|
||||
|
||||
void main(void)
|
||||
{
|
||||
debug = vec4(inVertexNormal, 1.0);
|
||||
// transform position to clip space
|
||||
gl_Position = uMvpMatrix * inVertexPosition;
|
||||
|
||||
// vertex - lightpositions
|
||||
vec4 tempLightVector0 = uLightPos[0] - inVertexPosition;
|
||||
vec4 tempLightVector1 = uLightPos[1] - inVertexPosition;
|
||||
|
||||
// eye vector
|
||||
vec4 Temp = vec4(uEyePos, 1.0) - inVertexPosition;
|
||||
|
||||
// transform the light vector 1 with U, V, W
|
||||
varLightVector[0].x = dot(inVertexTangent, tempLightVector0.xyz);
|
||||
varLightVector[0].y = dot(inVertexBinormal, tempLightVector0.xyz);
|
||||
varLightVector[0].z = dot(inVertexNormal, tempLightVector0.xyz);
|
||||
|
||||
|
||||
// transform the light vector 2 with U, V, W
|
||||
varLightVector[1].x = dot(inVertexTangent, tempLightVector1.xyz);
|
||||
varLightVector[1].y = dot(inVertexBinormal, tempLightVector1.xyz);
|
||||
varLightVector[1].z = dot(inVertexNormal, tempLightVector1.xyz);
|
||||
|
||||
// transform the eye vector with U, V, W
|
||||
varEyeVector.x = dot(inVertexTangent, Temp.xyz);
|
||||
varEyeVector.y = dot(inVertexBinormal, Temp.xyz);
|
||||
varEyeVector.z = dot(inVertexNormal, Temp.xyz);
|
||||
varEyeVector *= vec3(1.0,-1.0, -1.0);
|
||||
varEyeVector = normalize(varEyeVector);
|
||||
|
||||
// calculate attenuation of light 0
|
||||
varLightColor[0].w = 0.0;
|
||||
varLightColor[0].x = dot(tempLightVector0, tempLightVector0);
|
||||
varLightColor[0].x *= uLightColor[0].w;
|
||||
varLightColor[0] = vec4(inversesqrt(varLightColor[0].x));
|
||||
varLightColor[0] *= uLightColor[0];
|
||||
|
||||
// normalize light vector 0
|
||||
varLightVector[0] = normalize(varLightVector[0]);
|
||||
|
||||
// calculate attenuation of light 1
|
||||
varLightColor[1].w = 0.0;
|
||||
varLightColor[1].x = dot(tempLightVector1, tempLightVector1);
|
||||
varLightColor[1].x *= uLightColor[1].w;
|
||||
varLightColor[1] = vec4(inversesqrt(varLightColor[1].x));
|
||||
varLightColor[1] *= uLightColor[1];
|
||||
|
||||
// normalize light vector 1
|
||||
varLightVector[1] = normalize(varLightVector[1]);
|
||||
|
||||
// move out texture coordinates and original alpha value
|
||||
varTexCoord = inTexCoord0;
|
||||
varLightColor[0].a = inVertexColor.a;
|
||||
}
|
23
data/shaders/irrlicht/COGLES2Renderer2D.fsh
Normal file
23
data/shaders/irrlicht/COGLES2Renderer2D.fsh
Normal file
@ -0,0 +1,23 @@
|
||||
// Copyright (C) 2009-2010 Amundis
|
||||
// Heavily based on the OpenGL driver implemented by Nikolaus Gebhardt
|
||||
// and OpenGL ES driver implemented by Christian Stehno
|
||||
// This file is part of the "Irrlicht Engine".
|
||||
// For conditions of distribution and use, see copyright notice in Irrlicht.h
|
||||
|
||||
precision mediump float;
|
||||
|
||||
uniform bool uUseTexture;
|
||||
uniform sampler2D uTextureUnit;
|
||||
|
||||
varying vec4 vVertexColor;
|
||||
varying vec2 vTexCoord;
|
||||
|
||||
void main(void)
|
||||
{
|
||||
vec4 Color = vVertexColor;
|
||||
|
||||
if(uUseTexture)
|
||||
Color *= texture2D(uTextureUnit, vTexCoord);
|
||||
|
||||
gl_FragColor = Color;
|
||||
}
|
21
data/shaders/irrlicht/COGLES2Renderer2D.vsh
Normal file
21
data/shaders/irrlicht/COGLES2Renderer2D.vsh
Normal file
@ -0,0 +1,21 @@
|
||||
// Copyright (C) 2009-2010 Amundis
|
||||
// Heavily based on the OpenGL driver implemented by Nikolaus Gebhardt
|
||||
// and OpenGL ES driver implemented by Christian Stehno
|
||||
// This file is part of the "Irrlicht Engine".
|
||||
// For conditions of distribution and use, see copyright notice in Irrlicht.h
|
||||
|
||||
attribute vec4 inVertexPosition;
|
||||
attribute vec4 inVertexColor;
|
||||
attribute vec2 inTexCoord0;
|
||||
|
||||
uniform mat4 uOrthoMatrix;
|
||||
|
||||
varying vec4 vVertexColor;
|
||||
varying vec2 vTexCoord;
|
||||
|
||||
void main(void)
|
||||
{
|
||||
gl_Position = uOrthoMatrix * inVertexPosition;
|
||||
vVertexColor = inVertexColor.bgra;
|
||||
vTexCoord = inTexCoord0;
|
||||
}
|
@ -42,7 +42,7 @@ out vec4 FragColor;
|
||||
// Number of samples used for blurring
|
||||
#define NB_SAMPLES 8
|
||||
|
||||
vec4 getPosFromUVDepth(vec3 uvDepth, mat4 InverseProjectionMatrix);
|
||||
#stk_include "utils/getPosFromUVDepth.frag"
|
||||
|
||||
void main()
|
||||
{
|
||||
@ -74,7 +74,7 @@ void main()
|
||||
|
||||
// Compute the blur
|
||||
vec2 inc_vec = blur_dir / vec2(NB_SAMPLES);
|
||||
vec2 blur_texcoords = texcoords - inc_vec * NB_SAMPLES / 2;
|
||||
vec2 blur_texcoords = texcoords - inc_vec * float(NB_SAMPLES) / 2.;
|
||||
for(int i=1 ; i < NB_SAMPLES ; i++)
|
||||
{
|
||||
color += texture(color_buffer, blur_texcoords).rgb;
|
||||
|
@ -11,7 +11,7 @@ in vec3 bitangent;
|
||||
in vec2 uv;
|
||||
out vec3 EncodedNormal;
|
||||
|
||||
vec2 EncodeNormal(vec3 n);
|
||||
#stk_include "utils/encode_normal.frag"
|
||||
|
||||
void main()
|
||||
{
|
||||
|
@ -1,3 +1,8 @@
|
||||
#ifdef GL_ES
|
||||
uniform mat4 ModelMatrix;
|
||||
uniform mat4 InverseModelMatrix;
|
||||
uniform mat4 TextureMatrix;
|
||||
#else
|
||||
uniform mat4 ModelMatrix =
|
||||
mat4(1., 0., 0., 0.,
|
||||
0., 1., 0., 0.,
|
||||
@ -14,6 +19,7 @@ uniform mat4 TextureMatrix =
|
||||
0., 1., 0., 0.,
|
||||
0., 0., 1., 0.,
|
||||
0., 0., 0., 1.);
|
||||
#endif
|
||||
|
||||
#if __VERSION__ >= 330
|
||||
layout(location = 0) in vec3 Position;
|
||||
|
@ -8,7 +8,7 @@ in vec3 nor;
|
||||
in vec2 uv;
|
||||
out vec3 EncodedNormal;
|
||||
|
||||
vec2 EncodeNormal(vec3 n);
|
||||
#stk_include "utils/encode_normal.frag"
|
||||
|
||||
void main(void)
|
||||
{
|
||||
|
@ -4,13 +4,17 @@ layout(bindless_sampler) uniform sampler2D SpecMap;
|
||||
#else
|
||||
uniform sampler2D Albedo;
|
||||
uniform sampler2D SpecMap;
|
||||
uniform sampler2D colorization_mask;
|
||||
#endif
|
||||
|
||||
uniform vec2 color_change;
|
||||
|
||||
in vec2 uv;
|
||||
in vec4 color;
|
||||
out vec4 FragColor;
|
||||
|
||||
vec3 getLightFactor(vec3 diffuseMatColor, vec3 specularMatColor, float specMapValue, float emitMapValue);
|
||||
#stk_include "utils/getLightFactor.frag"
|
||||
#stk_include "utils/rgb_conversion.frag"
|
||||
|
||||
void main(void)
|
||||
{
|
||||
@ -21,7 +25,18 @@ void main(void)
|
||||
#endif
|
||||
#else
|
||||
vec4 col = texture(Albedo, uv);
|
||||
float mask = texture(colorization_mask, uv).a;
|
||||
#endif
|
||||
|
||||
if (color_change.x > 0.0)
|
||||
{
|
||||
vec3 old_hsv = rgbToHsv(col.rgb);
|
||||
float mask_step = step(mask, 0.5);
|
||||
vec2 new_xy = mix(vec2(old_hsv.x, old_hsv.y), vec2(color_change.x, max(old_hsv.y, color_change.y)), vec2(mask_step, mask_step));
|
||||
vec3 new_color = hsvToRgb(vec3(new_xy.x, new_xy.y, old_hsv.z));
|
||||
col = vec4(new_color.r, new_color.g, new_color.b, col.a);
|
||||
}
|
||||
|
||||
col.xyz *= pow(color.xyz, vec3(2.2));
|
||||
float specmap = texture(SpecMap, uv).g;
|
||||
float emitmap = texture(SpecMap, uv).b;
|
||||
|
@ -9,8 +9,8 @@ uniform sampler2D tex;
|
||||
in vec3 nor;
|
||||
out vec4 FragColor;
|
||||
|
||||
vec4 getPosFromUVDepth(vec3 uvDepth, mat4 InverseProjectionMatrix);
|
||||
vec3 getLightFactor(vec3 diffuseMatColor, vec3 specularMatColor, float specMapValue, float emitMapValue);
|
||||
#stk_include "utils/getPosFromUVDepth.frag"
|
||||
#stk_include "utils/getLightFactor.frag"
|
||||
|
||||
void main() {
|
||||
vec3 texc = gl_FragCoord.xyz / vec3(screen, 1.);
|
||||
|
@ -10,7 +10,7 @@ in vec3 nor;
|
||||
in vec2 uv;
|
||||
out vec3 EncodedNormal;
|
||||
|
||||
vec2 EncodeNormal(vec3 n);
|
||||
#stk_include "utils/encode_normal.frag"
|
||||
|
||||
void main() {
|
||||
vec4 col = texture(tex, uv);
|
||||
|
@ -10,7 +10,7 @@ in vec2 uv;
|
||||
in vec4 color;
|
||||
out vec4 FragColor;
|
||||
|
||||
vec3 getLightFactor(vec3 diffuseMatColor, vec3 specularMatColor, float specMapValue, float emitMapValue);
|
||||
#stk_include "utils/getLightFactor.frag"
|
||||
|
||||
void main(void)
|
||||
{
|
||||
|
@ -7,7 +7,7 @@ in vec2 tc;
|
||||
in vec3 pc;
|
||||
out vec4 FragColor;
|
||||
|
||||
vec4 getPosFromUVDepth(vec3 uvDepth, mat4 InverseProjectionMatrix);
|
||||
#stk_include "utils/getPosFromUVDepth.frag"
|
||||
|
||||
void main(void)
|
||||
{
|
||||
|
13
data/shaders/pass_gles.frag
Normal file
13
data/shaders/pass_gles.frag
Normal file
@ -0,0 +1,13 @@
|
||||
#version 300 es
|
||||
|
||||
precision mediump float;
|
||||
|
||||
uniform sampler2D tex;
|
||||
|
||||
in vec2 uv;
|
||||
out vec4 FragColor;
|
||||
|
||||
void main()
|
||||
{
|
||||
FragColor = texture(tex, uv);
|
||||
}
|
10
data/shaders/pass_gles.vert
Normal file
10
data/shaders/pass_gles.vert
Normal file
@ -0,0 +1,10 @@
|
||||
#version 300 es
|
||||
|
||||
in vec3 Position;
|
||||
in vec2 Texcoord;
|
||||
out vec2 uv;
|
||||
|
||||
void main() {
|
||||
uv = Texcoord;
|
||||
gl_Position = vec4(Position, 1.);
|
||||
}
|
@ -39,7 +39,7 @@ void main(void)
|
||||
if (gl_VertexID < level)
|
||||
{
|
||||
float dt_from_last_frame = fract(updated_lifetime) * lifetime_initial;
|
||||
float coeff = dt_from_last_frame / dt;
|
||||
float coeff = dt_from_last_frame / float(dt);
|
||||
|
||||
vec4 previous_frame_position = previous_frame_sourcematrix * vec4(particle_position_initial, 1.0);
|
||||
vec4 current_frame_position = sourcematrix * vec4(particle_position_initial, 1.0);
|
||||
@ -66,7 +66,7 @@ void main(void)
|
||||
else
|
||||
{
|
||||
new_lifetime = fract(updated_lifetime);
|
||||
new_size = 0;
|
||||
new_size = 0.0;
|
||||
}
|
||||
}
|
||||
else
|
||||
@ -74,7 +74,7 @@ void main(void)
|
||||
new_particle_position = particle_position + particle_velocity.xyz * float(dt);
|
||||
new_particle_velocity = particle_velocity;
|
||||
new_lifetime = updated_lifetime;
|
||||
new_size = (size == 0) ? 0. : mix(size_initial, size_initial * size_increase_factor, updated_lifetime);
|
||||
new_size = (size == 0.0) ? 0. : mix(size_initial, size_initial * size_increase_factor, updated_lifetime);
|
||||
}
|
||||
gl_Position = vec4(0.);
|
||||
}
|
||||
|
@ -9,10 +9,10 @@ flat in float radius;
|
||||
out vec4 Diff;
|
||||
out vec4 Spec;
|
||||
|
||||
vec3 DecodeNormal(vec2 n);
|
||||
vec3 SpecularBRDF(vec3 normal, vec3 eyedir, vec3 lightdir, vec3 color, float roughness);
|
||||
vec3 DiffuseBRDF(vec3 normal, vec3 eyedir, vec3 lightdir, vec3 color, float roughness);
|
||||
vec4 getPosFromUVDepth(vec3 uvDepth, mat4 InverseProjectionMatrix);
|
||||
#stk_include "utils/decodeNormal.frag"
|
||||
#stk_include "utils/SpecularBRDF.frag"
|
||||
#stk_include "utils/DiffuseBRDF.frag"
|
||||
#stk_include "utils/getPosFromUVDepth.frag"
|
||||
|
||||
void main()
|
||||
{
|
||||
|
@ -9,7 +9,7 @@ flat in float radius;
|
||||
|
||||
out vec4 Fog;
|
||||
|
||||
vec4 getPosFromUVDepth(vec3 uvDepth, mat4 InverseProjectionMatrix);
|
||||
#stk_include "utils/getPosFromUVDepth.frag"
|
||||
|
||||
void main()
|
||||
{
|
||||
@ -28,14 +28,14 @@ void main()
|
||||
vec3 closestpoint = - eyedir * (dot(-eyedir, light_pos) - radius);
|
||||
if (closestpoint.z < 1.) closestpoint = vec3(0.);
|
||||
|
||||
float stepsize = length(farthestpoint - closestpoint) / 16;
|
||||
float stepsize = length(farthestpoint - closestpoint) / 16.;
|
||||
vec3 fog = vec3(0.);
|
||||
vec3 xpos = farthestpoint;
|
||||
|
||||
for (int i = 0; i < 16; i++)
|
||||
{
|
||||
float d = distance(light_pos, xpos);
|
||||
float l = (16 - i) * stepsize;
|
||||
float l = (16. - float(i)) * stepsize;
|
||||
float att = energy * 20. / (1. + d * d);
|
||||
att *= max((radius - d) / radius, 0.);
|
||||
fog += density * light_col * att * exp(- density * d) * exp(- density * l) * stepsize;
|
||||
|
@ -24,7 +24,7 @@ void main(void)
|
||||
color = Color.zyxw;
|
||||
vec3 P = Position / vec3(screen, 1.);
|
||||
P = 2. * P - 1.;
|
||||
P.y *= -1;
|
||||
P.y *= -1.;
|
||||
gl_Position = vec4(P, 1.);
|
||||
uv = Texcoord;
|
||||
}
|
||||
|
@ -4,7 +4,7 @@ out vec4 FragColor;
|
||||
|
||||
void main(void)
|
||||
{
|
||||
vec3 eyedir = vec3(gl_FragCoord.xy / screen, 1.);
|
||||
vec3 eyedir = vec3(mod(gl_FragCoord.xy, screen) / screen, 1.);
|
||||
eyedir = 2.0 * eyedir - 1.0;
|
||||
vec4 tmp = (InverseProjectionMatrix * vec4(eyedir, 1.));
|
||||
tmp /= tmp.w;
|
||||
|
@ -16,7 +16,7 @@ in vec2 uv;
|
||||
in vec2 uv_bis;
|
||||
out vec4 FragColor;
|
||||
|
||||
vec3 getLightFactor(vec3 diffuseMatColor, vec3 specularMatColor, float specMapValue, float emitMapValue);
|
||||
#stk_include "utils/getLightFactor.frag"
|
||||
|
||||
void main() {
|
||||
// Splatting part
|
||||
|
@ -3,8 +3,8 @@
|
||||
|
||||
uniform sampler2D dtex;
|
||||
uniform float radius;
|
||||
uniform float k = 1.5;
|
||||
uniform float sigma = 1.;
|
||||
uniform float k;
|
||||
uniform float sigma;
|
||||
out float AO;
|
||||
|
||||
const float tau = 7.;
|
||||
@ -12,14 +12,13 @@ const float beta = 0.002;
|
||||
const float epsilon = .00001;
|
||||
|
||||
#define SAMPLES 16
|
||||
|
||||
const float invSamples = 1. / SAMPLES;
|
||||
const float invSamples = 0.0625; // 1. / SAMPLES
|
||||
|
||||
vec3 getXcYcZc(int x, int y, float zC)
|
||||
{
|
||||
// We use perspective symetric projection matrix hence P(0,2) = P(1, 2) = 0
|
||||
float xC= (2 * (float(x)) / screen.x - 1.) * zC / ProjectionMatrix[0][0];
|
||||
float yC= (2 * (float(y)) / screen.y - 1.) * zC / ProjectionMatrix[1][1];
|
||||
float xC= (2. * (float(x)) / screen.x - 1.) * zC / ProjectionMatrix[0][0];
|
||||
float yC= (2. * (float(y)) / screen.y - 1.) * zC / ProjectionMatrix[1][1];
|
||||
return vec3(xC, yC, zC);
|
||||
}
|
||||
|
||||
@ -36,16 +35,16 @@ void main(void)
|
||||
vec3 norm = normalize(cross(ddy, ddx));
|
||||
|
||||
float r = radius / FragPos.z;
|
||||
float phi = 3. * (x ^ y) + x * y;
|
||||
float phi = 3. * float((x ^ y) + x * y);
|
||||
float bl = 0.0;
|
||||
float m = log2(r) + 6 + log2(invSamples);
|
||||
float m = log2(r) + 6. + log2(invSamples);
|
||||
|
||||
float theta = 2. * 3.14 * tau * .5 * invSamples + phi;
|
||||
float theta = mod(2. * 3.14 * tau * .5 * invSamples + phi, 6.283185307179586);
|
||||
vec2 rotations = vec2(cos(theta), sin(theta)) * screen;
|
||||
vec2 offset = vec2(cos(invSamples), sin(invSamples));
|
||||
|
||||
for(int i = 0; i < SAMPLES; ++i) {
|
||||
float alpha = (i + .5) * invSamples;
|
||||
float alpha = (float(i) + .5) * invSamples;
|
||||
rotations = vec2(rotations.x * offset.x - rotations.y * offset.y, rotations.x * offset.y + rotations.y * offset.x);
|
||||
float h = r * alpha;
|
||||
vec2 localoffset = h * rotations;
|
||||
@ -53,13 +52,13 @@ void main(void)
|
||||
m = m + .5;
|
||||
ivec2 ioccluder_uv = ivec2(x, y) + ivec2(localoffset);
|
||||
|
||||
if (ioccluder_uv.x < 0 || ioccluder_uv.x > screen.x || ioccluder_uv.y < 0 || ioccluder_uv.y > screen.y) continue;
|
||||
if (ioccluder_uv.x < 0 || ioccluder_uv.x > int(screen.x) || ioccluder_uv.y < 0 || ioccluder_uv.y > int(screen.y)) continue;
|
||||
|
||||
float LinearoccluderFragmentDepth = textureLod(dtex, vec2(ioccluder_uv) / screen, max(m, 0.)).x;
|
||||
vec3 OccluderPos = getXcYcZc(ioccluder_uv.x, ioccluder_uv.y, LinearoccluderFragmentDepth);
|
||||
|
||||
vec3 vi = OccluderPos - FragPos;
|
||||
bl += max(0, dot(vi, norm) - FragPos.z * beta) / (dot(vi, vi) + epsilon);
|
||||
bl += max(0., dot(vi, norm) - FragPos.z * beta) / (dot(vi, vi) + epsilon);
|
||||
}
|
||||
|
||||
AO = max(pow(1.0 - min(2. * sigma * bl * invSamples, 0.99), k), 0.);
|
||||
|
@ -4,11 +4,11 @@ uniform sampler2D dtex;
|
||||
out vec4 Diff;
|
||||
out vec4 Spec;
|
||||
|
||||
vec3 DecodeNormal(vec2 n);
|
||||
vec3 SpecularBRDF(vec3 normal, vec3 eyedir, vec3 lightdir, vec3 color, float roughness);
|
||||
vec3 DiffuseBRDF(vec3 normal, vec3 eyedir, vec3 lightdir, vec3 color, float roughness);
|
||||
vec4 getPosFromUVDepth(vec3 uvDepth, mat4 InverseProjectionMatrix);
|
||||
vec3 SunMRP(vec3 normal, vec3 eyedir);
|
||||
#stk_include "utils/decodeNormal.frag"
|
||||
#stk_include "utils/SpecularBRDF.frag"
|
||||
#stk_include "utils/DiffuseBRDF.frag"
|
||||
#stk_include "utils/getPosFromUVDepth.frag"
|
||||
#stk_include "utils/SunMRP.frag"
|
||||
|
||||
void main() {
|
||||
vec2 uv = gl_FragCoord.xy / screen;
|
||||
|
@ -12,11 +12,11 @@ in vec2 uv;
|
||||
out vec4 Diff;
|
||||
out vec4 Spec;
|
||||
|
||||
vec3 DecodeNormal(vec2 n);
|
||||
vec3 SpecularBRDF(vec3 normal, vec3 eyedir, vec3 lightdir, vec3 color, float roughness);
|
||||
vec3 DiffuseBRDF(vec3 normal, vec3 eyedir, vec3 lightdir, vec3 color, float roughness);
|
||||
vec4 getPosFromUVDepth(vec3 uvDepth, mat4 InverseProjectionMatrix);
|
||||
vec3 SunMRP(vec3 normal, vec3 eyedir);
|
||||
#stk_include "utils/decodeNormal.frag"
|
||||
#stk_include "utils/SpecularBRDF.frag"
|
||||
#stk_include "utils/DiffuseBRDF.frag"
|
||||
#stk_include "utils/getPosFromUVDepth.frag"
|
||||
#stk_include "utils/SunMRP.frag"
|
||||
|
||||
float getShadowFactor(vec3 pos, int index)
|
||||
{
|
||||
|
@ -11,11 +11,11 @@ in vec2 uv;
|
||||
out vec4 Diff;
|
||||
out vec4 Spec;
|
||||
|
||||
vec3 DecodeNormal(vec2 n);
|
||||
vec3 SpecularBRDF(vec3 normal, vec3 eyedir, vec3 lightdir, vec3 color, float roughness);
|
||||
vec3 DiffuseBRDF(vec3 normal, vec3 eyedir, vec3 lightdir, vec3 color, float roughness);
|
||||
vec4 getPosFromUVDepth(vec3 uvDepth, mat4 InverseProjectionMatrix);
|
||||
vec3 SunMRP(vec3 normal, vec3 eyedir);
|
||||
#stk_include "utils/decodeNormal.frag"
|
||||
#stk_include "utils/SpecularBRDF.frag"
|
||||
#stk_include "utils/DiffuseBRDF.frag"
|
||||
#stk_include "utils/getPosFromUVDepth.frag"
|
||||
#stk_include "utils/SunMRP.frag"
|
||||
|
||||
float getShadowFactor(vec3 pos, int index)
|
||||
{
|
||||
|
6
data/shaders/tfb_dummy.frag
Normal file
6
data/shaders/tfb_dummy.frag
Normal file
@ -0,0 +1,6 @@
|
||||
out vec4 FragColor;
|
||||
|
||||
void main(void)
|
||||
{
|
||||
FragColor = vec4(1.0);
|
||||
}
|
@ -3,8 +3,8 @@ uniform float vignette_weight;
|
||||
|
||||
out vec4 FragColor;
|
||||
|
||||
vec3 getCIEYxy(vec3 rgbColor);
|
||||
vec3 getRGBFromCIEXxy(vec3 YxyColor);
|
||||
#stk_include "utils/getCIEXYZ.frag"
|
||||
#stk_include "utils/getRGBfromCIEXxy.frag"
|
||||
|
||||
void main()
|
||||
{
|
||||
|
@ -7,5 +7,5 @@ out vec4 FragColor;
|
||||
void main()
|
||||
{
|
||||
vec4 res = texture(tex, uv);
|
||||
FragColor = res * color / 255.;
|
||||
FragColor = res * vec4(color) / 255.;
|
||||
}
|
||||
|
@ -2,7 +2,7 @@
|
||||
in vec4 color;
|
||||
out vec4 FragColor;
|
||||
|
||||
vec3 getLightFactor(float specMapValue);
|
||||
#stk_include "utils/getLightFactor.frag"
|
||||
|
||||
void main(void)
|
||||
{
|
||||
|
@ -6,6 +6,6 @@ vec3 SpecularBRDF(vec3 normal, vec3 eyedir, vec3 lightdir, vec3 color, float rou
|
||||
vec3 H = normalize(eyedir + lightdir);
|
||||
float NdotH = clamp(dot(normal, H), 0., 1.);
|
||||
float normalisationFactor = (exponentroughness + 2.) / 8.;
|
||||
vec3 FresnelSchlick = color + (1.0f - color) * pow(1.0f - clamp(dot(eyedir, H), 0., 1.), 5);
|
||||
vec3 FresnelSchlick = color + (1.0f - color) * pow(1.0f - clamp(dot(eyedir, H), 0., 1.), 5.);
|
||||
return max(pow(NdotH, exponentroughness) * FresnelSchlick * normalisationFactor, vec3(0.));
|
||||
}
|
||||
}
|
||||
|
@ -1,6 +1,6 @@
|
||||
vec4 getPosFromUVDepth(vec3 uvDepth, mat4 InverseProjectionMatrix)
|
||||
{
|
||||
vec4 pos = 2.0 * vec4(uvDepth, 1.0) - 1.0f;
|
||||
vec4 pos = 2.0 * vec4(uvDepth, 1.0) - 1.0;
|
||||
pos.xy *= vec2(InverseProjectionMatrix[0][0], InverseProjectionMatrix[1][1]);
|
||||
pos.zw = vec2(pos.z * InverseProjectionMatrix[2][2] + pos.w, pos.z * InverseProjectionMatrix[2][3] + pos.w);
|
||||
pos /= pos.w;
|
||||
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue
Block a user